- 1:引入包文件 sea.js
- 2: 启动seajs.use('./main') 设置启动入口模块 参数可以不需要.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: 启动seajs 并且指定入口模块 -->
<script type="text/javascript">
seajs.use('./one');
</script>
</body>
</html>
- 3: 声明一个模块:模块在define();内部包裹
- 4: 需要向外暴露值,通过module.exports来返回
define(function(require,exports,module){
// 如果这个模块需要别的模块的返回值
var aaa =require('模块路径ID');//返回对方模块内部的module.exports
module.exports = 返回值;
});
- 在模块内部,声明的变量,都是模块的作用域
+ 在CMD中,一个模块就是一个文件,外部无法访问
+ 如果需要访问,通过module.exports 向外暴露
define参数的三种方式
- 字符串 define('123')
define('我是字符串');
- 对象define({name:'aaa'})
define({name:'gaga',age:19});
- 函数define(function(require,exports,module){})
define(function(require,exports,module){
// module.exports = {nane:'jack'}
return 'abcl';
})
exports和module.exports的小问题
-
模块被加载的时期,这两个对象都指向一块内存,该内存初始值是一个空对象
-
不管任意改变哪个对象的内存指向 (对象=值),最终仍然返回module.exports对象
-
如果module.exports 和exports让你头晕脑胀,建议使用module.exports
-
框架的使用尽量遵守其规则,基于define内部解析对象,根据参数的数据来,顺序不要改变
-
module.exports 用来赋值并暴露,exports用来给暴露的对象挂载属性,就是一个简写
Use的2种方法
- use函数是一个异步函数
- 异步:不阻塞后续代码执行
- 同步:当前函数不执行完毕,下一行代码无法执行
seajs.use('./a',function(a){
code....
})
// 着重掌握
seajs.use(['./a','./b'],function(a,b){
code..
})
- seajs.use 第二个参数是一个函数,内部参数与传入的加载模块的返回值的顺序一致
网友评论