2012-02-16 39 views
17

来自传统的OOP背景我最近开始学习更多关于JavaScript的知识。然而,有一件事我不太清楚:如何在多个文件中组织JS功能

在传统的OOP语言中,通常为每个类创建一个单独的文件,因为这样可以更容易地维护代码。 JS没有真正的类,据我所知,还没有一种真正的直接方法来从一个文件中包含另一个JS文件。但是,当您在一个大型JS项目上与团队合作时,您可能希望将该项目拆分为多个文件。这是如何完成的?你把这些文件放在哪里,你如何使它们正确加载?

回答

9

我爱你的问题。我写我的JavaScript非常面向对象,并保持我的对象构造函数在他们自己的文件。我把我所有的.js文件放到一个可以按我想要的方式组织到子目录中的目录中。然后我运行一个“make”脚本。以下是我写的Bash脚本。我在一台Linux机器上工作,因此对于任何在Linux中工作的人来说,Bash脚本是一种自然的解决方案。

#!/bin/bash 

echo '' > temp0.js 
find ./bin/external -name \*.js -exec cat {} >> temp0.js \; 

echo ''> temp1.js 
echo '(function(){' > temp1.js 
find ./bin/prop -name \*.js -exec cat {} >> temp1.js \; 
echo '})();' >> temp1.js 

cat temp0.js temp1.js > script.js 
rm temp1.js temp0.js 

请原谅我,如果这个bash脚本是业余的。我很乐意承认在bash脚本编写中,我只是一起攻击任何作品,但我喜欢我的JavaScript是干净整洁和面向对象的。

这个bash脚本进入一个名为“bin”的目录旁边,其中包含所有的javascript .js文件。在那里,子目录“external”包含各种借用的脚本,比如JQuery。在上面的示例中,我将自己的.js脚本放在名为“prop”的文件夹中。 bash脚本获取所有这些脚本并将它们连接起来。它还将我自己的prop文件封装在一个匿名函数中,为它们提供一个私有名称空间(sortof)。

我想这很明显,这不完全是你想要的 - Java - 但我认为这种选择是我们必须在JavaScript中做的。

+1

我真的很喜欢这个解决方案!这也是我得到的最完整的答案,非常感谢! – Tiddo 2012-02-17 23:56:38

1

您可以按照您喜欢的任何逻辑方法对文件进行分组。通常情况下,它是通过功能完成的 - 该文件可以激活徽标,该文件可以实现主页幻灯片放映功能,该文件处理导航栏下拉菜单。我想你通常会把你的团队分解成一个类似的组织,每个人都负责一个特定的功能。除此之外,源代码控制管理就像任何其他项目一样工作,在这些项目中用户必须检查或提交代码。

4

JavaScripts原型模型非常符合OOP,您可以随意在尽可能多的文件中分解代码。有几种不同的加载依赖关系的方法,RequireJS是一种流行的方法。

2

您必须以任何适合您项目的方式来细分代码。

至于如何包含脚本,这是更困难的。最简单的方法是只包括多个JavaScript文件,按顺序从HTML(<script src="..."></script><script src="..."></script>)呼吁或依赖管理者或类似YepnopeRequireJS负载脚本..

不过,如果你想只包括一个脚本从您的HTML,您可以连接文件(使用构建脚本Ant或类似的东西)或黑客使用Javascript来包括其他脚本,如描述在这里:How do I include a JavaScript file in another JavaScript file?