JavaScript库开发

时间:2012-07-06 08:58:38

标签: javascript

我是一名java程序员,几个月前我发现了使用javascript和html的前端编程,这绝对很酷。所以这是一个js新手的问题。

是否有任何IDE,默认工作流程或javascript libs开发的最佳实践?我不是指覆盖和单元测试或类似的东西。我的意思是,在开发具有某些js逻辑的html控件时,我应该使用哪些工具或技术?我应该在文本编辑器中编写一个小测试页面并在每分钟按F5并在浏览器控制台上观看的十几个浏览器中打开它,或者可能有一些魔术IDE会在按钮上重新加载所有浏览器实例并从浏览器收集报告?

3 个答案:

答案 0 :(得分:4)

JavaScript基础知识

确保您了解该语言。 JavaScript在这方面有点棘手:你可以轻松思考你理解语言,但有一些奇怪的东西可以偷偷摸摸你。我强烈推荐Douglas Crockford的 JavaScript:The Good Parts 。他还在Youtube上进行了一些同名的谈话,这些谈话肯定值得关注。

的JSLint

在您的工作流程中集成 JSLint 或类似工具。它是Javascript的样式检查器和静态分析工具,有助于捕获细微的错误。

避免F5

结帐live.js

  

只需包含Live.js,它将监控当前页面,包括   本地CSS和Javascript通过发送连续的HEAD请求   服务器。 CSS的更改将动态应用于HTML或   Javascript更改将重新加载页面。试试吧!

浏览器开发者工具

熟悉它们。我个人非常喜欢Chrome的开发者工具而不是Firefox / Firebug,但无论您选择哪一种,都要学习如何使用调试器。

Node.js的

您还应该知道,您不必在浏览器中测试Javascript逻辑:您可以使用 node.js 将其用作任何其他脚本语言。

答案 1 :(得分:3)

作为一名经验丰富的程序员,这里是JS lib生产应遵循的步骤。

     
  1. 将UI与应用程序逻辑分开。在这种情况下,为应用程序逻辑创建一个与所有API访问完全分离的组件。应该分离出API访问,即DOM和WSH以及Node.js。我甚至使用不同的文件强制并确保分离。
  2. 创建用于访问逻辑的UI环境。拥有一个生产UI控件供您的受众访问,并为您的沙盒开发提供单独的内部UI控件。例如,我已经在http://prettydiff.com/编写了我的应用程序,可以从命令行和浏览器中进行操作。我还为应用程序访问编写了类似于已发布HTML的访问方法,但对于我自己开发的更快速的单元测试也有所不同。在沙盒UI中,可以使用递归的setTimeout来间隔刷新页面,以便在编写和保存代码时自动进行测试计划验证。
  3. 关注可用性和分发。人们可以直接从我的网站,Github和NPM for Node获取我的库。我有一个规范的过程,我在生产版本中将代码上传到网站,然后在浏览器中执行快速验证。如果发布没有破坏应用程序,则推送到Github,然后将这个完全相同的位置推送到NPM。
  4. 对代码操作的分布式访问甚至更好。在网上快速甚至自动访问库,但能够通过请求访问单元测试更好。我可以通过直接访问代码示例来远程单元测试我的应用程序代码,方法是通过URI告诉我的应用程序请求代码示例。这意味着我的静态代码不仅可用于分发和测试,而且它的操作也是如此。
  5. 好的文档就是一切。如果文档很薄,我甚至都不会费心去检查lib。我不是在谈论代码注释,尽管这些很重要。我在谈论最终用户文档。我希望能够阅读文档并了解有关该主题的所有内容。 Node.js变得很受欢迎,因为即使在代码库稳定之前,它的文档也会受到启发。在QA您的代码之前,让其他人来QA您的文档。如果没有令人惊叹的文档,你的lib对我来说就毫无价值。
  6. 了解你的使命。每一个lib都应该有一个清晰,简单,明确的目的。如果没有建立,则lib尚未准备好发布。如果增强功能混淆了lib的用途,那么可能是时候将一个库分成多个较小的库。注重精确性,清晰度,直接性,以及唯一的lib任务。
  7. 独立对于采用至关重要。我不喜欢依赖于其他库或框架的库。很棒的是你的jQuery库可能是切片面包以来最好的东西,但我不会看它。独立性意味着更高的可移植性和自由度,并将其与您不了解的其他库相匹配。
  8. 风格很重要。这是一个敏感的主题,但风格很重要。保持lib中的逻辑尽可能简单和声明。如果您的代码本质上是绝对声明的,那么您的算法模式非常棒。避免使用 new 关键字,除非您是经验丰富的JavaScript badass并严格限制使用关键字,因为它将在以后的维护操作中失败。不要通过算法来构建具有串联的大字符串,并不断观察代码的执行速度。因为即使是对样式的微不足道的改变或对逻辑的看似微小的增强也会破坏执行效率,我在所有UI控件上都放了一个计时器。在您的开发中使用分析器,例如Chrome的Web工具来跟踪JS执行中的长时间操作。
  9. 对您的失败保持开放。软件永远不会完美,其他开发人员将始终尊重这一点。如果您遇到任何其他人之前的错误,那么请关注该错误的存在。如果解决方案需要一周以上的时间,请不要延迟通知。立即通知您的用户,以便他们了解。我最近回滚了对diff算法逻辑的一个重大改进,因为额外的单元测试显示出严重的滑点。我退回的同一天我做出了一个或多个先前版本的决定是有缺陷的并且对回滚持开放态度。如果您希望人们为您的代码库做出贡献或提供错误报告,那么开放性至关重要。

答案 2 :(得分:2)

我知道你可能已经明确表示你并不是指单元测试,但这正是我建议你编写javascript库的方式。

如果您是Java开发人员,您可能熟悉jUnit。如果是这样,qUnit对您来说可能更自然。否则,我建议您查看JasmineMocha。虽然我更喜欢Mocha,但由于令人敬畏的Jasmine-Jquery plugin,我在浏览器开发方面的体验通常更好。

如果您正在编写qUnit测试,请查看IntelliJ IDE,除了提供代码覆盖之外,还可以执行测试。

如果您要在浏览器上进行开发,请查看LiveReload。它会为您监视文件并自动刷新您的浏览器 - 非常适合即时反馈。

对于浏览器兼容性,我建议您在担心其他人之前先让它合理地开始工作。不时检查您是否发现问题。看看jQuery是否可以为你抽象一些混乱。否则,请查看Adobes BrowserLab