使用.php扩展名创建javascript文件

5
我一直在单独的.js文件中编写JavaScript函数。在我的最后一个项目中,JavaScript文件的数量更多,因此页面加载速度较慢,因为请求数量更多。因此,出于实验目的,我将几个.js文件转换为.php文件,并添加了包含语句。这样加载时间性能更好。在.php文件中编写JavaScript有很多优点。我可以访问php变量并轻松地将它们传递给JavaScript。

我的疑问是,在.php文件中编写JavaScript并包含它们是否有任何缺点?

我的理解是,当页面加载时,它调用JavaScript文件并同时执行php部分。因此,我们编写onload函数。

3个回答

9

如果你想在服务器端使用PHP将多个Javascript文件编译成一个文件,可以按照以下方式操作:

<?php
// script.js
header('Content-Type: text/javascript'); // Tell browser to treat file as Javascript

$files  = array(
    'script-1.js',
    'script-2.js',
    'script-3.js'
);

foreach($files as $file){
    // Import each file
    echo file_get_contents($file).PHP_EOL;
}

然后,在您的页面中,只需像引用JavaScript文件一样引用该文件:
...
<script src="script.php"></script>
...

谢谢@Adam。这是一种很好的合并文件和使用它们的方法。+1 - Abhishek Saha

3
大多数浏览器可以使用两个或更多的并行连接来加载资源。因此,将JavaScript放在单独的文件中可能允许浏览器充分利用所有连接。您应该尽可能晚地在HTML中包含<script>标签,以便页面的内容在任何JS开始加载之前就被写入。
使用PHP的一个优点是可以压缩JS文件以减小其大小。
如果JavaScript文件的大小很小,比如小于100 KB,则在一个PHP脚本中包含多个文件可能会更快。但是,如果JavaScript文件较大,例如500 KB,则将它们保持分离可能更快。
实验和调整将帮助您找到答案。这里没有通用的真理。

关键在于实验。并行下载的好处与作为一个文件提供服务的好处取决于这些文件的大小。 - Brad
同意你的观点。这个问题没有确定性的解决方案。gzip是一个不错的方法。我不知道浏览器提供了同时连接。谢谢。+1 - Abhishek Saha

1
从php中加载js文件的问题是会使响应大小增加,因此您的页面在浏览器上渲染会变慢。另一方面,如果浏览器加载js文件,则浏览器会为js文件发送不同的请求,因此如果不想初始页面加载变慢,请勿将js放在php中。
如果您想加快js文件的加载速度,请执行以下操作:
  1. 使用javascriptCompressorjsmini等工具对所有js文件进行缩小
  2. 将这些缩小的文件放在其他支持cdn的服务器上,您可以在一些免费的cdn上免费托管您的文件,从cdn加载始终更快且浏览器可以同时下载多个文件

  3. 从google cdn url或相应网站加载jquery或其他库文件 使用到期标头让浏览器长时间保存您的js文件,以便它不会在每个请求上加载

如果遵循这些技术,您的页面将加载更快。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接