跨多个应用程序共享JS文件(用于本地和生产)

时间:2011-12-09 01:24:30

标签: javascript

假设我有3个不同应用程序的以下结构,这些应用程序存在于3个不同的域中,还有个人“cdn”,我可以在这里放置所有三个应用程序中常见的文件:

root/
     /dinosaureggs.com
     /magicalapples.com
     /wizardsupplies.com
     /mypersonalcdn.com
          /js
          /php
          /css

在本地和生产环境中镜像了相同的结构。

如果我在dinosaureggs.com,我想在/ php文件夹中使用共享的PHP库,我可以说:

require('/../mypersonalcdn.com/php/library.php')

这适用于本地服务器和生产服务器。

然而,它不适用于JS,因为JS包含不能以与PHP相同的方式退出“app”。

我不能说:

<script type="text/javascript" src="/../mypersonal.cdn/js/library.js"></script>

现在,我可以说:

<script type="text/javascript" src="http://mypersonalcdn.com/js/menus.js"></script>

但这并不能解决我对本地环境的问题(至少在某种程度上我希望将其真正留在本地并且可以选择离线开发)。

有什么建议吗?

4 个答案:

答案 0 :(得分:0)

每个应用程序都必须提供它自己的JS库副本,或者将它们放在你的CDN中。

你不能从你的webroot上去,因为那里没有任何东西,所以要确保它在你的webroot中可用,要么因为它在那里,要么通过重写将请求转发到将找到JS文件的PHP脚本,归还它的内容。

答案 1 :(得分:0)

对于本地开发,为什么不能只使用stml参数的html文件方案。

例如,(我正在编写根文件夹所在的目录,请更改它)

<script type="text/javascript" src="file://Users/bob/projects/root/mypersonalcdn.com/js/menus.js"></script>

答案 2 :(得分:0)

您可以像这样修改您的php文件:

<?php if ($_SERVER['SERVER_NAME'] == "localhost") { ?>
    <script type="text/javascript" src="path/to/your/library.js"></script>
<?php } else { ?>
    <script type="text/javascript" src="http://mypersonalcdn.com/js/menus.js"></script>
<?php } ?>

这是处理此类问题的常用方法。

答案 3 :(得分:0)

虽然上面提到JS方法的PHP是可以的,但这是一个更直接的解决方案,我最终登陆了:

提供doc root之外的文件/跨多个域的公共客户端文件

要执行此操作,请在http.conf

中设置 mod_alias

在如下所示的本地环境中:

Alias /shared/ "/Users/Jane Doe/Sites/shared"
<Directory "/Users/Jane Doe/Sites/shared">
    Options Indexes MultiViews
    Order allow,deny
    Allow from all
</Directory>

这使得你可以像这样调用css(或图像或js或其他):

但是,不是在该域上查找/ shared /,而是在服务器上的“共享”指向的地方;在这种情况下:/ Users / Jane Doe / Sites / shared /

资源: