- 1:引入包文件 sea.js
- 2: 啟動(dòng)seajs.use('./main') 設(shè)置啟動(dòng)入口模塊 參數(shù)可以不需要.js后綴
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>06_seajs基本使用</title>
</head>
<body>
<!-- 1:引包 -->
<script src="../seajs-3.0.0/dist/sea.js" charset="utf-8"></script>
<!-- <script src="./one.js" charset="utf-8"></script>
<script src="./two.js" charset="utf-8"></script> 不適用seajs加載的方式蛆挫,需要注意文件順序-->
<!-- 2: 啟動(dòng)seajs 并且指定入口模塊 -->
<script type="text/javascript">
seajs.use('./one');
</script>
</body>
</html>
- 3: 聲明一個(gè)模塊:模塊在define();內(nèi)部包裹
- 4: 需要向外暴露值铺然,通過(guò)module.exports來(lái)返回
define(function(require,exports,module){
// 如果這個(gè)模塊需要?jiǎng)e的模塊的返回值
var aaa =require('模塊路徑ID');//返回對(duì)方模塊內(nèi)部的module.exports
module.exports = 返回值;
});
- 在模塊內(nèi)部挨队,聲明的變量百拓,都是模塊的作用域
+ 在CMD中晶伦,一個(gè)模塊就是一個(gè)文件,外部無(wú)法訪問(wèn)
+ 如果需要訪問(wèn)泥从,通過(guò)module.exports 向外暴露
define參數(shù)的三種方式
- 字符串 define('123')
define('我是字符串');
- 對(duì)象define({name:'aaa'})
define({name:'gaga',age:19});
- 函數(shù)define(function(require,exports,module){})
define(function(require,exports,module){
// module.exports = {nane:'jack'}
return 'abcl';
})
exports和module.exports的小問(wèn)題
模塊被加載的時(shí)期媚狰,這兩個(gè)對(duì)象都指向一塊內(nèi)存淫僻,該內(nèi)存初始值是一個(gè)空對(duì)象
不管任意改變哪個(gè)對(duì)象的內(nèi)存指向 (對(duì)象=值),最終仍然返回module.exports對(duì)象
如果module.exports 和exports讓你頭暈?zāi)X脹壶唤,建議使用module.exports
框架的使用盡量遵守其規(guī)則,基于define內(nèi)部解析對(duì)象雳灵,根據(jù)參數(shù)的數(shù)據(jù)來(lái),順序不要改變
module.exports 用來(lái)賦值并暴露闸盔,exports用來(lái)給暴露的對(duì)象掛載屬性悯辙,就是一個(gè)簡(jiǎn)寫(xiě)
Use的2種方法
- use函數(shù)是一個(gè)異步函數(shù)
- 異步:不阻塞后續(xù)代碼執(zhí)行
- 同步:當(dāng)前函數(shù)不執(zhí)行完畢,下一行代碼無(wú)法執(zhí)行
seajs.use('./a',function(a){
code....
})
// 著重掌握
seajs.use(['./a','./b'],function(a,b){
code..
})
- seajs.use 第二個(gè)參數(shù)是一個(gè)函數(shù)蕾殴,內(nèi)部參數(shù)與傳入的加載模塊的返回值的順序一致