【模块化】 RequireJS入门教程总结与推荐
2016-01-04 22:22
232 查看
之所以学习RequireJS,肯定对 模块化有一定的理解。这里有几篇学习 RequireJS的文章,推荐给大家去学习。
Javascript模块化编程(一):模块的写法
Javascript模块化编程(二):AMD规范
Javascript模块化编程(三):require.js的用法 【require的使用,paths,baseUrl,shim 以及 deps,exports】
~~~~~~~~~~~~~上面这三篇是阮一峰老师的文章,【简单易懂】~~~~~~~~~~~~~~~~
但是对 requirejs 讲的内容,感觉少了点东西
快速理解RequireJs 【看后面作者遇到的坑,以及 shim 中的 init 方法】
总结:【只需要了解几个属性就可以用起来啦】【源码】github 源码
参数1:依赖的模块,数组形式,
参数2:回调函数,参数:跟每个 依赖模块exports的对象顺序是一致的
什么叫AMD规范,如何编写AMD规范的脚本
define([依赖的模块],function(){
//TODO: 自己想写的方法,或者属性,但是要对外输出,则需要有一个 return, return 出来的,其他模块可以拿来用
})
详细:【相对详细一点,哈】
学习了上面的几篇文章之后,尝试做了一个实践了一下,来理解如何使用RequireJS,其实真的不难。
RequireJS是基于AMD来实现的
什么事AMD,是什么CommonJS?
CommonJS 【针对服务端】
Node作为一个服务端语言,如果没有模块化的化,根本没办法进行复杂性的编程。
So,NodeJS就参照了 CommonJS规范实现了 模块系统
CommonJS中 有一个全局方法 require,来加载模块
AMD 【有了服务端的,当前也要有前端的】
为什么不用CommonJS,而还需要去选AMD呢?
因为CommonJS不适用于浏览器端,因为JS脚本,来自服务端,请求脚本到浏览器需要时间,如果等待加载完,在执行下一步,那么整个页面渲染就卡住了,应用就停住了。
So,浏览器端不能用 同步加载 , 而要用 异步加载。
AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"
异步加载AMD
异步加载模块的话,那么就存在一个问题了,如果像CommonJS只有一个参数,那么肯定是不行的,因为怎么知道它什么时候加载完啊。
So, 浏览器端,还需要一个 回调函数
这边有两个参数,第一个参数是一个数组,表示依赖的模块,回调函数的参数,跟依赖模块的数组顺序必须是一致的。
每次加载模块,总要输入相对路径,或者绝对路径,长长的一大串,坑爹啊,如果多个地方调用了,那后期文件修改了位置,那岂不是修改到吐?
So,paths 就是必须的,跟模块取一个别名。
啥,你说你的JS模块文件,都是 某个指定的路径下? baseUrl 就出来了
我要是早期脚本,不是按照AMD来写的,那肿么办呢? shim 属性
符合AMD规范的,可以直接requirejs 进来使用,但是不符合 AMD规范的,则需要配置 shim 属性和shim中的 exports属性
如果不符合AMD规范的,还依赖其他控件,需要配置 shim属性里面的 deps 属性
Javascript模块化编程(一):模块的写法
Javascript模块化编程(二):AMD规范
Javascript模块化编程(三):require.js的用法 【require的使用,paths,baseUrl,shim 以及 deps,exports】
~~~~~~~~~~~~~上面这三篇是阮一峰老师的文章,【简单易懂】~~~~~~~~~~~~~~~~
但是对 requirejs 讲的内容,感觉少了点东西
快速理解RequireJs 【看后面作者遇到的坑,以及 shim 中的 init 方法】
总结:【只需要了解几个属性就可以用起来啦】【源码】github 源码
参数1:依赖的模块,数组形式,
参数2:回调函数,参数:跟每个 依赖模块exports的对象顺序是一致的
require(['module1','module2'],function(){ //TODO: })
require.config({ baseUrl:' ' , paths:{ ' jquery' : 'lib/jquery' }, shim:{ } })
什么叫AMD规范,如何编写AMD规范的脚本
define([依赖的模块],function(){
//TODO: 自己想写的方法,或者属性,但是要对外输出,则需要有一个 return, return 出来的,其他模块可以拿来用
})
详细:【相对详细一点,哈】
学习了上面的几篇文章之后,尝试做了一个实践了一下,来理解如何使用RequireJS,其实真的不难。
RequireJS是基于AMD来实现的
什么事AMD,是什么CommonJS?
CommonJS 【针对服务端】
Node作为一个服务端语言,如果没有模块化的化,根本没办法进行复杂性的编程。
So,NodeJS就参照了 CommonJS规范实现了 模块系统
CommonJS中 有一个全局方法 require,来加载模块
AMD 【有了服务端的,当前也要有前端的】
为什么不用CommonJS,而还需要去选AMD呢?
因为CommonJS不适用于浏览器端,因为JS脚本,来自服务端,请求脚本到浏览器需要时间,如果等待加载完,在执行下一步,那么整个页面渲染就卡住了,应用就停住了。
So,浏览器端不能用 同步加载 , 而要用 异步加载。
AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"
异步加载AMD
异步加载模块的话,那么就存在一个问题了,如果像CommonJS只有一个参数,那么肯定是不行的,因为怎么知道它什么时候加载完啊。
So, 浏览器端,还需要一个 回调函数
这边有两个参数,第一个参数是一个数组,表示依赖的模块,回调函数的参数,跟依赖模块的数组顺序必须是一致的。
每次加载模块,总要输入相对路径,或者绝对路径,长长的一大串,坑爹啊,如果多个地方调用了,那后期文件修改了位置,那岂不是修改到吐?
So,paths 就是必须的,跟模块取一个别名。
啥,你说你的JS模块文件,都是 某个指定的路径下? baseUrl 就出来了
我要是早期脚本,不是按照AMD来写的,那肿么办呢? shim 属性
符合AMD规范的,可以直接requirejs 进来使用,但是不符合 AMD规范的,则需要配置 shim 属性和shim中的 exports属性
如果不符合AMD规范的,还依赖其他控件,需要配置 shim属性里面的 deps 属性
相关文章推荐
- SOUI与WTL
- ssh+mysql 运行时报错not suitable driver
- 303. Range Sum Query - Immutable
- mvn compile错误之SunCertPathBuildException解决思路
- iOS UIPickerView 简单使用
- Easy-Ui中window窗口介绍
- UE4 Hello World 创建第一个UE4工程
- UE4 Hello World 创建第一个UE4工程
- UIView
- 一个sort命令统计hot query
- UILabel+UIImageView(动画)
- iOS: 在UIViewController 中添加Static UITableView
- UIViewController控制器的生命周期
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法(转)
- NGUI ScrollView实现循环优化
- 解决Xcode7真机调试出现:XcodeYour build settings specify a provisioning profile with the UUID
- IOS-UITableView 及自定义cell
- Install Arduino IDE on Ubuntu 14.04
- UIResponder类详解
- iOS UI学习笔记(一)UIView基础