Javascript模块化编程(一)AMD规范(标准化使用模块)
本系列的第一部分介绍了Javascript模块的基本编写,今天介绍了如何以标准化的方式使用模块。
(续)七。模块的规格首先考虑一下。为什么模块很重要?因为我们有模块,所以我们可以更方便地使用别人的代码,如果我们想要任何功能,可以加载任何模块。但是,这样做有一个前提,那就是每个人都必须用同样的方式写模块,否则,如果你有你自己的写作风格,我有我自己的写作风格,岂不是一团糟?考虑到没有针对Javascript模块的官方规范,这一点就更加重要了。目前比较流行的Javascript模块规范有两种:CommonJS和AMD。我主要介绍AMD,但我想从CommonJS开始。8.CommonJS 2009年,美国程序员Ryan Dahl创建了node.js项目,使用javascript语言进行服务器端编程。
这标志着“Javascript模块化编程”的正式诞生。因为说实话,在浏览器环境下,没有模块并不是特别大的问题,毕竟web程序的复杂度是有限的;然而,在服务器端,必须有一个模块来与操作系统和其他应用程序交互,否则根本不可能编程。node.js的模块化系统参照CommonJS规范实现。在CommonJS中,有一个全局方法require()用于加载模块。假设有一个数学模块math.js,它可以如下加载。复制的代码如下: var math=require(' math ');然后,可以调用模块提供的方法:复制代码如下: var math=require(' math ');math.add(2,3);//5由于本系列主要以浏览器编程为主,不涉及node.js,所以我们就不多介绍CommonJS了。这里我们只需要知道require()用于加载模块。9.浏览器环境有了服务器端模块之后,自然大家都想要一个客户端模块。此外,最好两者兼容,一个模块可以在服务器和浏览器上运行,无需修改。然而,由于一个主要的限制,CommonJS规范不适合浏览器环境。这是上一节的代码。如果在浏览器中运行,会有很大的问题。你能看见吗?复制的代码如下: var math=require(' math ');math.add(2,3);第二行,math.add(2,3),在第一行之后运行,要求(' math '),所以您必须等到加载math.js。也就是说,如果加载时间长,整个应用程序就会停在那里,以此类推。这对于服务器来说不是问题,因为所有模块都存储在本地硬盘中,可以同步加载,等待时间就是硬盘的读取时间。但是这对于浏览器来说是一个很大的问题,因为模块都放在服务器端,等待的时间取决于网络的速度,可能需要很长时间,浏览器处于“假死”状态。因此,浏览器端模块不能同步加载,只能异步加载。这就是AMD规范的背景。X. AMD AMD是‘异步模块定义’的缩写,意思是‘异步模块定义’。它异步加载模块,模块的加载不会影响其后面语句的运行。依赖于该模块的所有语句都在回调函数中定义,并且该回调函数在加载完成之前不会运行。AMD也使用了require()语句加载模块,但与CommonJS不同,它需要两个参数:复制代码如下: require([module],回调);第一个参数[module]是一个数组,其成员是要加载的模块。第二个参数回调是成功加载后的回调函数。如果把前面的代码改写成AMD形式,如下:复制的代码如下:Require (['math'],function (math) {math。Add (2,3);});Math.add()与数学模块加载不同步,因此浏览器不会暂停播放动画。所以很显然,AMD更适合浏览器环境。目前实现AMD规范的Javascript库有两个:require.js和curl.js在本系列的第三部分中,我们将通过引入require.js (End)来进一步解释AMD的用法以及如何将模块化编程付诸实践
版权声明:Javascript模块化编程(一)AMD规范(标准化使用模块)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。