一、什么是模块化
模块化开发 ,能够一次性引入多个模块文件 ,同时也没有引入的顺序
require.js加载的模块,采用AMD规范。也就是说,模块必须按照AMD的规定来写。
具体来讲,就是模块必须采用特定的define()函数来定义。若是一个模块不依赖其余模块,那么能够直接定义在define()数之中。
引入时:须要注意 引入顺序 频繁引入
jquery.js
cookie.js
ajax.js
public.js
二、如何实现模块化开发(以requirejs来讲)
第一步:
在页面中引入:<script src="require.js" data-main="main"></script>
data-main的值是一个入口文件 main 实际上就是 main.js
第二步: 入口函数实现:
经过cinfig方法为模块指定别名
requirejs.config({ //为引入的模块指定别名
paths:{
jquery:"jquery-1.11.1.min" //为jquery库文件指定一个别名,方便后期调用
}
})
第三步: 经过requirejs方法将写好的模块引入,并根据他们编写子代码
三、requirejs模块化开发经常使用的方法
①requirejs.config为模块指定别名,方便模块的引用
②requirejs将写好的模块引入,并根据他们编写子代码
有两个参数
第一个参数是一个数组:引入的每一个模块名称,
第二个参数是一个回调函数,函数中就是页面要实现某个功能的子代码
③define用它编写模块(功能),在相应的地方进行引入
有两个参数
第一个参数是该模块要依赖的其它模块,是一个数组 (能够省略)
第二个参数是一个回调函数 函数中实现该模块的功能
四、关于requirejs(模块化开发)好处
①整个项目中通常不会出现全局变量(防止全局变量的污染)
②整个项目中全部模块的项目加载顺序不固定(顺序任意)
③整个项目中模块之间的执行是异步的
④整个项目实现代码均是面向对象的书写方式,便于模块的管理和维护
五、关于AMD
AMD: requirejs所倡导的就是AMD开发方式
是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。全部依赖这个模块的语句,都定义在一个回调函数中,等到加载完成以后,这个回调函数才会运行。
AMD推崇的是依赖前置
CMD seajs模块化 推崇的是依赖就近
es5在AMD中引入子模块 : require() 例如gulp中插件的引入问题
六、es6的模块化 :
import 和 export模块
-
- export :负责进行模块化,也是模块的输出。
- import : 负责把模块引入,也是模块的引入操做。
将es6转成es5须要经过 gulp-babel 插件完成 (babel配置过程)
(此时运行:babel src/index.js –o dist/index.js )
npm install -g babel-cli 全局安装babel 打开cmd直接安装
npm install --save-dev babel-preset-es2015 babel-cli 本地gulp项目下安装babel
项目目录建立文件,新建-自定义文件: .babelrc ,输入代码:
{
"presets":[
"es2015"
],
"plugins":[]
}
,再次运行 babel src/index.js –o dist/index.js ,就能够正常的将es6代码转成es5了
export 多变量定义 :
var a = 9
var b = 8
var c = 90
export{ a,b,c } 起别名用 as
执行 import 导入的内容 :
import {name} from "./temp.js";
babel-node src2/xx.js
七、模块化
requireJs seaJS CommonJS ES6 module
异步 异步 同步 同步
AMD CMD common import
8.模块化规范
如何导出模块 如何接收模块?
define定义 return导出 require接收(requireJs )
module.exports 导出 require 导入(commonJS)
export default 导出 import 导入 (ES6 module)