我在javascript文件中使用了一些PHP。我也在使用minify库(https://code.google.com/p/minify/)来缩小样式表和javascript。 我将script.js的请求重写为script.php,并在script.php中执行此操作(代码是抽象的,所以没有任何意义):
<?php header("Content-Type: application/x-javascript");
$var = 'hi'; ?>
$(document).ready(function() {
alert('<?php echo $var ?>');
});
当我直接请求script.js时,它可以工作。当我将它包含在要缩小的字符串中时,如下所示:
<script type="text/javascript" src="min/b=javascript&f=script.js"></script>
它给了我400个不好的请求。我在minify配置中设置了调试变量true。没有结果。这不可能吗?或者我做错了什么?我在这个主题上找不到任何其他问题。
答案 0 :(得分:1)
您应该将该变量与js代码分开发送,例如在配置json文件或html中的脚本标记等中... 之后,您的脚本将不依赖于php变量,因此它们将是静态且可修复的。
一些解释:
好的,首先。 Php在服务器机器上运行,javascript在客户端的浏览器上运行。这些是完全不同的机器和不同的平台。我希望你理解。
为了维护(开发,调试等)代码,我们必须组织它。 Mixin php和javascript代码使事情非常无组织。如果你想调试php功能,你想要读取PHP代码,而不是js代码,反之亦然。它被称为噪声代码,你的js代码中有php噪声或你的PHP代码中有js噪声。为了通过像html这样的简单语言来避免这些问题,我们使用模板,通过像javascript这样的复杂语言,我们应该创建一个应用程序接口,并且通过该接口应该是客户端js和服务器端php应用程序进行通信,发送数据等...这很好,因为它是受控制的,有组织的......等等,我们总是知道数据的来源,如果你想找到bug的来源或理解当前代码是如何工作的,这一点非常重要。通过这么大的代码它是无关紧要的,但是超过一百行你会感觉到差异......
你可以找到几个关于这个的问题,我想你应该读到这个: https://softwareengineering.stackexchange.com/questions/126671/is-it-considered-bad-practice-to-have-php-in-your-javascript
答案 1 :(得分:1)
从技术上讲,如果使用Minify_Source
对象而不是静态文件路径,则可以实现。例如。您可以使用PHP脚本的输出作为缩小的输入源。
文档has a section on this并提及其局限性。
如果您的脚本输出每个用户或频繁更改,您可能不想这样做。