为何seajs要把一个文件拆的七零八落呢?
发布于 10 年前 作者 kingapple 4119 次浏览 最后一次编辑是 8 年前

https://github.com/seajs/seajs/blob/master/src/intro.js

赶脚这个文件,连括号都没有配对:(

14 回复

https://github.com/lifesinger/lifesinger.github.com/issues/171 看看这个就知道什么原因了,那个JS不是单独用的

项目最终是通过Grunt来进行合并和压缩的。拆分的主要目的在于项目开发的模块化以及集成测试的方便。 插件也好,框架也好,大部分的内部逻辑和变量对外是不暴露的。这时候就很难直接进行测试。那么开发的时候将整个项目包裹的(function(){中间部分})(this)拆分成(function(){ + 中间部分 + })(this)。那么中间部分代码就暴露出来了。就可以直接访问具体的变量和内部函数了。

(function(){是头, })(this)是尾,测试的时候,把头尾都去掉,是这么理解么?

@kingapple 是的,因为分成了多个文件,中间部分也独立成了多个文件,那么测试的时候直接引用具体的需要进行测试的文件,那里面的变量和函数就能直接获取到了,显然测试就变得容易得多了。很多前端项目都是这样组织代码的。

@wh1100717 但是把一个文件拆成这么多份,不乱么:( 都不知道最后哪个文件和哪个拼接了呢 btw,应该怎么分拆文件呢?分拆只是为了便于测试么?

一个文件里就放了这几个字符,屌爆了 作者是先写好整个文件,再拆成这么多个零碎文件么?

@kingapple 你觉得3000行代码的一个文件乱还是按照功能划分的600行代码的5个文件乱?

他的配置文件在这里https://github.com/seajs/seatools/blob/master/Gruntfile.js 。

他的结构说明文档在这里https://github.com/lifesinger/lifesinger.github.com/issues/171。

按照你的逻辑 再大的项目,都应该把所有的代码放到一个文件里,那样最不乱了…

建议你看一下Jquery的源码。如果把这些都写在一个文件里面,那就真心崩溃… https://github.com/jquery/jquery/tree/master/src

@wh1100717 为何RequireJS代码行比seajs多,但是只有一个文件,而没有分拆呢?

@kingapple 每个项目都有自己组织项目结构的特点,我只是说了sea.js之所以这么组织代码的原因,不代表只能这么组织项目。你如果不喜欢进行代码拆分并且项目不是足够复杂,或者有别的测试方式进行代码模块测试,那都写一个文件里也未尝不可。

@wh1100717 亲,JS为何要写测试呢,赶脚结构经常变化的,写测试多麻烦:(每次改动结构还要改测试代码,不烦人么? 话说seajs还为测试特地自己写了一个框架,为何不用其他现有的测试框架呢? <img src=“http://img.itc.cn/photo/oTizam0nlCP” />

@kingapple 亲想一下十个人同时在一个文件写代码是一个什么场景。

@wdongxv 什么意思?使用现有测试框架,不代表十个人编辑一个文件啊:(

@kingapple 我说的和测试没关系,就是说十个人做一个项目的时候,每个人负责一个模块,理论上模块与模块之间的关连越少越好。

回到顶部