代码之家  ›  专栏  ›  技术社区  ›  dreftymac

清除指向PHP生成的javascript和css的链接

  •  2
  • dreftymac  · 技术社区  · 15 年前

    背景: 当用PHP或任何类似的东西生成HTML内容时,可以在标记中封装到javascript和css的链接,而不必将css和javascript与其他内容“串联”。你所要做的就是创建一个指向文件的链接。

    例子: script type=“text/javascript”src=“/js/fooscript.js”/script

    问题: 但是,如果您的PHP需要动态生成部分或全部JavaScript代码,那么上述方法不起作用。有没有办法像上面那样有一个干净的“单行”链接,但仍然使用动态生成的javascript?

    显然,一种方法是让PHP自动生成JavaScript并将其写入文件;然而,由于各种原因,这种方法是不可取的。我想知道是否还有其他的技巧可以做到这一点,我还没有想到。

    4 回复  |  直到 12 年前
        1
  •  7
  •   Sasha Chedygov    15 年前

    放一个 .htaccess 在您的文件 /js/ 文件夹并添加 .js 对php的扩展,如下所示:

    AddHandler application/x-httpd-php .js
    

    换句话说,让PHP解析所有 JS 文件作为php文件。所以您的脚本实际上是服务器端输出JavaScript的PHP文件。对样式表执行相同的操作,只使用 .css 很明显是延期。

    注: 我从来没有单独尝试过 HTAccess 文件。如果它不起作用,就把它放到全局apache配置中。

        2
  •  7
  •   nategood    12 年前

    根据我的经验,很少需要(也很少需要)动态生成整个脚本。例如,在javascript中,您可能需要动态地将一些数据(如用户信息或设置)获取到javascript中,但脚本的其余部分(类/函数/dom操作)在所有用户中是静态的。

    通常,在这种情况下,您只需要将动态内容“内联”,从PHP动态输出,然后将JS(不需要动态生成的95%)包含为外部脚本。最明显的原因是缓存JS/CSS。

    考虑reddit.com是如何通过查看源代码将用户数据转换为javascript的。

    var reddit = {
        /* is the user logged in */ logged: 'username',
        /* the subreddit's name (for posts) */ post_site: "",
        /* are we in an iframe */ cnameframe: false,
        /* this page's referer" */ referer: "",
        /* the user's voting hash */ modhash: 'lzbcszj9nl521385b7e075e9750ee4339547befc6a47fa01e6',
        /* current domain */ cur_domain: "reddit.com", ...
    }
    

    其余的JS在外部文件中找到。

        3
  •  1
  •   meridimus    15 年前

    您只需使用mod ou rewrite使某些PHP文件被视为css/js

    例如,/css/screen-style.css指向css.php?friendly_id=屏幕样式

        4
  •  1
  •   Bill the Lizard    13 年前

    可以在JavaScript和CSS调用中使用.php文件。它并不漂亮,任何人查看您的源代码都知道它是一个脚本,但它节省了服务器上配置的麻烦。另外,如果您正在创建动态javascript,我建议在末尾添加一个时间戳,这样浏览器就不会缓存它。

    例子。

    <script src="myjavascript.php?a=20090611-021213"></script>