我希望开始用JavaScript编写一个复杂的应用程序,以便在Web上运行.我之前在JavaScript中编写了一些一次性代码,直接使用DOM和一些jQuery.但这是我第一次想要编写一个在浏览器中运行的完整应用程序.
所以,我想知道人们喜欢在JavaScript中进行认真开发的工具链.特别是,我对以下内容感兴趣,并提供了一些有关您为何选择所做组件以及它们如何与您的工作流程相结合的信息:
你使用什么编辑器和编辑器插件/模式/脚本?我一般是Emacs用户,现在正在使用js2.el
,但我很想听听其他设置.
你使用任何类型的IDE(Aptana,Dashcode等)?
您使用哪些JavaScript库或框架?
您是否使用任何编译为JavaScript的语言(GWT,haxe,Objective-J)?
你使用什么单元测试框架?你怎么调用它们?可以从编辑器/ IDE,命令行,网页浏览器,JavaScript调试器调用它们吗?
您使用哪些自动用户界面测试工具(例如Selenium,Watir,Sahi)?再次,如何调用这些?(能够从命令行调用单元测试和接口测试对于运行buildbots非常有用)
您使用了哪些其他代码质量工具(JSlint,代码覆盖工具或任何类型)?
您在调试环境中使用了什么(Firebug,WebKit检查器等)?它与您的编辑器或IDE有任何集成吗?
在部署代码之前,您对代码运行了哪些后处理(混淆器,缩小器,任何类型的优化器)?
您是否有任何工具来管理模块依赖项或根据需要动态加载代码?我正在编写的应用程序将使用大量代码,并且我希望保持加载时间,因此用于跟踪所需模块或按需加载代码的工具将是有帮助的.
您的工具链中是否还有其他基本工具(特定于基于浏览器的应用程序的JavaScript开发;我已经有一个非常好的版本控制系统,错误跟踪器等)?
我对"这里有一堆你可以使用的东西"(我知道很多可用的工具)以及你在实践中实际使用的堆栈中的更多以及它们如何适合的列表中的兴趣不大一起.我希望主要将其作为客户端应用程序开发,服务器只用于身份验证以及存储和检索数据,因此我对您使用的服务器端框架不感兴趣,除非它对客户端不可或缺.侧面代码以某种方式.
编辑:我对单元和用户界面测试框架以及如何自动化它们特别感兴趣.我更喜欢能够从命令行运行一个"make test"或"rake test"任务来运行项目的所有测试,并根据测试的成功或失败返回状态.这样可以更轻松地与buildbots集成.另外,我感兴趣的是,是否有人编写可以在浏览器外部(在Rhino,spidermonkey,v8等中)运行的单元测试,以获取不依赖于浏览器的代码,以便更快地完成部分测试.试验.
你使用什么编辑器和编辑器插件/模式/脚本?我通常是Emacs用户,目前正在使用js2.el,但我很想听听其他设置.
我通常使用Textmate(使用JavaScript,jQuery和Prototype包).在进行繁重的前端开发时,我会在HTML,CSS和JavaScript文件之间快速切换,我会选择vim的拆分面板视图.这样做时,我要么使用macvim,要么使用Terminal + Visor,这取决于我的心情.显然,我是Mac用户.
你使用任何类型的IDE(Aptana,Dashcode等)?
不,我曾经使用Coda,但它的文本编辑器功能还有很多不足之处.我也玩过Espresso,这很有趣......但是......
您使用哪些JavaScript库或框架?
我同时使用jQuery和Prototype,具体取决于项目的需求.为了说明每个框架的优势,我喜欢将jQuery称为DOM操作框架,将Prototype称为脚本框架.因此,我倾向于在项目上使用jQuery,这些项目专注于标记和Prototype,而不是脚本更大的应用程序类型的项目.
您是否使用任何编译为JavaScript的语言(GWT,haxe,Objective-J)?
绝对不是 - 我对这种框架抱有哲学上的抱怨.与服务器端代码不同,前端代码在用户的浏览器中运行,在您无法控制的环境中.因此,我认为JavaScript开发人员有责任尽可能地生成最佳代码.次优代码可能会产生性能影响,而像Objective-J这样的语言编译的JavaScript(这是我用过的列表中唯一的代码)将永远不会像强大的JavaScript开发人员生成的代码那样紧密.
你使用什么单元测试框架?你怎么调用它们?可以从编辑器/ IDE,命令行,网页浏览器,JavaScript调试器调用它们吗?
我是jQuery单元测试框架QUnit的忠实粉丝.Dojo的DOH单元测试也很不错.
不要错过FireUnit,这是一个漂亮的Firebug扩展单元测试.
也见Razor.
您使用哪些自动用户界面测试工具(例如Selenium,Watir,Sahi)?再次,如何调用这些?(能够从命令行调用单元测试和接口测试对于运行buildbots非常有用)
必要时我会使用Selenium,但这种情况很少见.
您使用了哪些其他代码质量工具(JSlint,代码覆盖工具或任何类型)?
我使用并喜欢JSLint.
Firebug具有良好的代码覆盖范围扩展,HRCov被广泛认为是最好的.在我的大多数日常JavaScript工作中,我没有太多使用代码覆盖.
您在调试环境中使用了什么(Firebug,WebKit检查器等)?它与您的编辑器或IDE有任何集成吗?
就我而言,Firebug是JavaScript开发的杀手级应用.一些有用的调试功能:
可变工具提示
断点和条件断点
性能分析器
一个非常漂亮的控制台API
观看表达式
堆栈痕迹
有用的插件,如Jiffy,FireCookie和FireQuery.
WebKit Inspector很好,就像DragonFly一样,调试栏对于追踪IE漏洞非常有用......但是FireBug对我来说很合适.
在部署代码之前,您对代码运行了哪些后处理(混淆器,缩小器,任何类型的优化器)?
我故意不使用任何后期处理工具--Java的一个重要方面就是它的开放性,我不想让刚刚起步的JavaScript开发人员更难以从我的工作中学习.更不用说重建混淆的JavaScript非常简单.
只有一个实例我需要缩小JavaScript以节省带宽.在这种情况下,我设置了一个SVN post-commit钩子来运行Doug Crockford的优秀JSMin.
您的工具链中是否还有其他基本工具(特定于基于浏览器的应用程序的JavaScript开发;我已经有一个非常好的版本控制系统,错误跟踪器等)?
该alert()
功能;)
此外,一个不错的JSON验证器很有用.
Visual Event对于事件调试很有用
用于模糊测试的jsfuzzer
我不需要使用它,但Crosscheck在我的工具包中.
在提出这个问题时,谷歌的封闭编译器并未引起争议.
这是一个非常好的工具,可以比其他许多人更好地最小化JavaScript.您可以使用页面速度运行它来分析现有网站.它内置了许多其他功能,如检测死代码,引用等.