模块化编程AMDCommonJS
为什么要模块化编程
如果JS也可以像类似python,Java使用import,引入我们想要的模块,想要什么模块,就加载什么模块,可以给前端编程带来更多的便捷,结构更加清晰明了。但是,这样做有一个前提,那就是大家必须以同样的方式编写模块。
目前,Javascript模块规范共有两种:CommonJS和AMD。
CommonJS
2009年,美国程序员Ryan Dahl创造了node.js项目,将javascript语言用于服务器端编程,标志"Javascript模块化编程"正式诞生。在浏览器环境下,没有模块也不是特别大的问题,毕竟网页程序的复杂性有限;但是在服务器端,一定要有模块,与操作系统和其他应用程序互动,否则根本没法编程。node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。
var math = require('math');math.add(2,3); // 5
但是,由于一个重大的局限,使得CommonJS规范不适用于浏览器环境。在第一行require('math')之后运行,因此必须等math.js加载完成。也就是说,如果加载时间很长,整个应用就会停在那里等。这对服务器端不是一个问题,因为所有的模块都存放在本地硬盘,可以同步加载完成,等待时间就是硬盘的读取时间。但是,对于浏览器,这却是一个大问题,因为模块都放在服务器端,等待时间取决于网速的快慢,可能要等很长时间,浏览器处于"假死"状态。
因此,浏览器端的模块,不能采用"同步加载"(synchronous),只能采用"异步加载"(asynchronous)。这就是AMD规范诞生的背景。
AMD
AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。
AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:
require([module], callback);
第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。如果将前面的代码改写成AMD形式,就是下面这样:
require(['math'], function (math) {math.add(2, 3); });
我们经常听到的一个Javascript库:require.js,它实现了AMD规范,我们可以方便的用来模块化管理。
转载于:https://www.cnblogs.com/zhouwenhong/p/3969587.html
模块化编程AMDCommonJS相关推荐
- (转)Javascript模块化编程(一):模块的写法
转自 ruanyifeng 系列目录: Javascript模块化编程(一):模块的写法 Javascript模块化编程(二):AMD规范 Javascript模块化编程(三):Require.js的 ...
- Javascript模块化编程(一):模块的写法
随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...
- keil c语言模块化编程,keil C模块化编程总结
昨晚看了下模块化编程的东西,把自己的工程整了整,可惜没成功.今早发神经似的起床敲代码,很快就发现了错误,原来是条件宏定义的头文件名忘改了,汗!!! 整理下模块化编程的要点,感谢以下三位UP主的帖子: ...
- Javascript模块化编程:AMD规范
一.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块. 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写 ...
- 嵌入式编程之模块化编程
原文出处:http://blog.csdn.net/wanruoqingkong/article/details/24286625 当你在一个项目小组做一个相对较复杂的工程时,意味着你不再独自单干.你 ...
- Python的模块化编程
我们首先以一个例子来介绍模块化编程的应用场景,有这样一个名为requirements.py的python3文件,其中两个函数的作用是分别以不同的顺序来打印一个字符串: def example1():a ...
- Javascript模块化编程require.js的用法
JS模块化工具requirejs教程(一):初识requirejs http://www.runoob.com/w3cnote/requirejs-tutorial-1.html JS模块化工具req ...
- C语言模块化编程的例子
以往写C语言程序都是一个文件里面写个几十.几百行,在练算法的时候还可以,现在搞开发需要模块化编程,所谓模块化编程,就是指一个程序包含多个源文件(.c 文件和 .h 文件),每个 .c 文件可以被称为一 ...
- Web前端进阶之JavaScript模块化编程知识
JavaScript是前端三要素之一,也是很多初学Web前端的人遭遇的第一条拦路虎.很多同学表示JavaScript涵盖的知识点太多太复杂.应用也是五花八门完全摸不着头脑.但只要我们一点一点由基础到进 ...
最新文章
- java ee webservice_javaEE调用webservice总结【利用WSDL】(转载)
- Unity Editor已停止工作
- POJ.3648.Wedding(2-SAT)
- 天锐绿盾解密_天锐绿盾携手衡阳规划设计院 实现信息系统安全管理
- ibm 小型计算机8408,IBM小型机 Power8 E850配置好不好
- 重学java基础第二十五课:数据类型
- React开发(126):ant design学习指南之form中的自定义校验validator
- 看懂云计算、虚拟化和容器,这一篇就够啦!
- 字谜 java_java - 2字的字谜 - 堆栈内存溢出
- bootstrapt学习指南_bootstrap-知识点梳理-学习入门篇
- leetcode1088
- ColorUI 微信小程序 商品详情页模板,仿微信胶囊
- android实现图片自动轮播代码,Android实现图片轮播切换实例代码
- 德语区国家的摄影测量与遥感
- (十七)关于安装智能家居3大方面你需要注意的
- Retinanet训练自己的数据(1):数据准备
- 新浪搜狐网易等那些老牌互联网公司 现在都怎样了?
- 在高并发的情况下,利用redis来处理库存超卖和遗留问题
- transition(过渡)与animation(动画)的区别
- PostgreSQL函数——时间函数