2011-03-01 48 views
4

我正在研究一个有很多JavaScript的项目。我认为生成简单字符串并将它们放在“<脚本>”标记之间并不是实现它的最佳方式。PHP - 生成JavaScript

是否有更好的方法来生成JavaScript对象,函数,调用等?也许有些融合类(从PHP到JavaScript)或者我应该遵循的设计模式?

PS。如果它有任何相关性 - 我使用MooTools与MochaUI(与MochaPHPControl)。

在此先感谢您的帮助。

+4

代码生成是邪恶的。使用JSONP/Ajax进行数据传输并创建静态.js文件来处理数据。 – BGerrissen 2011-03-01 08:44:44

+5

为什么邪恶?有什么问题? – Ivan 2011-03-01 09:48:46

+2

+1为邪恶的问题......你可以exaplain为什么它是邪恶的? – Cleankod 2011-03-03 08:44:02

回答

10

最好的方法是将JavaScript看作PHP代码。

的基本步骤是:

  1. 创建一个重定向所有的JS文件(.js文件)的索引文件.htaccess文件。
  2. 在此索引文件中加载JS文件作为PHP模块(require "script/$file"
  3. 根据需要修改所有JS文件。现在你可以嵌入PHP代码。

例如,添加到您的.htaccess这一行:

RewriteRule \.js$ index.php 

在您的index.php文件装上去这样:

// Process special JS files 
$requested = empty($_SERVER['REQUEST_URI']) ? "" : $_SERVER['REQUEST_URI']; 
$filename = get_filename($requested); 
if (file_ends_with($requested, '.js')) { 
    require("www/script/$filename.php"); 
    exit; 
} 

最后,在您的文件。 js.php你可以嵌入PHP,使用GET和POST参数等:

<?php header("Content-type: application/x-javascript"); ?> 
var url = "<?php echo $url ?>"; 
var params = "<?php echo $params ?>"; 

function xxxx().... 
.... 

此外,一招跳过文件缓存添加一个随机数作为JavaScript参数:

<script type="text/javascript" src="scripts/file.js?a=<?php echo rand() ?>"></script> 

而且,说评论,如果你的网络服务器不允许修改.htaccess,你可以只要求直接的PHP文件:

<script type="text/javascript" src="file.php"></script> 
+0

我喜欢它!我的意思是我有很多库,它们通过连接字符串来生成JavaScript代码,过一段时间会变得混乱。但是,我可以用MVC中的View来解决这个问题。我会尽力的,谢谢! – Cleankod 2011-03-01 10:25:47

+1

你甚至不需要'RewriteRule'(并且一些主机不允许它)。只需使用header(“Content-Type:text/javascript”);',这就够了。 – Felix 2011-03-02 08:35:58

+0

@spyro:如果这是您正在寻找的答案,请将其标记为已接受。 Thx – Ivan 2011-03-02 09:29:32

2

您可能想要查看json_encodejson_decode

+0

我已经在使用它,但json_encode不会帮助内联函数,事件和类似的东西。 – Cleankod 2011-03-01 10:26:10

+1

@伊夫你评论了错误的答案,但谢谢:P。 @Spyro不,它不会。这只是在两者之间传输数据的一种方式,这就是您应该需要的一切。 – Felix 2011-03-02 08:37:35

4

我试图让我的服务器做一个API调用并将它嵌入在HTML的有JavaScript的过程中它不管你的回声当然要放的..

<?php 
// a_local_file.php 
Header("content-type: application/x-javascript"); 

echo file_get_contents('http://some_remote_script'); 
?> 

并用它来指代它在HTML ...

<script type="text/javascript" src="a_local_file.php"></script> 

API调用应该返回有效的JavaScript,否则加你需要使它有效的东西;这通常是使用API​​调用json的麻烦部分。条纹,修剪和其他字符串函数可能是有用的..但通常讨厌的外国字符渗透,并可以引发基于您的PHP设置的PHP错误。