JS加分号的理由

如果把代码分成很多小模块,最后编译输出的,最好在每个文件末尾都加上分号。

JavaScript界关于是否应该加分号的争论由来已久。在我看来,这就跟《格利佛游记》中“大头党”、“小头党”一样,纯粹蛋疼,一群衣食无忧的达人,领着一群不明所以的小白战来战去。

吐槽时间结束。我本来对于分号不是很在意,一般每行都加,函数和条件后面不加。后来学会了“模块化”的写法——即每个逻辑用一个立即执行函数——(function () { // 逻辑主体 })()包裹,就开始混用。一直没遇到什么问题,直到今天是 Ant + Closure Compiler 编译部署肉大师,莫名其妙的挂掉了。排查半天发现是分号的问题。

原来的代码可能是这个样子:

// 模块1
// 前面有若干代码
var Manager = {
  prop: '',
  method: function () {

  }
}

// 模块2,开头是个立即执行函数
(function () {
  // 代码
})()

经过压缩后变成这个样子:

// }}(function 那里,会被当成一个函数来执行,于是整体的解析就会出错了
var Manager = {prop: '',method: function () { // code }}(function () {// 代码})()

这时只要给每个文件的末尾加上分号,就解决了。还有种做法,就是在开头加上分号,很多开源代码也是这样做的:

;(function () {
  // code
})()

如此,便给JavaScript代码写分号添了一个理由。

使用Ant编译Web应用

前端项目可能碰到两个很大的问题:代码开放,用户可以直接读代码;代码下载需要占用带宽。这两个问题用ant编译可以在很大程度上得到解决。

开发只是万里长征走完前半截,测试部署也是很重要的环节。

尤其是,前端面临着两个很大的问题:

  1. 前端代码是开放的,用户随时可以直接读代码
  2. 代码下载到用户电脑上运行,需要占用带宽

所以如果我们可以先压缩、混淆代码,再部署给用户使用,就可以大大改善这种情况。这个时候,ant是不二的选择(因为我只会ant……)。

关于Ant

下载:http://ant.apache.org/bindownload.cgi

手册:http://ant.apache.org/manual/index.html

继续阅读“使用Ant编译Web应用”

Aptana里安装Ant

在aptana下安装ant,比较简单。

开始整理以前的项目,准备换一种组织形式。所以产生一个需求,批量发布很多东西,比如发布一套html、发布若干JS、发布SWF,等等。

解决这种需求当然应该用ant,不过打开aptana查了下,发现里面没有ant。所以需要重新安装一下。因为ant是eclipse标配,所以安装过成还算简单。

继续阅读“Aptana里安装Ant”

解决ANT编译Flash时的 Error Loading : jvm.dll

调用Ant编译时,执行mxmlc出错,但是Ant并未捕获到错误的真正内容,于是报告了默认错误——“Error loading : jvml.dll。其实这个错误并未包含真正的错误信息,从这个错误出发无法找到问题所在。我通过逐步排查发现问题处在mxmlc编译上,真正的错误提示是找不到“mvcr100.dll”这个文件,下载复制到指定位置后,就正常了。

新工作的第一个功能即将开发完毕,但是在发布的时候遇到点问题。因为工程浩大,版本更迭的编译发布是个严峻问题,这边使用Ant来解决 。其他人都用FDT做开发,Eclipse本身就有Ant插件,所以用起来自然而然,没遇到过什么问题。而我用FD,FD不支持类似的插件,所以必须用命令行进行编译。

于是问题来了,当我下载Ant并运行时,报错:

Error loading : C:\Program Files\Java\jre6\bin\client\jvm.dll

继续阅读“解决ANT编译Flash时的 Error Loading : jvm.dll”