我希望将JS代码片段从PHP文件中分离出来,单独放置在它们自己的文件中,以便使代码更加清晰易于维护。例如,我有以下函数:
function load_script($fieldname)
{
return
'var help = function () {alert(' . '"EDITOR HELP:\n\n' .
'blah blah.\n\n' .
'more blah blah.\n\n' .
');}' . "\n" .
'var options = { handler: help, title: "Editor help" };' . "\n" .
'var converter = Markdown.getSanitizingConverter();' . "\n" .
'var editor = new Markdown.Editor(converter, "-'.$fieldname.'", options);' . "\n" .
'editor.run();' . "\n";
}
请注意PHP变量$fieldname
。
这个想法是将JS部分存储在.js文件中。然后,我会将其作为纯文本读取,以便在返回语句中输出。换句话说,就像这样:
function load_script($fieldname)
{
$output = file_get_contents("load_script.js");
return $output;
}
显然,问题在于这不会用相应的值代替
$fieldname
。我目前的想法是通过字符串替换来运行$output
:function load_script($fieldname)
{
$output = file_get_contents("load_script.js");
$output = str_replace("some_unique_identifier", $fieldname, $output);
return $output;
}
有没有更好的方法?
编辑:
我应该补充一些背后的动机:
首先,所提供的示例很丑陋,除了最简单的JS片段外,很难维护。容易出错。
第二,当您以这种方式混合时,编辑器在检查语法和高亮方面并不是很有帮助。
第三,将JS独立到自己的文件中使得运行缩小整个站点的缩小脚本变得更加容易(因此您不必手动维护缩小)。
<?php $name = "Miles O'Brien"; ?> var x = '<?php echo $name ?>'
。糟糕,字符串没有结束标记。仅因为一个值没有问题,并不意味着所有值都不会出现问题。调用json_encode只是微不足道的开销,可以保证您不会破坏JS代码。 - Marc B