Require的用法及短语 require的用法( 三 )


  • id:字符串,模块名称(可选)
  • dependencies: 是我们要载入的依赖模块(可选) , 使用相对路径 。,注意是数组格式
  • factory: 工厂方法,返回一个模块函数

Require的用法及短语 require的用法



如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中 。

Require的用法及短语 require的用法



注意:带 id 和 dependencies 参数的 define 用法不属于 CMD 规范,而属于 Modules/Transport 规范 。
CMD与AMD区别AMD和CMD最大的区别是对依赖模块的执行时机处理不同,而不是加载的时机或者方式不同 , 二者皆为异步加载模块 。
AMD依赖前置,js可以方便知道依赖模块是谁,立即加载;
而CMD就近依赖 , 需要使用把模块变为字符串解析一遍才知道依赖了那些模块,这也是很多人诟病CMD的一点,牺牲性能来带来开发的便利性 , 实际上解析模块用的时间短到可以忽略 。
现阶段的标准
Require的用法及短语 require的用法



ES6标准发布后,module成为标准 , 标准使用是以export指令导出接口,以import引入模块 , 但是在我们一贯的node模块中,我们依然采用的是CommonJS规范,使用require引入模块 , 使用module.exports导出接口 。
export导出模块export语法声明用于导出函数、对象、指定文件(或模块)的原始值 。
注意:在node中使用的是exports,不要混淆了
export有两种模块导出方式:命名式导出(名称导出)和默认导出(定义式导出),命名式导出每个模块可以多个,而默认导出每个模块仅一个 。

Require的用法及短语 require的用法



  • name1… nameN-导出的“标识符” 。导出后,可以通过这个“标识符”在另一个模块中使用import引用
  • default-设置模块的默认导出 。设置后import不通过“标识符”而直接引用默认导入
  • -继承模块并导出继承模块所有的方法和属性
  • as-重命名导出“标识符”
  • from-从已经存在的模块、脚本文件…导出
命名式导出
模块可以通过export前缀关键词声明导出对象,导出对象可以是多个 。这些导出对象用名称进行区分,称之为命名式导出 。

Require的用法及短语 require的用法



我们可以使用*和from关键字来实现的模块的继承:

Require的用法及短语 require的用法



模块导出时,可以指定模块的导出成员 。导出成员可以认为是类中的公有对象,而非导出成员可以认为是类中的私有对象:

Require的用法及短语 require的用法



模块导出时 , 我们可以使用as关键字对导出成员进行重命名:

Require的用法及短语 require的用法



注意 , 下面的语法有严重错误的情况:

Require的用法及短语 require的用法



export在导出接口的时候,必须与模块内部的变量具有一一对应的关系 。直接导出1没有任何意义 , 也不可能在import的时候有一个变量与之对应
export a 虽然看上去成立 , 但是a的值是一个数字,根本无法完成解构,因此必须写成export {a}的形式 。即使a被赋值为一个function,也是不允许的 。而且,大部分风格都建议,模块中最好在末尾用一个export导出所有的接口,例如:

推荐阅读