2011-06-10 72 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文件被瀏覽器正確緩存。