seajs和RequireJS之间的差异比较

seajs和RequireJS之间的差异比较
历史不是过去,历史上,W3C等规格,和浏览器的快速发展,对前端模块化发展将逐渐成为基础设施。一切终将成为历史,而未来会更好。引用于波的原文最后一段,我个人同意现在我谈论未来,我认为如果前端js模块的不断发展,其模块的格式可能会成为网络未来的标准规范,将有不同的方式去实现它。像JSON格式,它最终会变成一个标准和实施本地浏览器。

谁更有能力成为未来的异步模块seajs CMD规范,和RequireJS跟随AMD的规范,从这两个不同的格式。

cmd

CMD模块依赖声明模式

复制代码代码如下所示:

定义(函数(要求){)

var =需要();

var(=);

更多的代码。

})
CMD的依赖几乎是宣言,这是由内部需要声明的方法。但由于异步模块加载器需要加载这些模块的时间提前,所以模块需要提取所有依赖的模块才真的使用。是否立即或自动提取机提取的自动化工具,CMD的依赖报表格式只能通过静态分析来实现的,这是命令的缺点。

CMD标准的弊端

它不能直接压缩:需求是局部变量,这意味着它不能被压缩工具直接压缩。如果需要替换变量,加载器和自动化工具将无法获得模块依赖项。

在模块编写中还有额外的约定:路径参数不能是字符串操作,不能替换变量。否则,加载器和自动化工具无法正确提取路径。

规范以外的约定意味着更多的文档,除非它们是规范的一部分。

注:本seajs静态分析的实现是依靠的需要部分的模块封装后定期提取模块toString()的路径。

AMD

AMD模块依赖声明模式:

复制代码代码如下所示:

定义{、、函数(A、B){

更多的代码。

})
AMD的依赖性是早期声明,这种优势是不需要依靠静态分析来获益的,无论是装载机还是依靠自动化工具都可以非常直接,标准定义可以更加简单,意味着可以实现更强大的功能,这有利于装载机和自动分析工具。

AMD标准的弊端

依赖早期声明在编写代码时不那么友好。

有内部模块与模块之间有一定差异,Nodejs。

问题二点需要解释的是,事实上,无论CMD或AMD异步模块,它不能与同步模块的规格一致(NodeJS模块),只有谁更像是同步module.amd必须转换为同步模块。除了删除定义函数的包外,它还需要使用请求在头部声明依赖关系语句。CMD只需要删除定义函数的包。

总结
从标准的角度来看,AMD是更简单和严格的,其适用范围更广。requirejs的推动下,它实际上已成为异步模块的标准在国外,和各类图书馆先后支持AMD规范。

但SeaJS和CMD做了很多好东西:

1、相对自然的依赖声明样式

2、小而美的内部实现

3、贴心的外设功能设计

4,更好的中国社区支持

如果可能的话,我想看看seajs支持AMD,这是前端社区终极幸福。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部