学习SeaJs整理的笔记

至于教程,官网和别人的博客写的太多了,看的都凌乱了,建议看官网。

要点

1、SeaJS会根据自身的URI来决定URL base,而SeaJS在加载其他模块的时候会根据这个URL base来计算路径。SeaJS会忽略掉seajs、seajs/x.y.z/seajs这两种目录;

2、在SeaJS中一个文件就是一个模块。define是SeaJS定义的一个全局函数,用来定义一个模块,所有代码都放在define(function(require,exports,module){});函数体里面。

3、require,exports,module 参数。require引入依赖模块,exports提供对外接口,module有几种属性和方法,分别是:

        31、module.id(模块id,就是全路径了,一般情况下(没有在 define 中手写 id 参数时),module.id 的值就是 module.uri,两者完全相同。)  

        32、module.exports(对外接口,{}格式,exports 仅仅是 module.exports 的一个引用。)

        33、module.dependencies(数组,当前模块依赖的模块)

4、

<script src="assets/scripts/seajs/sea.js" id="seajsnode" data-main="application/application"></script>

	<!-- 
	Or
	<script src="assets/scripts/seajs/sea.js" id="seajsnode"></script>
	<script>
		seajs.use("application/application");
	</script>

	-->

 data-main为启动模块。

5、一个空对象,可用来判定当前页面是否有 CMD 模块加载器:

if (typeof define === "function" && define.cmd) {
  // 有 Sea.js 等 CMD 模块加载器存在
}
 6、require.async 方法用来在模块内部异步加载模块,require 是同步往下执行,require.async 则是异步回调执行。require.async 一般用来加载可延迟异步加载的模块。
7、require.resolve require.resolve(id)

使用模块系统内部的路径解析机制来解析并返回模块路径。该函数不会加载模块,只返回解析后的绝对路径。

console.log(require.resolve('./b'));
  // ==> http://example.com/path/to/b.js

这可以用来获取模块路径,一般用在插件环境或需动态拼接模块路径的场景下。

8、

相关推荐