日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

我的模块加载系统 v17的入门教程2

發布時間:2024/4/14 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我的模块加载系统 v17的入门教程2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一節,我們聊到相對于當前目錄用“./”,相對于父目錄用“../”,相對于父父目錄用“http://www.cnblogs.com/”,如果是遠程文件直接用URL。其實模塊標識還有一種是相對于根目錄,這特指是mass.js所在的目錄。當然你可以通過配置手段修改根目錄,但不建議這樣干。比如aaa.js與mass.js是會于同一目錄,用么沿著第一節的例子:

<!DOCTYPE HTML> <html><head><title>AMD</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script src="mass.js"></script><script>//相當于$.require("./aaa", fn),只有模塊與mass.js是位于同一模塊才能這樣干$.require("aaa", function(a,b){alert(a+b)})</script></head><body><h2>歡迎加入mass Framework團隊!</h2> </body> </html>

別名機制

比如一個項目,a頁面引用N個JS文件,b頁面要引用N個js文件,那么當我們用$.require調用它們可能很麻煩,不斷地通過"./","../"來定位到目標JS文件中。這時我們可能用一個專門的JS文件對這些模塊進行別名,方便引用。

比如我們在第一節提到aaa.js, bbb.js, ccc.js, ddd.js,我們用一個modules保存它們的別名.

//$.core.base 為mass.js的目錄 $.config({alias:{$aaa: $.core.base + "aaa.js",$bbb: $.core.base + "bbb.js",$ccc: $.core.base + "ccc.js",$ddd: $.core.base + "ddd/ddd.js"} })

然后在頁面上這樣引用ddd.js模塊

<!DOCTYPE HTML> <html><head><title>AMD</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script src="mass.js"></script><script src="modules.js"></script><script>//相當于$.require("./aaa", fn),只有模塊與mass.js是位于同一模塊才能這樣干$.require("$ddd", function(d){alert(d)})</script></head><body><h2>歡迎加入mass Framework團隊!</h2> </body> </html>

相對應的,這些JS模塊也可以改為

//aaa.js 沒有依賴不用改 define("aaa",function(){return 1 })//bbb.js 沒有依賴不用改 define("bbb",function(){return 2 }); //ccc.js define("ccc",["$aaa"],function(a){return 10+a })//ddd/ddd.js define("ddd",["$ddd"], function(c){return c+100 });

那么它就會正確彈出111!

萬一有一天,我們把ddd.js移到其他目錄,如變成http://xdsfsd/sadfs/ddd.js,那么我們只需要改modules目錄就行了!不用改$.require,也不用改ddd的依賴列表!

//$.core.base 為mass.js的目錄 $.config({alias:{$aaa: $.core.base + "aaa.js",$bbb: $.core.base + "bbb.js",$ccc: $.core.base + "ccc.js",$ddd: "http://xdsfsd/sadfs/ddd.js"} })

好了,我們再來看看jQuery與mass.js的使用。jQuery雖說是加了幾行支持AMD,其實非常雞肋!不過jQuery的多庫共存做得很不錯!我們只需要在外面包一層就能用了。到jQuery官網下載jQuery源碼,無論是壓縮版還是注釋版。新建一個jquery.js文件,與mass.js同一目錄,內容如下:

define("jquery", function(){//*********jquery源碼*********return jQuery.noConflict(true); }) <!DOCTYPE HTML> <html><head><title>AMD</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script src="mass.js" ></script><script>$.require("jquery", function(jQuery){$.log(jQuery.fn.jquery);//這是jquery$.log($.mass); //這是mass.js})setTimeout(function(){$.log($)//這也是mass.js,jquery沒有污染都外邊的},1000)</script></head><body></body> </html>

我們打開firebug可以看到以下日志:

jquery插件的使用,也是外包一層

(function($)$.fn.overlabel = function() {this.each(function(index) {var label = $(this); var field;var id = this.htmlFor || label.attr('for');if (id && (field = document.getElementById(id))) {var control = $(field);label.addClass("overlabel-apply");if (field.value !== '') {label.css("text-indent", "-1000px");}control.focus(function () {label.css("text-indent", "-1000px");}).blur(function () {if (this.value === '') {label.css("text-indent", "0px");}});label.click(function() {var label = $(this); var field;var id = this.htmlFor || label.attr('for');if (id && (field = document.getElementById(id))) {field.focus();}});}}); }; })(jQuery)

改造為

define("jquery_overlabel",["./jquery"], function(jQuery){(function($){//************})(jQuery); })

本節完!

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的我的模块加载系统 v17的入门教程2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。