在开发复杂的Javascript应用程序时,可以使用多个.JS文件吗?
它来自C#背景,每个类(最佳实践)都存储在自己的单独文件中,这使得开发非常干净。我过去从未用Javascript编写过任何复杂的东西,但我现在开始学习HTML5,我想用HTML5画布编写一个复杂的游戏 将我所有的函数和代码放在一个.js文件中似乎非常混乱。有没有一种方法可以将其拆分,或者有一种工具/IDE可以让您使用单独的文件进行开发,并将它们编译成一个单独的文件进行部署 我想我正在寻找一些最佳实践建议。像这样的问题通常都会被解决,因此以下是我的一些具体问题,这些问题需要遵守常见问题解答,这些问题需要实际的、可回答的问题:在开发复杂的Javascript应用程序时,可以使用多个.JS文件吗?,javascript,html,standards,Javascript,Html,Standards,它来自C#背景,每个类(最佳实践)都存储在自己的单独文件中,这使得开发非常干净。我过去从未用Javascript编写过任何复杂的东西,但我现在开始学习HTML5,我想用HTML5画布编写一个复杂的游戏 将我所有的函数和代码放在一个.js文件中似乎非常混乱。有没有一种方法可以将其拆分,或者有一种工具/IDE可以让您使用单独的文件进行开发,并将它们编译成一个单独的文件进行部署 我想我正在寻找一些最佳实践建议。像这样的问题通常都会被解决,因此以下是我的一些具体问题,这些问题需要遵守常见问题解答,这些问
- 复杂的JS开发通常涉及到单个JS文件中的所有代码吗?你在写《太空入侵者》,你有spaceinvaders.js还是ships.js、logic.js等等
- 可以拆分JS(无论是使用多个脚本标记还是预编译到单个JS文件)还是将其全部放在单个文件中
- 行业标准是什么?HTML5规范有什么建议吗
- 当然,您可以使用多个javascript文件。库还希望使用jQuery或Knockout函数吗
不过,要记住的一件事是,要让页面感觉快速,您需要做的一件事是减少每页加载的http请求总数。添加一组单独加载的javascript文件会导致对每个额外文件的额外请求。因此,您可能希望为您的构建尝试一个系统,该系统将javascript文件缝合到一个项目中,以便在部署时使用。有许多解决方案会自动地为你做这件事。 < P>你可以考虑使用Realjs-一个非常好的库来将你的JavaScript分割成模块。 它还提供了一个工具,您可以将所有模块“组合”到一个文件中。有两种可能的方法。 就个人而言,我会使用构建工具来简化处理多个文件的工作 使用构建工具 咕噜声 我最喜欢的工具是。使用grunt,您可以在任意数量的文件中进行开发,并使用其插件,并在保存时自动对其进行压缩。您可以做更多的工作,但这是基本的用例,可能对您有所帮助 Grunt需要并且需要一些时间来设置。但是,一旦您准备好了
Gruntfile
设置,它将真正加快您的开发过程
为了使您的项目为生产使用做好准备,您还可以通过一些配置和单个命令来缩小脚本
许多主要的javascript库都在使用grunt,根据它们的GrunFile
::等,很容易识别
Grunt也是开发工具集的一部分
早午餐
是另一个构建工具,它允许您执行与grunt类似的操作
仅加载所需的文件
如果您正在开发一个巨大的单页应用程序,并且担心应用程序的启动时间,那么单个文件可能不是最佳解决方案。在这种情况下,您可以使用javascript模块加载器
Require.js
因此,这是一个非常适合。它只允许您在当前页面上加载实际需要的文件。尽管设置require.js比设置grunt要多一些。您可以使用任意数量的
javascript
文件。只需在html
代码中添加指向它们的链接:
<body style="background-color: black" onload="main();" >
<!-- Your HTML body contents -->
<!-- Your scripts (here, I used HTML5 BoilerPlate to setup, and the links to jquery are provided) -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')</script>
<script src="js/main.js"></script>
</body>
或jQuery文档就绪回调:
$(document).ready(function() {
//here is a good spot to hookup other jQuery listeners
});
您可以在单独的文件中编写JS,但在部署时,将所有JS缩小到一个文件中更有效。对于加载到浏览器中的每个脚本,您都会往返到服务器,因此将这些脚本最小化是有意义的。有很多单独的文件,但是它们都打包成一个文件进行部署。啊,谢谢-我应该用JQuery作为例子!如果我能弄清楚多人是如何工作的,它可能会回答我所有的问题。干杯。可能重复:JQuery只是一个文件。在我看来,这太棒了,因为我只需一个脚本标签就可以获得所有这些功能。但从开发人员的角度来看,如果整个JQuery都在一个文件中,这将是一场无法管理的噩梦,不是吗?我无法想象我的C#应用程序都在一个文件中。@SLC:正如我上面所说的,看看github上的jquery。他们没有将其开发为单个文件。@SLC演示了我的两个观点:jQuery只有用,因为您可以从其他javascript文件访问jQuery对象。这证明了这是可能的(而且很容易)。这也证明了我的建议:您需要一种将复杂的javascript产品缝合到单个结果中的方法。非常好,谢谢。我将调查其他人建议的工具,他们已经回答了这个问题,这应该让我开始写一些东西
jQuery
实际上也在使用grunt
。看看他们的It是什么,同时它简单易懂,而且是模块化的。答案很好!帮了很多忙!grunt如何处理文件之间的公共和私有变量?
$(document).ready(function() {
//here is a good spot to hookup other jQuery listeners
});