我的项目似乎变得越来越大,我的一些课程长达数千行。每次我想要进行更改时,都很难搜索它们。
我发现JavaScript并不像其他一些编程语言那样简单明了。因此,当课程变成几千行时,我就会有阅读它的麻烦。
我已经尝试将它分成多个文件,但是然后你就分开了,这似乎不对。例如,如果类中的每个方法都使用全局变量,那么您只能在该类的一个文件中找到全局变量。
另外,如果我想使用来自100个不同.js文件的JavaScript代码,我最终会得到类似的内容......
<script type="text/javascript" src="Scripts/classes/Node.js"></script>
<script type="text/javascript" src="Scripts/classes/Queue.js"></script>
<script type="text/javascript" src="Scripts/classes/DblyLinkedList.js"></script>
.... 97 more lines like this
虽然,我认为可能会有一些我可以做的事情......
<script type="text/javascript" src="Scripts/.../*.js"></script>
或类似的......是吗?
任何人都有任何关于管理代码的提示,因为它达到极端?
有关清理JavaScript代码的提示也会有所帮助。
答案 0 :(得分:2)
将JS分解为单独的文件有一些主要的缺点,主要是因为你强迫网络浏览器为每个文件单独发出请求。
您是否已将所有文件分开,但为每个仅包含必要文件的项目制作单个文件“捆绑”?这可以通过脚本自动完成。
此SitePoint文章可能会帮助您入门:http://www.sitepoint.com/blogs/2007/04/10/faster-page-loads-bundle-your-css-and-javascript/
答案 1 :(得分:1)
<script>
标签
脚本每个都只是拉入
几个“下层”的。哦,而且,当然,虔诚地将一切都置于一个良好的变革控制系统(SVN,Mercurial等)之下,否则你的生活肯定会非常痛苦: - (。< / p>
答案 2 :(得分:1)
您可能希望将相关类组合在一起打包到包中,其中每个包都是一个文件。查看YSlow有关效果的最佳做法。
答案 3 :(得分:0)
嗯,一个好的编辑器总是很有用,因为它会为你提供文件中定义的所有函数的快捷方式。
其次,请确保您没有查看代码墙。缩进,空格和换行是一个很好的帮助。
你的缩进非常严格。 2个空格是2个空格,总是(或者你使用的任何数量)
如果你把你的{置于声明之下,那么总是把它放在那里,毫无例外)
有关如何对齐文本的明确规则将有很大帮助。
我不知道最后一件事......我不确定浏览器是否可以使用这种通配符。
答案 4 :(得分:0)
<script type="text/javascript" src="Scripts/.../*.js"></script>
不起作用,此外,在分割相关文件时,您最终会遇到一个有趣的问题,因为您无法保证它们将按照您预期的顺序下载。
不幸的是,你最好的选择是一个很好的IDE,可以生成一个便于导航的大纲。我将Eclipse与Spket和/或Aptana一起使用,但无论如何管理都是您正在寻找的。 p>
编辑:关于将js拆分为多个文件的更快速说明。尽可能避免使用它。每个单独的文件表示单独的http请求。减少所需的请求数量可能会对站点性能产生巨大影响。
答案 5 :(得分:0)
AvatarKava的建议是合理的。在单独的文件中工作并在构建时连接它们。但是,我还建议你看看你的班级结构。一个“数千行长”的课程听起来不太健康。你确定你的课程没有承担太多的责任吗?是否没有任务可以运送到其他单一责任类?这有助于提高代码的清晰度,远远超过分析文件的方法。
答案 6 :(得分:0)
同样的建议适用于大多数语言......
尽可能避免使用全局变量。您通常可以通过包装静态变量或使用对象来获得所需的行为。
if (foo == undefined)
var foo
尽可能使用命名约定,这样您只需通过读取变量或函数名称即可跟踪事物。无论是使用grep还是使用grep,或者使用intellisense获得IDE。
将东西拆分成目录。在名为“classes”的目录中有100个文件是没有用的。例如,您可能有队列,列表,树等的集合目录。如果您有很多,您甚至可能有一个树子目录或列表子目录等。 然后,您还可以为该目录创建一个全局包含...只是一个名为collections.js的文件,其中包含该目录中的所有文件。当然,你必须小心分解,因为你不想包含你永远不会使用的文件。