你能将多个文件压缩成一个吗?

8
我将我的JavaScript代码拆分成几个文件,所有文件都使用模块模式(使用一个名为MyApp的全局变量更新新功能和成员)。
是否可能将这些文件压缩成一个文件而不破坏作用域?
例如,我想要压缩的文件:
File1.js
var Module = (function(ns) {

 ns.fun1 = function() { alert('fun1'); };
 return ns;

})(Module || {});

File2.js

var Module = (function(ns) {

 ns.fun2 = function() { alert('fun2'); };
 return ns;

})(Module || {});

4
快速执行以下命令:cat one.js two.js three.js | uglifyjs -m -c -o out.min.js。该命令会将三个JavaScript文件合并,并使用UglifyJS进行代码压缩和混淆,最终输出一个名为out.min.js的文件。 - elclanrs
“能否将文件压缩成一个而不破坏作用域?”好的,你写了代码,压缩不会破坏作用域,是你的代码本身存在问题。 - mpm
@elclanrs 我没有这个“uglifyjs”应用程序,你能否发布一个答案展示最终代码是什么?也许和Google Closure的相同? - Joshua MN
@JoshuaMN:你只需要安装NodeJS,然后使用npm install -g uglifyjs安装UglifyJS,它就可以在整个系统中使用了。如果你使用的是Windows系统,建议安装一个更好的控制台,或者直接安装git - elclanrs
2个回答

2
全局作用域实际上是全局的,无论您是从一个文件还是多个文件进行更改都没有关系。但是,您的文件顺序可能很重要,这取决于您使用的模块模式风格。如果您想了解有关跨文件私有状态的详细信息,请阅读此文:http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth

1

是的,你可以这样做,这对每个人都是一个好方法,特别是当涉及到更多开发人员和应用程序时会更加有益。

我使用Minify类(http://code.google.com/p/minify/)和一个特殊的配置文件(https://beat.snipt.net/minify-config-file-minify-each-folder-from-project-1-minified-file/),它扫描我的文件夹并为每个子文件夹创建一个文件(JS或CSS)。这样,我可以制作模块化的JS或CSS文件,可以根据类或常规文件进行拆分。

关键在于文件的顺序,这取决于读取文件夹函数和操作系统类型可能不同(例如php readdir与scandir)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接