Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript库开发_Javascript - Fatal编程技术网

JavaScript库开发

JavaScript库开发,javascript,Javascript,我是一名java程序员,几个月前,我发现了使用javascript和html进行前端编程,这绝对是很酷的。这是一个js新手的问题 javascript库开发是否有IDE、默认工作流或最佳实践?我不是指覆盖和单元测试之类的东西。我的意思是,例如,在使用一些js逻辑开发html控件时,我应该使用哪些工具或技术?我应该在文本编辑器中编写一个小的测试页面,并在十几个浏览器中打开它,每分钟按F5键并在浏览器控制台上观看,还是应该有一个神奇的IDE,它将按按钮重新加载所有浏览器实例并从浏览器收集报告 Jav

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

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

JavaScript基础 确保你懂这门语言。JavaScript在这方面有点棘手:您可以很容易地认为自己理解该语言,但有些奇怪的事情可能会悄悄地出现在您身上。我强烈推荐Douglas Crockford的JavaScript:The Good Parts。他在Youtube上也有一些同名的谈话,绝对值得一看

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

避免F5 退房:

只需包含Live.js,它就会监控当前页面,包括 通过将连续的HEAD请求发送到 服务器。对CSS的更改将动态应用,并使用HTML或 Javascript更改将重新加载页面。试试看

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

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

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

如果您是Java开发人员,您可能熟悉jUnit。如果是这样,对你来说可能更自然。否则,我建议你看看或。虽然我更喜欢摩卡咖啡,但我对茉莉花的体验在浏览器开发方面通常会更好,这要归功于它的出色表现

如果您正在编写qUnit测试,请查看除了提供代码覆盖率之外,还允许您执行测试的功能

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


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

作为一名经验丰富的程序员,以下是制作JS库应遵循的步骤

  • 将UI与应用程序逻辑分离。在本例中,为应用程序逻辑创建一个组件,该组件与所有API访问完全分离。API访问,即DOM、WSH和Node.js,应该分开。我甚至使用不同的文件来强制和确保分离
  • 创建UI环境以访问您的逻辑。有一个生产UI控件供观众访问,还有一个单独的内部UI控件供沙盒开发使用。例如,我在编写应用程序时,使用命令行和浏览器。我还编写了应用程序访问的访问方法,类似于已发布的HTML,但不同于我自己的开发,以便进行更快速的单元测试。在沙盒UI中,当您编写和保存代码时,可以使用递归setTimeout来每隔一段时间刷新页面,以进行自动测试计划验证
  • 关注可用性和分发。人们可以直接从我的网站、Github和NPM for Node获取我的库。我有一个严格的流程,在生产发布期间将代码上传到站点,然后在浏览器中执行快速验证。如果该版本没有破坏应用程序,则推送到Github,然后将这个完全相同的位置推送到NPM
  • 对代码操作的分布式访问甚至更好。在线快速甚至自动访问库是一件好事,但通过请求访问单元测试则更好。我可以远程单元测试我的应用程序的代码,通过URI告诉我的应用程序请求一个代码样本,直接在线访问代码样本。这意味着我的静态代码不仅可用于分发和测试,而且其操作也可用于分发和测试
  • 好的文档就是一切。如果文档不好,我甚至不会费心去检查lib。我不是说代码注释,尽管它们很重要。我说的是最终用户文档。我希望能够阅读文档并了解有关该主题的一切。Node.js变得很流行,因为即使在代码库稳定之前,它的文档也很糟糕。让其他人在对代码进行QA之前对您的文档进行QA。没有令人震惊的文档,你的库对我来说毫无价值
  • 了解你的使命。每个lib都应该有一个明确、简单、明确的目标。如果未建立该库,则库未准备好发布。如果一个增强混淆了库的用途,那么可能是时候将一个库划分为多个较小的库了。专注于精确性、清晰性、直接性,以及lib唯一声明的使命
  • 独立性对采用至关重要。我不喜欢依赖于其他库或框架的lib。您的jQuery库可能是自slice bread以来最好的东西,这很好,但我不会这么做