亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

通過seajs實現JavaScript的模塊開發及按模塊加載

2024-05-06 16:51:55
字體:
來源:轉載
供稿:網友

seajs實現了JavaScript 的 模塊開發及按模塊加載。用來解決繁瑣的js命名沖突,文件依賴等問題,其主要目的是令JavaScript開發模塊化并可以輕松愉悅進行加載。

首先看看seajs是怎么進行模塊開發的。使用seajs基本上只有一個函數“define”

fn.define= function(id,deps, factory) {//code of function…}

使用define函數來進行定義一個模塊,根據 CMD (Common Module Definition)模塊定義規范。一個文件就是一個模塊。所以一個js文件中只有一個define,即一個文件是一個模塊,SeaJS中模塊的概念有點類似于面向對象中的類——模塊可以擁有數據和方法,數據和方法可以定義為公共或私有,公共數據和方法可以供別的模塊調用。

官方實例中,define只傳入一個參數: 一個工廠函數

define(function(require,exports, module) {//code of the module...});

在看參數之前,我們先看看define是如何處理參數的:

fn.define = function(id, deps, factory)

define可以接收的參數分別是模塊ID,依賴模塊數組及工廠函數;

如果只有一個參數,則賦值給factory。

如果有兩個參數,第二個賦值給factory;第一個如果是array則賦值給deps,否則賦值給id。

如果有三個參數,則分別賦值給id,deps和factory。

根據官方實例,建議還是根據官方的來就傳遞一個參數,即只有factory參數,這樣的話模塊id默認為js文件路徑。

在來看看工廠函數的參數:

require, exports, module

  • require——模塊加載函數,用于記載依賴模塊。通過這個參數來進行對其他模塊的加載。
  • exports——接口點,將數據或方法定義在其上則將其暴露給外部調用。通過這個參數,來將這個模塊的方法進行暴露
  • module——模塊的元數據。其是一個對象,有屬性:
    • module.id——模塊的ID。
    • module.dependencies——一個數組,存儲了此模塊依賴的所有模塊的ID列表。
    • module.exports——與exports指向同一個對象。

使用factory的參數的使用:

define(function(require,exports, module) {var a = require('./a');//引入a模塊 exports.fun2= function(){alert("fun2");a.dosomething();  } }

使用require對象來進行加載模塊,其實使用正則表達式進行驗證加載的,所以其參數必須是特定的字符串,不能是表達式。

seajs會自動在require的參數中加入".js"來進行加載,即不需要寫上后綴名,但是在某些情況下,seajs不會為其添加“.js”:

1.載入css:    

require("./module1-style.css");

2.路徑中含有“?”: 

require(<a href="http://example/js/a.json?b=func" rel="external nofollow" >http://example/js/a.json?cb=func</a>);

3.路徑以“#”結尾:

require(http://example/js/a.json#);

使用exports來向外部暴露方法,或者屬性。暴露屬性有幾種方式,如上面中的例子是一種方式,另外還有:

使用return:

define(function(require){var data1 = 1; //私有數據var func1 = function() { //私有方法returna.run(data1);}//暴露return{data2: 2,func2:function() {return'hello';}}; });

直接返回json對象:

define({data: 1,func:function() {return'hello';}});

頁面中調用seajs

前面說了seajs用來解決模塊開發,和繁瑣的文件依賴問題,所以所有的文件依賴都是通過require對象進行加載,或者可以使用require.async(“./a”)來進行異步加載,即當使用到的時候才進行加載,

注:無論是require()還是require.async()都可以有第二個參數為回調函數,當文件加載成功時調用:

require.async('/path/to/module/file',function(m) {//code of callback...});

有了這個加載依賴的方式,我們無需再頁面上書寫大量的<script ></script>標簽,而僅僅使用一個

<script src="./sea.js" data-main="./init"></script>

即可,其中data-main="./init" 為入口模塊,表示加載這個模塊,在進行迭代加載其所依賴的模塊,使用這個屬性可以省略seajs.use。這個后面說。

使用seajs.config進行全局配置:

seajs.config({base:'path/to/jslib/',alias: {'app':'path/to/app/'},charset:'utf-8',timeout: 20000,debug:false});

這是對seajs進行全局配置,

base表示基址尋址時的基址路徑

alias可以對較長的常用路徑設置縮寫。

charset表示下載js時script標簽的charset屬性。

timeout表示下載文件的最大時長,以毫秒為單位。

debug表示是否工作在調試模式下。

使用seajs.use 載入入口模塊,相當于java的main函數,

//單模塊模式seajs.use('./a');//回調模式seajs.use('./a',function(a){a.dosomething();});//多模塊模式seajs.use(['./a','./b'],function(a,b) {a.dosomething();b.dosomething();});

下面可以看其官方給的simple例子中的頁面怎么寫的,基本上就明白了sea.js 是怎么用的了:

<script src="../sea-modules/seajs/seajs/2.2.0/sea.js"></script><script>// Set configurationseajs.config({base: "../sea-modules/",alias: {"jquery": "jquery/jquery/1.10.1/jquery.js"}});// For developmentif (location.href.indexOf("?dev") > 0) {seajs.use("../static/hello/src/main");}// For productionelse {seajs.use("examples/hello/1.0.0/main");}</script>

//mian.js

//hello/mian.jsdefine(function(require) {var Spinning = require('./spinning');var s = new Spinning('#container');s.render();});

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性xxxxx极品娇小| 久久综合久中文字幕青草| 久久久久久噜噜噜久久久精品| 91sao在线观看国产| 亚洲日韩欧美视频| 亚洲成人激情视频| 亚洲精品免费一区二区三区| 日韩电影在线观看中文字幕| 久久福利视频导航| 国产精品久久久久aaaa九色| 在线观看日韩欧美| 91av在线免费观看视频| 成人精品一区二区三区电影黑人| 国产主播欧美精品| 成人国产精品一区| 欧美激情精品久久久久久免费印度| 亚洲一区二区三区在线视频| 久久综合亚洲社区| 日韩中文字幕亚洲| 最近2019中文字幕大全第二页| **欧美日韩vr在线| 亚洲第一av网站| 国产乱人伦真实精品视频| 亚洲日本欧美日韩高观看| 国产一区二区久久精品| 激情久久av一区av二区av三区| 国产精品视频网| 久久久久久香蕉网| 国内精品久久久久久久| 日本中文字幕久久看| 国产成人在线精品| 亚洲电影免费在线观看| 欧美野外猛男的大粗鳮| 久久久亚洲欧洲日产国码aⅴ| 日韩免费高清在线观看| 亚洲国产高清高潮精品美女| 91精品国产91久久久久久吃药| 91久久精品久久国产性色也91| 国产又爽又黄的激情精品视频| 国产精品免费一区豆花| 国产97在线视频| 国产成人免费91av在线| 人妖精品videosex性欧美| 欧美一级淫片videoshd| 日韩视频亚洲视频| 国产视频久久网| 国产精品极品美女粉嫩高清在线| 国产成人精品最新| 欧美极品欧美精品欧美视频| 国产99视频精品免视看7| 欧美日韩福利视频| 日韩国产高清污视频在线观看| 日韩欧美主播在线| 久久精品视频导航| 亚洲精品自拍视频| 精品国产一区二区三区久久久狼| 日韩精品免费在线播放| 国产在线观看精品一区二区三区| 夜夜躁日日躁狠狠久久88av| 亚洲欧美三级在线| 欧美国产日韩中文字幕在线| 国产精品欧美日韩一区二区| 亚洲a在线观看| 日韩精品www| 久久久久久网站| 成人中心免费视频| 川上优av一区二区线观看| 亚洲无线码在线一区观看| 国产精品高精视频免费| 亚洲欧洲在线观看| 亚洲人av在线影院| 中文字幕久久久| 在线播放国产一区二区三区| 国产丝袜一区视频在线观看| 国产精品激情自拍| 欧美成人激情在线| 日韩中文字幕av| 97国产精品人人爽人人做| 亲爱的老师9免费观看全集电视剧| 久久精品男人天堂| 91国产视频在线| 国产精品久久久久久网站| 久久久久久美女| 国产激情久久久| 黄色一区二区在线| 亚洲精品二三区| 日韩中文字幕精品视频| 欧美xxxx18性欧美| 热久久99这里有精品| 91综合免费在线| 日本人成精品视频在线| 欧美午夜宅男影院在线观看| 97成人精品视频在线观看| 综合欧美国产视频二区| 国产精品久久久久久婷婷天堂| 亚洲国产天堂久久综合网| 91网站在线免费观看| 久久久999成人| 国产欧美日韩91| 成人天堂噜噜噜| 久久久精品影院| 日本91av在线播放| 亚洲free性xxxx护士白浆| 久久九九全国免费精品观看| 午夜精品久久久久久久白皮肤| 欧美视频在线观看免费网址| 欧洲成人在线观看| 欧美大胆在线视频| 欧美另类老肥妇| 在线精品视频视频中文字幕| 亚洲色图25p| 国产精品久久久久久久7电影| 日韩精品高清视频| 亚洲18私人小影院| 久久久久久高潮国产精品视| 日韩中文在线观看| 亚洲欧美成人网| 欧美高清videos高潮hd| 亚洲电影免费观看高清| 欧美亚洲成人免费| 午夜精品久久久久久久久久久久| 亚洲黄色免费三级| 欧美黑人一级爽快片淫片高清| 欧美成人精品影院| 国产精品久久精品| 国产成人a亚洲精品| 精品国产一区二区三区久久久| 国产精品成人一区二区三区吃奶| 日韩成人中文字幕| 亚洲aⅴ日韩av电影在线观看| 国产欧美日韩免费看aⅴ视频| 国产啪精品视频网站| 欧美激情精品久久久| 国产福利视频一区| 亚洲欧美精品伊人久久| 日韩av在线导航| 欧美日韩在线视频一区| 国产拍精品一二三| 亚洲激情在线视频| 日本精品性网站在线观看| 最新国产成人av网站网址麻豆| 欲色天天网综合久久| 日韩av综合网| 亚洲欧美国产精品专区久久| 亚洲欧美综合区自拍另类| 久久久免费观看| 日韩av三级在线观看| 欧美片一区二区三区| 欧美日韩中国免费专区在线看| 中日韩美女免费视频网址在线观看| 欧美日韩一区二区在线| 欧美日韩亚洲精品一区二区三区| 午夜精品一区二区三区在线| 日韩av在线高清| 97精品久久久中文字幕免费| 国产精品高潮呻吟视频| 国产成人福利视频| 91av免费观看91av精品在线| 久久精品国产欧美激情| 午夜精品三级视频福利| 欧美丝袜第一区| 国产精品免费观看在线| 一级做a爰片久久毛片美女图片| 播播国产欧美激情|