当JS需要PHP变量时,如何从PHP中分离javascript?

Jas*_*vis 8 javascript php jquery

下面是我用jquery和PHP看到的代码中的一小段代码.

注意第5行的PHP部分,我通常把我的javascript放到单独的文件中,这样我怎样才能将我的JS保存在单独的文件中,但是在需要时仍然使用PHP,如下所示?

//when the DOM is ready  
$(document).ready(function(){  
    //settings on top  
    var domain = 'http://davidwalsh.name/';  
    var initialPosts = <?php echo get_posts(0,$_SESSION['posts_start']); ?>;  
    //function that creates posts  
    var postHandler = function(postsJSON) {  
        $.each(postsJSON,function(i,post) {  
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 10

我通常做的是:

  • 尽可能多地将JS放在.js文件中(用于客户端的缓存以及所有这些)
  • 这个JS代码使用JS变量
  • JS变量是从PHP文件声明/初始化的; 实际上,这是您需要在服务器端执行某些代码的唯一部分

例如,我想有类似的东西,我想:

my-file.php:

var thisIsMyJSVar = '<?php echo $test; ?>';
Run Code Online (Sandbox Code Playgroud)

因此,在PHP中,我们声明变量并设置其值.这是"动态"部分.

并且,在my-file.js中:

//when the DOM is ready  
$(document).ready(function(){  
    //settings on top  
    var domain = 'http://davidwalsh.name/';  
    var initialPosts = thisIsMyJSVar;  // Use the JS variable declared in the PHP file
    //function that creates posts  
    var postHandler = function(postsJSON) {  
        $.each(postsJSON,function(i,post) {
Run Code Online (Sandbox Code Playgroud)

在这里,在静态JS文件中,我们只使用该值; 这里没有什么是动态的,这个文件可以被客户端缓存 - 不能在每个页面上重新下载.


这个想法的问题是JS文件依赖于在PHP文件中完成的一些初始化:-(

所以,在JS文件中有一个"默认值"可能是个好主意,以防万一......


此外,你必须有一个很好的命名约定,没有几个文件使用/声明/取决于相同的JS变量; 实际上,将所有"配置变量"放在一个javascript对象中,不污染全局命名空间可能是一个好主意......