您的JavaScript工具链中有什么? [关闭]

问题描述 投票:57回答:11

我希望开始用JavaScript编写一个复杂的应用程序,以便在Web上运行。我之前在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检查器等)?它与您的编辑器或IDE有任何集成吗?
  • 在部署代码之前,您对代码运行了哪些后处理(混淆器,缩小器,任何类型的优化器)?
  • 您是否有任何工具来管理模块依赖项或根据需要动态加载代码?我正在编写的应用程序将使用大量代码,并且我希望保持加载时间,因此用于跟踪所需模块或按需加载代码的工具将是有帮助的。
  • 您的工具链中是否还有其他必备工具(特定于基于浏览器的应用程序的JavaScript开发;我已经有一个非常好的版本控制系统,错误跟踪器等)?

我对“这里有一堆你可以使用的东西”(我知道很多可用的工具)以及你在实践中实际使用的堆栈中的更多以及它们如何适合的列表中的兴趣不大一起。我希望主要将其作为客户端应用程序开发,服务器只用于身份验证以及存储和检索数据,因此我对您使用的服务器端框架不感兴趣,除非它对客户端不可或缺。侧面代码以某种方式。

编辑:我对单元和用户界面测试框架以及如何自动化它们特别感兴趣。我更喜欢能够从命令行运行一个“make test”或“rake test”任务来运行项目的所有测试,并根据测试的成功或失败返回状态。这样可以更轻松地与buildbots集成。另外,我感兴趣的是,是否有人编写可以在浏览器外部(在Rhino,spidermonkey,v8等中)运行的单元测试,以获取不依赖于浏览器的代码,以便更快地完成部分测试。试验。

javascript frameworks workflow development-environment
11个回答
31
投票

你使用什么编辑器和编辑器插件/模式/脚本?我通常是Emacs用户,目前正在使用js2.el,但我很想听听其他设置。

我通常使用Textmate(与JavaScriptjQueryPrototype捆绑)。在进行繁重的前端开发时,我会在HTML,CSS和JavaScript文件之间快速切换,我会选择vim的拆分面板视图。这样做,我要么使用macvim或者终端+ Visor,这取决于我的心情。显然,我是Mac用户。

你使用任何类型的IDE(Aptana,Dashcode等)?

不,我曾经使用Coda,但它的文本编辑器功能还有很多不足之处。我也玩过Espresso,这很有趣......但是......

您使用哪些JavaScript库或框架?

我根据项目的需要使用jQueryPrototype。为了说明每个框架的优势,我喜欢将jQuery称为DOM操作框架,将Prototype称为脚本框架。因此,我倾向于在项目上使用jQuery,这些项目专注于标记和Prototype,而不是脚本更大的应用程序类型的项目。

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

绝对不是 - 我对这种框架抱有哲学上的抱怨。与服务器端代码不同,前端代码在用户的浏览器中运行,在您无法控制的环境中。因此,我认为JavaScript开发人员有责任尽可能地生成最佳代码。次优代码可能会产生性能影响,而像Objective-J这样的语言编译的JavaScript(这是我用过的列表中唯一的代码)将永远不会像强大的JavaScript开发人员生成的代码那样紧密。

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

我是jQuery单元测试框架QUnit的忠实粉丝。 Dojo的DOH Unit Testing也不错。

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

另见Razor

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

必要时我使用Selenium,但这种情况很少见。

您使用了哪些其他代码质量工具(JSlint,代码覆盖工具或任何类型)?

我使用和爱JSLint

Firebug有一个很好的code coverage extensionHRCov被广泛认为是最好的品种。在我的大多数日常JavaScript工作中,我没有太多使用代码覆盖。

您在调试环境中使用了什么(Firebug,WebKit检查器等)?它与您的编辑器或IDE有任何集成吗?

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

  • 可变工具提示
  • 断点和条件断点
  • 性能分析器
  • 一个非常漂亮的console API
  • 观看表达式
  • 堆栈痕迹
  • 有用的插件,如JiffyFireCookieFireQuery

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

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

我故意不使用任何后期处理工具--Java的一个重要方面就是它的开放性,我不想让刚刚起步的JavaScript开发人员更难以从我的工作中学习。更不用说重建混淆的JavaScript非常简单。

只有一个实例我需要缩小JavaScript以节省带宽。在那种情况下,我建立了一个SVN post-commit hook来运行Doug Crockford的优秀JSMin

您的工具链中是否还有其他必备工具(特定于基于浏览器的应用程序的JavaScript开发;我已经有一个非常好的版本控制系统,错误跟踪器等)?


1
投票

我使用Dashcode开发Mac Widgets,因为它是“ok”并且有很多面向小部件的功能但是对于其他所有东西,TextMate


0
投票

我倾向于保留的唯一东西是jQuery用于简单的DOM操作,但这不是必需的。我不依赖任何框架或其他任何东西;如果我需要写一些东西,我只需用vim或任何我可用的文本编辑器编写它(因为我认为IDE适用于懒惰或企业/企业环境中的人)。如果我需要使用一个框架,我会出去寻找一个出于我碰巧的目的。但在一天结束时,我只是编写Javascript。我并不专注于任何框架,因为它们最终都成为旧的新闻。只要知道dang语言是如何工作的,并且能够在任何环境或情况下工作,无论是否有框架或库都能完全掌握您的手,它就会更加强大。


8
投票

在提出这个问题时,Google’s closure compiler没有参与竞争。 这是一个非常好的工具,可以比其他许多人更好地最小化JavaScript。您可以使用page speed运行它来分析现有网站。它内置了许多其他功能,如检测死代码,引用等。


3
投票
  • IntelliJ IDEA / RubyMine用于编辑。
  • jQuery +插件因为它与Ruby相似
  • 您是否使用任何编译为JavaScript的语言(GWT,haxe,Objective-J)?
  • JSUnit与Blue Ridge(Rails包),但更多地依赖于Selenium测试
  • 没有代码编程和测试之外的代码质量工具
  • 主要使用Firebug进行调试
  • 依靠gzip压缩来减少空间
  • 创建许多小型模块化JS文件
  • 使用rails静态组合并根据需要自动包含这些文件。这是自定义代码,但我发表了博客。这使您可以随着开发的增长保持模块化
  • 构建相当多的jQuery插件来管理网站上的小部件

3
投票

刚开始使用RubyMine作为JavaScript IDE,纯粹是为了支持JavaScript,这非常好。它与IntelliJ IDEA中的相同。

对于调试来说,Firebug是一个显而易见的必备产品,尽管在我看来它最近有点下滑了。我倾向于使用日志而不是调试器,因此我发现log4javascript非常有用(尽管我应该指出我确实写了它)。我还偶尔使用WebKit的inspector thingy和IE 8的调试器,以及Visual Studio的早期版本的IE调试器。

对于代码质量,我手动和偶尔使用JSLint,因为我不同意它的一些建议。 RubyMine / IntelliJ还有大量的JS“检查”,可以在编写代码时分析代码并在代码旁边生成警告,我觉得这些代码很有用。

我倾向于在一些开发页面上开发,包括单独的,未经编译的脚本,在创建构建时,我运行一个构建脚本(我自己的,用Ant编写),从版本控制中检出我的代码,连接各个脚本,删除日志和调试调用,缩小/压缩(使用JSMin或YUICompressor)代码,并运行单元测试。我的单元测试脚本是我自己的,并没有什么特别的花哨。

它工作得相当好,但并不完美。


2
投票

我还没有在Javascript中编写任何大量内容(在我的最新项目中大约有3000行),但是我在我的部署/构建脚本中使用我需要的所有库来缩小/组合它的JSLint代码。我的构建脚本还更改HTML直接导入脚本和库,以及导入生产压缩代码。这样,您就不必运行构建脚本来查看开发中的变化,这是必不可少的。

YUI Compressor非常慢,特别是因为它启动JVM运行,但它完成了工作。部署脚本中的某种缩小对于删除所有注释至关重要,如果您避免使用全局变量,您也将获得有意义的标识符名称长度压缩量,但在gzip之后没有太大的好处。可能你需要另一步来删除console.debug行和其他调试代码。

用于调试,FireBug。我确定webkit调试器也没问题。

对于开发,vim使用改进的js缩进脚本和带有一些js修改的ctags。我不确定真正的IDE有什么优点,但我确信有一些。默认情况下,Vim不会在javascript字符串中对HTML进行语法高亮显示,而是apparently it can be configured to

JSLint很容易在Rhino中运行,但是spidermonkey可以快速完成大约3倍,因为它不需要启动JVM。克罗克福德不支持这种安排,但我设法让它以某种方式运作。


2
投票

我的技术堆栈(asp.net mvc)略有不同,但在这里:

  • IDE:Visual Studio 2008 + ReSharper,Asp.Net MVC
  • 编辑:Notepad ++(我的大部分时间都在VS中,但Notepad ++对JavaScript有更好的语法突出显示)
  • 开发者浏览器:FireFox + Firebug + YSlow + PageSpeed + FireCookie还添加开发人员工具栏
  • 其他浏览器:IE8,Chrome 3,Safari,Opera(很少使用),以及通过虚拟机的IE6和IE7(可从Microsoft免费下载的虚拟PC映像)。
  • 后处理:JLint和YUI Compressor。我有一个构建任务做YUI压缩器部分。
  • JavaScript框架:JQuery + JQuery UI
  • 其他东西:JQuery Validation,JSON2

2
投票

Web Tech已经走了一段路,所以我想我会在2017年为所有人看到这个问题时提到一些不错的现代工具和框架。

你使用什么编辑器和编辑器插件/模式/脚本?

Atom是我选择的文本编辑器,因为我在MS生态系统中,Visual Studio 2013是我使用的IDE,尽管我避免使用VS进行JavaScript开发。尽管如此,我几乎只使用Atom完成了我的所有JavaScript开发。

我有一些可以帮助我完成工作的插件。

  • atom-beautify,我用它来清理我可能会介绍的任何造型问题,它在保存时这样做,所以让我很容易,因为我经常保存和办理登机手续。
  • atom-easy-jsdoc允许我使用热键组合插入jsdoc注释,这很棒,因为它可以让我自动生成代码文档,对API开发特别有用。
  • atom-ternjs是我用于JavaScript代码完成的软件包,我不经常需要它,但它很方便。
  • minimap是一个插件,允许我查看特定文档中所有代码的低细节轮廓,我发现它比滚动条更容易使用。因人而异。
  • pigments是一个插件,当它在文本后面的CSS中检测到十六进制颜色时呈现颜色。如果您需要快速调整并查看结果,则非常有用。

你使用任何类型的IDE(Aptana,Dashcode等)?

往上看 :)

您使用哪些JavaScript库或框架?

我倾向于将RequireJS用于家庭项目,并使用内部模块加载器。我一般不会在我的项目中使用库和框架,但是当我这样做时,我非常偏爱AngularJS(1.x)。这一切都取决于我在做什么。

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

不。

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

我使用Node.jsKarma测试运行器作为测试运行器(谁是thunk它?),Jasmine作为我的测试框架和sinonJS作为我的测试开发的存根/模拟库。

可以将Karma配置为监视文件系统的更改(或者像文件监视插件一样的任务运行程序也可以工作)并且每次保存文件时我都会执行所有测试。它还具有能够同时针对多个浏览器运行测试的额外好处。所以它将针对IE,Edge,Chrome,Firefox,PhantomJS等测试JS ......这非常有用。

我有我的js项目设置来运行grunt任务。我通常只是从命令提示符/终端执行'grunt devmode',就是这样,我的测试运行。对于提交时的持续集成,我有一个单独的grunt任务,只运行一次测试。对于家庭使用,每当发生推动时,我都会让TravisCI运行该任务。

您使用了哪些其他代码质量工具(JSlint,代码覆盖工具或任何类型)?

我使用JSHint,因为它比JSLint更不挑剔。对于代码覆盖,我使用伊斯坦布尔,每当我的单元测试运行时偶然运行,这是非常有用的。

您在调试环境中使用了什么(Firebug,WebKit检查器等)?它与您的编辑器或IDE有任何集成吗?

我使用任何Web浏览器都遇到问题。如果是服务器端,例如节点,我使用node-debugger,因为我可以直接从Atom调试。

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

我通常不会这样做,这对于web项目来说理想情况下是一个minifier和uglifier。

您是否有任何工具来管理模块依赖项或根据需要动态加载代码?我正在编写的应用程序将使用大量代码,并且我希望保持加载时间,因此用于跟踪所需模块或按需加载代码的工具将是有帮助的。

是的!我使用qazxsw poi和实现。我使用qazxsw poi作为我的首选包管理器,但如果我使用的是Visual Studio,我将使用nuget。

您的工具链中是否还有其他必备工具(特定于基于浏览器的应用程序的JavaScript开发;我已经有一个非常好的版本控制系统,错误跟踪器等)?

我不太清楚我理解这个问题,但我使用Git作为家庭项目和TFS在工作,GitHub作为我的回购主机,TravisCI用于持续集成和Coveralls(Git存储库的代码覆盖率记者)。


1
投票
  • 编辑器:记事本或任何其他带语法高亮的文本编辑器
  • IDE:可以是Dreamweaver,Aptana,Netbeans - 根据您的个人喜好。
  • Javascript框架:我更习惯jQuery,我仍然推荐jQuery。 你可以考虑在jQuery中添加一些“插件”。有些真的很酷。像Facebox(RequireJS) - 一个易于使用的jQuery Facebook式弹出框。或jQuery Cookie插件
  • 调试:Firebug(FireCookie,Page Speed,YSlow) - 没有与IDE集成,但在浏览器上是神奇的。如果您需要跨浏览器调试,可以使用Firebug Lite。 您可以轻松地使用console.log()来调试而不是警报(特别是当您使用大量回调,计时器,AJAX等进行javascript时。您不希望警报语句打破它原本应该的方式。
  • 后处理:包装工 - npm

1
投票

http://famspam.com/facebox所以它似乎是更大的应用程序的一个很好的选择。

© www.soinside.com 2019 - 2024. All rights reserved.