2019獨角獸企業重金招聘Python工程師標準>>>
一直好奇像node.js,require.js的模塊化是怎么做的,在看了《你不知道的javascript》后,對js的模塊化有了一些簡單的了解。這本書真的還不錯。
書里講述了js的模塊化的原理 和 ?現代js實現模塊化的簡單的寫法,下面直接上代碼:
<script type="text/javascript">
?? ??? ?<!-- javascript 中的模塊化 -->
?? ??? ?<!-- 創建定義模塊函數 -->?? ?
?? ??? ?var Module = (function(){
?? ??? ??? ?var modules = {};
?? ??? ??? ?//創建模塊
?? ??? ??? ?function define(name,deps,fun){//name:模塊名稱,deps:依賴模塊,func: 模塊方法
?? ??? ??? ??? ?for (var i = 0; i < deps.length; i++) {
?? ??? ??? ??? ??? ?deps[i] = modules[deps[i]];?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?modules[name] = fun.apply(fun,deps); //這里依賴注入的關鍵,把依賴的模塊傳給fun
?? ??? ??? ?}
?? ??? ??? ?//模塊的get()
?? ??? ??? ?function get(name){
?? ??? ??? ??? ?return modules[name];
?? ??? ??? ?}
?? ??? ??? ?return {
?? ??? ??? ??? ?define:define,
?? ??? ??? ??? ?get:get
?? ??? ??? ?};
?? ??? ?})();
?? ??? ?//定義一個行為模塊(喝酒)
?? ??? ?Module.define("drunk",[],function(){
?? ??? ??? ?function drunking(){
?? ??? ??? ??? ?console.log("can drunk !");
?? ??? ??? ?}
?? ??? ??? ?return {
?? ??? ??? ??? ?drunking:drunking
?? ??? ??? ?};
?? ??? ?});
?? ??? ?//定義一個模塊,創建學生類
?? ??? ?Module.define("student",["drunk"],function(drunk){
?? ??? ??? ?function CreateStudent(name,age,isDrunk){
?? ??? ??? ??? ?var obj = new Object();
?? ??? ??? ??? ?obj.name = name;
?? ??? ??? ??? ?obj.age = age;
?? ??? ??? ??? ?obj.eat = function(){
?? ??? ??? ??? ??? ?console.log("Everyone can eat !")
?? ??? ??? ??? ?};
?? ??? ??? ??? ?if (isDrunk) {
?? ??? ??? ??? ??? ?obj.du = drunk.drunking;
?? ??? ??? ??? ?} else {
?? ??? ??? ??? ??? ?obj.du = function(){
?? ??? ??? ??? ??? ??? ?console.log("can not drunk !");
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ??? ?return obj;
?? ??? ??? ?}
?? ??? ??? ?return {
?? ??? ??? ??? ?createStudent:CreateStudent
?? ??? ??? ?};
?? ??? ?});
????? ? //測試
?? ??? ?var s1 = Module.get("student").createStudent("lee",12);
?? ??? ?s1.eat();
?? ??? ?s1.du();