你的JavaScript工具链中有什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

我期待着开始在JavaScript中编写一个复杂的应用程序来在网络上运行。我之前在JavaScript中写了一点点的一次性代码,直接使用DOM和一点jQuery。但这是我第一次想要编写一个完整的应用程序在浏览器中运行。

所以,我想知道人们喜欢在JavaScript中进行认真的开发的工具链。特别是,我对以下内容感兴趣,并提供一些有关为什么选择所做组件以及它们如何融入工作流的信息:

  • 你使用什么编辑器和编辑器插件/模式/脚本?我通常是Emacs用户,js2.el目前正在使用,但我有兴趣了解其他设置。
  • 你使用任何类型的IDE(Aptana,Dashcode或类似的)?
  • 你使用什么JavaScript库或框架?
  • 你是否使用任何编译成JavaScript的语言(GWT,haxe,Objective-J)?
  • 你使用什么单元测试框架?你如何援引他们?它们可以从你的编辑器/ IDE,命令行,浏览器,网页,JavaScript调试器中调用吗?
  • 你使用什么自动化用户界面测试工具(如Selenium,W​​atir,Sahi)?再次,这些如何被调用?(能够从命令行调用单元测试和接口测试对于运行buildbots会非常有用)
  • 你使用了什么其他的代码质量工具(JSlint,代码覆盖工具,或者其他类似的东西)?
  • 你在调试环境中使用什么(Firebug,WebKit inspector等)?它是否与编辑器或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,但它的文本编辑功能还有很多不足之处。

你使用什么JavaScript库或框架?

我使用jQuery和Prototype,这取决于项目的需求。为了说明每个框架的优势,我喜欢将jQuery称为DOM操作框架,将Prototype称为脚本框架。因此,我倾向于在关注标记和原型的项目上使用jQuery,这些应用程序类型更重的脚本项目。

你是否使用任何编译成JavaScript的语言(GWT,haxe,Objective-J)?

绝对不是 - 我对这样的框架有哲学抱怨。与服务器端代码不同,前端代码正在用户的浏览器中运行,并且在您无法控制的环境中运行。因此,我认为这是JavaScript开发人员有责任制作出最佳代码的可能性。不理想的代码可能会带来性能上的影响,而像Objective-J这样的语言编写的JavaScript(这是我使用过的唯一一个)将永远不会像强大的JavaScript开发人员生成的代码一样严密。

你使用什么单元测试框架?你如何援引他们?它们可以从你的编辑器/ IDE,命令行,浏览器,网页,JavaScript调试器中调用吗?

我是QUINIT,jQuery单元测试框架的忠实粉丝。Dojo的DOH单元测试也很好。

不要错过FireUnit,单元测试的一个漂亮的Firebug扩展。

另见Razor。

你使用什么自动化用户界面测试工具(如Selenium,W​​atir,Sahi)?再次,这些如何被调用?(能够从命令行调用单元测试和接口测试对于运行buildbots会非常有用)

必要时使用硒,但这很少见。

你使用了什么其他的代码质量工具(JSlint,代码覆盖工具,或者其他类似的东西)?

我使用并喜欢JSLint。

Firebug具有很好的代码覆盖范围,HRCov被广泛认为是最好的代码。在我的大部分日常JavaScript工作中,我没有发现代码覆盖的用处。

你在调试环境中使用什么(Firebug,WebKit inspector等)?它是否与编辑器或IDE有任何集成?

就我而言,Firebug是JavaScript开发的杀手级应用程序。一些有用的调试功能:

  • 可变的工具提示
  • 断点和条件断点
  • 性能分析器
  • 一个非常漂亮的控制台API
  • 观看表情
  • 堆栈痕迹
  • 像Jiffy,FireCookie和FireQuery等有用的插件。

WebKit Inspector很不错,就像DragonFly一样,Debug Bar可以用来追踪IE漏洞......但是FireBug对我来说非常有用。

在部署代码之前对代码执行哪些后处理(混淆器,缩小器,任何类型的优化器)?

我非常有意地不使用任何后期处理工具 - JavaScript的一个重要方面就是它的开放性,我不愿意让新兴的JavaScript开发人员更难以从我的工作中学习。更不用说重构混淆JavaScript是非常简单的。

只有一次我需要缩小JavaScript以节省带宽。在那种情况下,我建立了一个SVN post-commit钩子来运行Doug Crockford出色的JSMin。

工具链中是否还有其他重要工具(针对基于浏览器的应用程序的JavaScript开发,我已经拥有完美的版本控制系统,错误跟踪器等)?

  • alert()功能;)
  • 另外,一个不错的JSON验证器也很有用。
  • Visual Event对事件调试很有用
  • jsfuzzer,用于模糊
  • 我不需要使用它,但Crosscheck在我的工具箱中。
用户回答回答于

这是一个非常好的工具,可以比其他许多其他工具更好地优化JavaScript。可以使用页面速度运行它来分析现有的网站。它内置了很多其他功能,例如检测死代码,引用等。

扫码关注云+社区