欢迎访问墙外地址:http://lzsblog.appspot.com/?p=299001
向StackOverflow.com的大牛致谢
这几天搞了个PHP的项目,为了节约服务器资源把大量的功能用前端的JavaScript代码实现。而你懂的,这些代码的内容是比较敏感的信息,最好不要让别人轻易的读出和理解。Google Closure Compiler在代码压缩和混淆方面做的很好,可以很好的隐藏代码逻辑。中文内容也会编码成不可读的文本。
那么,每次更改了原始JS代码之后,都要手动的更新传给前端的代码,而且要设定特定的访问规则让客户端不能访问原始JS代码。这是个很费事而且容易出错的工作。我就想能不能写一个Makefile脚本自动的更新被更改的JS代码。
说办就办
我的网站那用的是NginX + PHP,用Apache的同学只要适当的设置访问规则,问题是一样的。假设所有的前端代码存储在/js文件夹(你的HTML文件里的JS代码都从这里引用),这里我在/上创建一个/design文件夹用来存放原始代码。在NginX的配置文件里我们添加如下几行让design文件夹不能被访问。
1
location ~ ^/(design)/ {
2
deny all;
3
}
1
filelist = thermometer.js logic.combat.js analyse.js logic.js
2
.PHONY: all
3
wp := $(foreach k, $(filelist), ../js/$(k))
4
5
all : $(wp)
6
../js/%.js : %.js
7
java -jar compiler.jar --js=$< --js_output_file=$@
然后把Google Closure Compiler拷贝到这个文件夹之下即可。每次更改一个或多个JS文件之后,只要在命令行输入make命令,或者在Vim的命令模式下输入:make,即可更新所有被更改过得原始JS文件对应的编译完的JS文件。
这里我是用的Google Closure Compiler,其实任意的代码混淆器都可一用这个模板,输入文件参数写$<,输出文件参数写$@即可。
转载请注明:http://lzsblog.appspot.com/?p=299001
PS:千万注意java前面是一个Tab,别直接从网页里拷过去就用了,会出错的