CommonJS及AMD模块化编程

本文介绍了CommonJS和AMD两种主流的模块化编程规范。CommonJS适用于服务器端编程,支持同步加载;AMD则常用于浏览器环境,支持非同步加载。两者都能有效避免全局变量冲突,并提高代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模块化编程规范有 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值