为什么要使用外部javascript?

为什么要使用外部javascript?,javascript,Javascript,使用外部javascript文件的优点是什么?我就是搞不懂,我看到很多大网站都在使用它们,而不是服务器端包含。它只是为了缓存吗 如果这是一个干净的代码和关注点分离的问题,那么您仍然可以将其从服务器端包含到html中。例如,我使用SMARTY,可以将文件{include file='javascript.js}包含在标记中。 如果是为了性能,我只能看到一个额外的http请求,使得外部文件速度变慢。我肯定我错过了一些东西,因为所有的大网站都在这样做 是因为缓存文件吗?我的Java脚本是动态的,无论如

使用外部javascript文件的优点是什么?我就是搞不懂,我看到很多大网站都在使用它们,而不是服务器端包含。它只是为了缓存吗

如果这是一个干净的代码和关注点分离的问题,那么您仍然可以将其从服务器端包含到html中。例如,我使用SMARTY,可以将文件
{include file='javascript.js}
包含在
标记中。 如果是为了性能,我只能看到一个额外的http请求,使得外部文件速度变慢。我肯定我错过了一些东西,因为所有的大网站都在这样做

是因为缓存文件吗?我的Java脚本是动态的,无论如何都不应该缓存

有人能帮我做出正确的决定,选择如何处理我的javascript文件吗


ps:1.5K用户能否为外部javascript创建标记?

最重要的是,该文件由浏览器缓存。需要从服务器发送的字节越少越好。这是web性能的重要组成部分

其次,它提供了模块化


我不知道为什么你的JavaScript是动态的,但我建议你重写它,以消除这种需要。这本身可能是您今后的一个问题。

它们还帮助开发人员分离代码的不同概念区域。在一个文件中,除了复杂的html之外,看到成百上千行的js会让人非常恼火。

在没有缓存的情况下,因为整个javascript文件都是动态生成的,所以内联可能更优越。它为您节省了HTTP开销


来源:

除了@Gabriel所说的,它还可以帮助你在不同的页面中使用相同的功能,而不需要它们(.html文档)变得更大。

这就是为什么有服务器端包含的原因。不,我不是说SSI,而是字面上的服务器端包含,在我使用SMARTYbecause的例子中,我使用AJAX技术,并且代码在每种情况下都必须有所不同。我不想因为模块化而将JavaScript代码放在所有事情上。使用AJAX并不是动态JavaScript的理由。如果代码在不同的情况下必须不同,那么应该修改函数以避免这种情况。脚本应该是模块化的。想想OOP,这就是为什么我的javascript是动态的,php根据页面使用正确的语法创建它。原因很复杂,因为这是从旧框架到新框架迁移项目的一部分。如果您需要不同页面的不同语法,那么您就有机会重写您的函数。或者将其拆分为多个函数,或者编写更通用的函数,或者使用更多参数。动态JS的一个原因可能是平台的“独立性”。例如,我参与的一个大项目运行在几个不同的环境中(开发、分段、生产)。后端的变量从服务器脚本传递到JS中。也就是说,这些只是实现更大JS插件的小块,这些插件都被编译成一个大文件以提高性能(跨多个站点请求缓存)。我想说,对于一个只有一页的应用程序/站点,使用JS内联可能会更好地提高性能,这完全取决于用户刷新页面的频率。