清除PHP生成的JavaScript和CSS的链接

dre*_*mac 2 javascript css php scripting templates

背景:当使用PHP或任何此类东西生成HTML内容时,可以在标签内部封装JavaScript和CSS的链接,而不必实际包含CSS和JavaScript与其他内容"内联".您所要做的就是创建一个指向该文件的链接.

示例:{script type ="text/javascript"src ="./ js/fooscript.js"} {/ script}

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

显然,一种方法是让PHP自动生成JavaScript并将其写入文件; 然而,由于各种原因,这种方法是不受欢 我想知道是否有一个替代技巧来做到这一点,我还没有想到.

Sas*_*gov 7

.htaccess文件放在您的/js/文件夹中并将.js扩展名添加到PHP,如下所示:

AddHandler application/x-httpd-php .js
Run Code Online (Sandbox Code Playgroud)

换句话说,让PHP将所有.js文件解析为PHP文件.所以你的脚本实际上是服务器端输出JavaScript的PHP文件.对样式表执行相同操作.css,显然只使用扩展名.

注意:我从未尝试在单独的.htaccess文件中执行此操作.如果它不起作用,只需将其放入您的全局Apache配置中.


nat*_*ood 7

根据我的经验,您很少需要(很少应该)动态生成整个脚本.例如,在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", ...
}
Run Code Online (Sandbox Code Playgroud)

其余的js可以在外部文件中找到.