CommonJS及AMD模块化编程

来源:互联网 发布:tensorflow 量化流程 编辑:程序博客网 时间:2024/05/17 16:02
模块化编程规范有 CommonJS、AMD(这两者常用)以及 ES Harmony(理想化规范)
目的:
1、高度解耦一些代码块,提高代码的复用性
2、减少JS全局命名变量的冲突,避免污染全局命名空间。


一、CommonJS 同步模块加载
API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。在兼容CommonJS的系统中,你可以实用JavaScript程序开发:
服务器端JavaScript应用程序
命令行工具
图形界面应用程序
混合应用程序(如,Titanium或Adobe AIR)


CommonJS是一种规范,是一个不断发展的规范。NodeJS是这种规范的实现。
CommonJS模块的特点如下:
1、所有代码都运行在模块作用域,不会污染全局作用域。
2、模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
3、模块加载的顺序,按照其在代码中出现的顺序。
备注:根据CommonJS的特点,可以断定立即执行函数是CommonJS的一种

立即执行函数,代码示例如下所示:
(function(value){//创建了一个命名空间,防止与全局变量冲突var name="xyong";console.log("姓名为:"+name+",传入的值为:"+value);})(12345);

二、AMD 异步模块加载
AMD规范则是非同步加载模块,允许指定回调函数。由于Node.js主要用于服务器编程,模块文件一般都已经存在于本地硬盘,所以加载起来比较快,不用考虑非同步加载的方式,所以CommonJS规范比较适用。但是,如果是浏览器环境,要从服务器端加载模块,这时就必须采用非同步模式,因此浏览器端一般采用AMD规范。
require.js和curl.js是AMD的实现。



推荐文章:http://javascript.ruanyifeng.com/nodejs/module.html
阅读全文
0 0
原创粉丝点击