JavaScript library development

JavaScript library development

本文关键字:development library JavaScript      更新时间:2023-09-26

我是一名java程序员,几个月前我发现了使用javascript和html进行前端编程,这非常酷。这是一个js新手的问题。

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

JavaScript基础知识

确保你懂这门语言。JavaScript在这方面有点棘手:你可以很容易地认为你理解这种语言,但也有一些奇怪的事情会悄悄出现在你身上。我强烈推荐Douglas Crockford的《JavaScript:好的部分》。他在Youtube上也有一些同名的演讲,绝对值得一看。

JSLint

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

避免F5

查看live.js:

只需包含Live.js,它就会监视当前页面,包括通过向服务器对CSS的更改将动态应用,HTML或Javascript的更改将重新加载页面。试试看!

浏览器开发工具

熟悉他们。与Firefox/Firebug相比,我个人更喜欢Chrome的开发工具,但无论你选择哪种,都要学习如何使用调试器。

Node.js

您还应该注意,您不必在浏览器中测试Javascript逻辑:您可以使用node.js.

将其用作任何其他脚本语言

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

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

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

如果你是一名Java开发人员,你可能熟悉jUnit。如果是这样的话,qUnit对你来说可能更自然。否则,我建议你看看茉莉花或摩卡。虽然我更喜欢Mocha,但由于Jasmine Jquery插件很棒,我对Jasmine的体验通常更适合浏览器内开发。

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

如果您正在浏览器上进行开发,请查看LiveReload。它将为您观看文件并自动刷新浏览器,非常适合即时反馈。

对于浏览器兼容性,我建议你在担心其他浏览器之前,先合理地使用它。不时进行检查,看看是否发现问题。看看jQuery是否能为您抽象出一些混乱。否则,请查看Adobes浏览器实验室。