浅析前端模块化开发

什么叫模块化开发?

模块化开发使代码耦合度降低,模块化的意义在于最大化的设计重用,以最少的模块、零部件,更快速的满足更多的个性化需求。因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。但总不能随便写吧,总得有规范让大家遵守吧。

 

为什么要进行模块化开发?

1.污染全局变量。

2.命名冲突。使用命名空间调用方法太啰嗦,使用雅虎的沙箱机制又产生新的问题——解决了命名空间太长问题,又出现多模块调用同名方法的问题。

3.文件依赖。众多文件之间的依赖关系经常会让人抓狂,开发最基本的原则就是不要重复,当项目中有多处地方运用同一个功能时,我们就该想办法把它抽离出来做成util,当需要时直接调用它即可,但是如果你之后的代码依赖于util.js而你又忘了调用或者调用顺序出错,代码便报各种错误(e.g Bootstrap依赖jQuery),不适合大规模团队程序。

 

模块化开发的发展史

1. js写法:js函数->对象式写法->立即执行函数

2. 使用第三方类库。

服务器端规范:CommonJs---nodejs使用的规范,

浏览器端规范:AMD---RequireJS国外相对流行(官网

        CMD--SeaJS国内相对流行(官网

SeaJS与RequireJS的对比:

同为异步加载方式,区别在于:依赖模块的定义方式和加载(解析)时机上,AMD是依赖前置且提前执行(预加载),所以无延迟,用户体验好;CMD是依赖先加载不执行,调用时才执行(懒加载),所以执行顺序与书写顺序一致,性能好。AMD的API默认是一个当多个用,CMD的API严格区分,推崇职责单一。

3.ES6的产生

在ES5中我们要进行模块化操作需要引入第三方类库,随着前后端分离,前端的业务日渐复杂,ES6为我们增加了模块化操作

export :负责进行模块化,也是模块的输出。
var a ='js';
var b ='技术';
var c = 'web';
export {a,b,c}
import : 负责把模块引入,也是模块的引入操作。
import {a} from './temp.js';

与ES5写法的对照:
var App = require('./App')  等价写法   import App from './App'
module.exports={ } 等价写法  export default { } 

 

posted @ 2018-03-26 16:33  liuxu_xrl  阅读(193)  评论(0编辑  收藏  举报