编写Javascript / jQuery的最佳方法

时间:2012-01-28 20:58:33

标签: javascript jquery html5

我对网络开发并不陌生,但我只是想知道你们是否有一些建议让我改进:

总是当我写js或jQuery时,我在我页面的<head>上写下这样的所有代码:

<script>
$(document).ready(function() {

   //All my functions and animations goes here…

});
</script>

现在,当我环顾网络时,我发现大多数人的功能和动画都在一个单独的&#34; .js&#34; -file中。他们经常创建课程。

这是如何工作的?创建类并将函数放在单独的文件中有什么好处?

谢谢,VG

5 个答案:

答案 0 :(得分:6)

将您的javascript放入单独的文件中的优点:

  1. 重复使用多个页面 - 您可以更轻松地在多个页面上重复使用相同的javascript函数,而无需拥有多个单独的代码副本。
  2. 更高效的缓存 - 浏览器可以更有效地缓存您的javascript,从而加快页面加载速度。使用外部JS文件时,可以在首次使用时加载,然后从浏览器缓存中检索使用该JS文件的所有后续页面加载。
  3. 从HTML中分离代码 - 您可以更好地分离页面上不同类型的内容。可视化设计人员可以处理HTML,而软件开发人员可以使用javascript,但他们不能在完全相同的文件中工作。
  4. 注意:出于性能原因,您不希望拥有大量小的独立外部JS文件,因为加载大量小型JS文件需要的时间比一个较大的JS文件要长。

    将代码构建到类/对象中可以具有以下优点:

    1. 组织 - 它强制开发人员将代码组织成功能块,其中您拥有具有一组给定方法和属性的对象。对于除了一个简单的项目以外的任何东西,这是一个更简洁的方式或组织事情,而不仅仅是一个大的JavaScript函数列表。
    2. 封装 - 面向对象的设计使您可以将数据放入对象中,这些对象更清楚谁拥有数据,谁修改数据,生命周期是什么以及修改数据的方法。此外,一些数据可以封装在对象内部,因此只能通过所需的方法进行修改(不能直接修改)。
    3. 测试 - 为组织成对象,方法和属性的代码编写测试套件要容易得多。
    4. 自我记录 - 组织成对象,方法和属性的代码通常更多的是自我记录的一长串程序。
    5. 模块化 - 通常更容易将面向对象的代码分解为可重用的模块,而不是以这种方式组织的代码。
    6. 可扩展性 - 通过子类和方法覆盖之类的东西,比直接的程序代码更容易扩展和增强良好的面向对象设计。
    7. 可维护性 - 由于上述所有原因,良好的面向对象代码可以更容易维护。
    8. 仅供参考,面向对象思维和设计的许多优点可以在不使用文字类(javascript甚至没有)的情况下找到。更多的是您设计和实现代码的方式,而不是特定的语言语法功能。例如,您可以在纯C中使用面向对象的设计,该设计没有类或对象的特定语言概念。在javascript中,许多语言元素都是具有可扩展属性和方法的对象,因此在javascript中进行面向对象设计更容易(事实上,很难避免这样做),因为周围已经存在对象(窗口对象,所有DOM对象等......)。

答案 1 :(得分:4)

将javascript代码放在单独的文件中的好处是,您不再混合使用标记(HTML是什么)和脚本。你有一个明确的关注点分离。同样代表CSS。样式进入单独的文件。结果,您的标记变得更小。 javascript是静态的,客户端浏览器正在缓存所有那些外部静态文件。因此,每次发出请求时,他们都不需要获取它。这样可以提高应用程序的性能,因为通过线路发送的数据更少。仅从服务器检索从页面更改的标记。

就将脚本组织成类和函数而言,这是为了更好的可读性和可重用性。当您处理包含大量JavaScript的大型项目时,最好将其拆分为单独的模块,以便团队中的不同开发人员可以更轻松地维护这些模块。

答案 2 :(得分:1)

将您的类拆分为不同的文件,使得其他项目的可维护性和可重用性更高。它只是让事情井然有序。

要注意......你不想拥有大量的文件,客户端必须下载!通常,服务器端会运行某些东西,将所有相关文件组合成一个下载。 PHP可以轻松地为您完成此任务。

答案 3 :(得分:0)

相当多的差异和更好的实践。但是,例如,你想将jquery函数放在另一个文件中,你可以编写一次代码。此外,它只会加载一次内容,从而提高您网站的速度。

答案 4 :(得分:0)

此外,实现js Object类有助于避免命名空间与变量&amp;功能名称......总而言之,在我看来,这是一个很好的实践。