我正在寫一個js文件並在頁面加載時執行它們的PHP項目。動態創建和加載JS
動態編寫JS文件並將腳本標籤附加到頁面html並僅執行每個頁面請求是否是一種好的做法?
這是我的工作創建和鏈接JS文件:
<?php
if (!function_exists('setScript')) {
function setScript($script = null)
{
static $_script = array();
if ($script == null) {
return $_script;
$_script = array();
} else {
$_script[] = $script;
}
}
}
if (!function_exists('linkJs')) {
function linkJs($controllerName, $actionName)
{
$jsFileName = randomString(40) . '.js';
$folderName = PUBLIC_DIR . DS . 'generated';
if (!is_dir($folderName)) {
mkdir($folderName);
chmod($folderName, 777);
}
$fileName = $folderName . DS . $jsFileName;
$availableFiles = scandir($folderName);
unset($availableFiles[0]);
unset($availableFiles[1]);
foreach ($availableFiles as $file) {
$file = $folderName . DS . $file;
if (is_file($file)) unlink($file);
}
$script = "$(document).ready(function() {\n" . implode("\n", setScript()) . "});";
file_put_contents($fileName, $script);
$url = loadClass('Url', 'helpers');
return "<script type='text/javascript' src='" . $url->baseUrl() . 'public/generated/' . $jsFileName . "'></script>";
}
}
if (!function_exists('alert')) {
function alert($message, $returnScript = false)
{
if (isAjax()) {
if ($returnScript) {
return "\nalert('$message');\n";
}
echo "\nalert('$message');\n";
} else {
setScript("\nalert('$message');\n");
}
}
}
請建議,如果這是這樣做的一個很好的做法或任何其他方式,我可以做到這一點。
約30-40位用戶將同時登錄到網站,每秒約有5-10頁的請求。 (這些是預測,可能會變高)。
正在寫js文件(到硬盤驅動器)並鏈接它是一個好習慣,或者只是將原始腳本添加到html主體是一個很好的做法,因爲寫入js文件會使js不受干擾。
此外,生成的JavaScript將是動態的,可能爲每個頁面請求。
好吧,這取決於腳本的動態性。如果他們改變很多:是的,這會起作用。否則,我通常會將它們放入由瀏覽器加載並存儲在緩存中的單獨文件中。但是,如果JS改變很多,這意味着你的緩存每次都必須刷新,這要比頁面本身更長。所以......這取決於你的JS的動態。 – Tularis
yes @Tularis,腳本將變得非常動態 – Guns
Aside:不是'return'alert('$ message');「;',你應該使用$ json_message = json_encode($ message);返回「警報($ message);」;'。 – DCoder