JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处 ...
amdjs 的API
https://github.com/amdjs/amdjs-api/wiki 也等价于
define(function(){ return{ method1: function(){}, method2: function(){} }});
或者:
define( function( require ){ var m1 = require( 'module1' ), m2 = require( 'module2' ); ...});
在加载 foo 与 bar 两个模块之后执行回调
函数实现具体过程。 define 和 require 这两个定义模块,调用模块的方法合称为AMD模式,定义模块清晰,不会污染全局变量,清楚的显示依赖关系。AMD模式可以用于
浏览器环境并且允许非同步加载模块,也可以按需动态加载模块。 通过字符串定义模板模块:
define('this is {{data}}.');
factory 为函数的时候,表示模块的构造方法,执行构造方法便可以得到模块向外提供的
接口。
define( function(require, exports, module) { // 模块代码});
define( id?, deps?, factory ); 其与 AMD 规范用法不同。 require.async( id, callback? ); require.resolve( id ) 当然也可以使用 return 直接向外提供接口。
define(function( require, exports ){ return{ foo : 'bar', // 向外提供的属性 do : function(){} // 向外提供的方法 }});
也可以简化为直接对象字面量的形式:
define({ foo : 'bar', // 向外提供的属性 do : function(){} // 向外提供的方法});
与nodeJS中一样需要注意的是,一下方式是错误的:
define(function( require, exports ){ exports = { foo : 'bar', // 向外提供的属性 do : function(){} // 向外提供的方法 }});
需要这么做
define(function( require, exports, module ){ module.exports = { foo : 'bar', // 向外提供的属性 do : function(){} // 向外提供的方法 }});
传入的对象引用可以添加属性,一旦赋值一个新的对象,那么值钱传递进来的对象引用就会失效了。开始之初,exports 是作为 module.exports 的一个引用存在,一切行为只有在这个引用上 factory 才得以正常运行,赋值新的对象后就会断开引用,exports就只是一个新的对象引用,对于factory来说毫无意义,就会出错。
seaJS
官网 http://seajs.org/docs/
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:JavaSript模块规范
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。