前端模块化开发发展历史(一)

读史使人明智------培根

列一下前端模块开发的历史。

1,极简风格——函数式编程

将一系列功能性代码封装成一系列函数,只允许输入参数输出结果。(这里即可以看出模块化开发的核心思想)

2,极简风格——对象封装

虽说封装函数使代码看起来干净了点,但函数之间的关系并不明显,而且一个模块过大时,很多的函数容易出现命名冲突的问题。

//模块
function funcA(){...}
function funcB(){...}
function funcC(){...}
......

//你的代码,毕竟你不知道你用的模块里都有什么命名,除非使用前读源码。。。。。。
function funcA(){...}

所以就有了对象封装式的模块化,将一系列有联系的函数封装到一个对象里,只对外提供一个对象名。

3,极简风格——闭包

对象封装固然极大降低了命名冲突发生的概率,但其属性值在外部代码里是可以修改的(在你不知道的情况下),这是不能接受的。所以就有了闭包式的写法,将模块放到一个匿名函数里,外部访问不到。

(function(params){...})(params)

到这里功能性上无可挑剔了,比如vue源码就是通过一个匿名函数返回一个构造函数,但看过vue源码的朋友肯定有一种感受,一个js文件看下来,中间要不停地上下翻飞,打断点、记录某段代码在第几行...

4,库封装风格——require.js(AMD)

require.js是AMD规范的实践,分为define(定义模块)和require(调用模块)两个函数:



它有一个r.js命令行工具,可以压缩各模块为一个或指定数量的js文件。

5,库封装风格——sea.js(CMD)

sea.js是CMD规范的实践,分为define(定义模块)和seajs(加载、配置模块)两个函数:



同样有一个构建工具,spm。

下一篇

你可能感兴趣的:(前端模块化开发)