2011-06-10 111 views
1

的JavaScript文件,我想用在包含PHP代码例如像JavaScript文件的YUI压缩机:使用YUI压缩机上包含PHP

<?php $include 'headerDefinitions.js.php'; ?> 
function hello(name) { 
    alert('Hello ' + name); 
} 
hello('<?= $_GET["name"] ?>'); 

这通过锐压缩机这样的运行时,显然会引发一些错误:

java -jar yui-compressor.jar --type js -o target-file.js.php source-file.js.php 

因为压缩器假设连PHP部分都是JavaScript。有没有办法在保留和忽略PHP部件的同时压缩JavaScript?因此,上面的示例结果如下:

<?php $include 'headerDefinitions.js.php'; ?>function hello(a){alert('Hello '+a)}hello('<?= $_GET["name"] ?>'); 
+0

'hello('<?= = $ _GET [“name”]?>');' - 告诉我这只是一个笑话。 – kapa 2011-06-10 13:43:11

+0

这只是一个不是真实世界代码的例子。 – acme 2011-06-10 13:46:05

+0

然后所有的使用可以睡得很好:)。 – kapa 2011-06-10 13:48:19

回答

0

要回答自己:

jiggys回答的JavaScript PHP分离可能是最干净的,并应遵循时可能。但有时这是不可能的。就我而言,我无法花费大量时间来划分PHP和JavaScript(这是一个古老而又大的项目)。与/*!开始

总之,YUI压缩机不剥离的JavaScript注释,所以关键是要围绕在这样的注释块PHP代码:

/*! 
<?php $include 'headerDefinitions.js.php'; ?> */ 
function hello(name) { 
    alert('Hello ' + name); 
} 
hello('<?= $_GET["name"] ?>'); 

这就是全部。在浏览器中查看时会有一个空的注释块,但可以忽略它或填充一些版权信息。

的JavaScript字符串中的PHP代码,不需要进一步的关注,因为它们(显然)在压缩过程中保持不变:

var myString = '<?= $_GET["name"] ?>'; 

并不需要进行修改。您只需注意不要在PHP代码中为JavaScript字符串声明和字符串使用单引号或双引号。

3

它不起作用。您应该在plain .js文件中定义所有函数,然后在您的PHP页面上进行任何动态值或函数调用。除了允许压缩之外,它还允许您的.js文件被浏览器正确缓存。