最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
使用seajs怎么開(kāi)發(fā)一個(gè)JavaScript模塊

使用seajs怎么開(kāi)發(fā)一個(gè)JavaScript模塊?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開(kāi)發(fā)人員和項(xiàng)目經(jīng)理組成的專(zhuān)業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺(jué)設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開(kāi)發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)易于使用并且具有良好的響應(yīng)性。

首先看看seajs是怎么進(jìn)行模塊開(kāi)發(fā)的。使用seajs基本上只有一個(gè)函數(shù)“define”

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

使用define函數(shù)來(lái)進(jìn)行定義一個(gè)模塊,根據(jù) CMD (Common Module Definition)模塊定義規(guī)范。一個(gè)文件就是一個(gè)模塊。所以一個(gè)js文件中只有一個(gè)define,即一個(gè)文件是一個(gè)模塊,SeaJS中模塊的概念有點(diǎn)類(lèi)似于面向?qū)ο笾械念?lèi)——模塊可以擁有數(shù)據(jù)和方法,數(shù)據(jù)和方法可以定義為公共或私有,公共數(shù)據(jù)和方法可以供別的模塊調(diào)用。

官方實(shí)例中,define只傳入一個(gè)參數(shù): 一個(gè)工廠函數(shù)

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

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

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

define可以接收的參數(shù)分別是模塊ID,依賴(lài)模塊數(shù)組及工廠函數(shù);

如果只有一個(gè)參數(shù),則賦值給factory。

如果有兩個(gè)參數(shù),第二個(gè)賦值給factory;第一個(gè)如果是array則賦值給deps,否則賦值給id。

如果有三個(gè)參數(shù),則分別賦值給id,deps和factory。

根據(jù)官方實(shí)例,建議還是根據(jù)官方的來(lái)就傳遞一個(gè)參數(shù),即只有factory參數(shù),這樣的話模塊id默認(rèn)為js文件路徑。

在來(lái)看看工廠函數(shù)的參數(shù):

require, exports, module

  • require——模塊加載函數(shù),用于記載依賴(lài)模塊。通過(guò)這個(gè)參數(shù)來(lái)進(jìn)行對(duì)其他模塊的加載。

  • exports——接口點(diǎn),將數(shù)據(jù)或方法定義在其上則將其暴露給外部調(diào)用。通過(guò)這個(gè)參數(shù),來(lái)將這個(gè)模塊的方法進(jìn)行暴露

  • module——模塊的元數(shù)據(jù)。其是一個(gè)對(duì)象,有屬性:

    • module.id——模塊的ID。

    • module.dependencies——一個(gè)數(shù)組,存儲(chǔ)了此模塊依賴(lài)的所有模塊的ID列表。

    • module.exports——與exports指向同一個(gè)對(duì)象。

使用factory的參數(shù)的使用:

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

}

使用require對(duì)象來(lái)進(jìn)行加載模塊,其實(shí)使用正則表達(dá)式進(jìn)行驗(yàn)證加載的,所以其參數(shù)必須是特定的字符串,不能是表達(dá)式。

seajs會(huì)自動(dòng)在require的參數(shù)中加入".js"來(lái)進(jìn)行加載,即不需要寫(xiě)上后綴名,但是在某些情況下,seajs不會(huì)為其添加“.js”:

1.載入css:  

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

2.路徑中含有“?”: 

require(http://example/js/a.json?cb=func);

3.路徑以“#”結(jié)尾:

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

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

使用return:

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

直接返回json對(duì)象:

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

頁(yè)面中調(diào)用seajs

前面說(shuō)了seajs用來(lái)解決模塊開(kāi)發(fā),和繁瑣的文件依賴(lài)問(wèn)題,所以所有的文件依賴(lài)都是通過(guò)require對(duì)象進(jìn)行加載,或者可以使用require.async(“./a”)來(lái)進(jìn)行異步加載,即當(dāng)使用到的時(shí)候才進(jìn)行加載,

注:無(wú)論是require()還是require.async()都可以有第二個(gè)參數(shù)為回調(diào)函數(shù),當(dāng)文件加載成功時(shí)調(diào)用:

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

有了這個(gè)加載依賴(lài)的方式,我們無(wú)需再頁(yè)面上書(shū)寫(xiě)大量的標(biāo)簽,而僅僅使用一個(gè)

即可,其中data-main="./init" 為入口模塊,表示加載這個(gè)模塊,在進(jìn)行迭代加載其所依賴(lài)的模塊,使用這個(gè)屬性可以省略seajs.use。這個(gè)后面說(shuō)。

使用seajs.config進(jìn)行全局配置:

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

這是對(duì)seajs進(jìn)行全局配置,

base表示基址尋址時(shí)的基址路徑

alias可以對(duì)較長(zhǎng)的常用路徑設(shè)置縮寫(xiě)。

charset表示下載js時(shí)script標(biāo)簽的charset屬性。

timeout表示下載文件的最大時(shí)長(zhǎng),以毫秒為單位。

debug表示是否工作在調(diào)試模式下。

使用seajs.use 載入入口模塊,相當(dāng)于java的main函數(shù),

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

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


//mian.js

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

關(guān)于使用seajs怎么開(kāi)發(fā)一個(gè)JavaScript模塊問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


文章名稱(chēng):使用seajs怎么開(kāi)發(fā)一個(gè)JavaScript模塊
文章轉(zhuǎn)載:http://fisionsoft.com.cn/article/jghodd.html