在部署到不同目录结构时,在脚本语言中处理依赖路径更改的流行方法(及其注意事项)是什么?
让构建工具进行文本替换?(比如用蚂蚁代替?)
例如,HTML标记中的src路径可能需要更改,也可能是javascript文件中的AJAX路径和PHP文件中的包含路径。
更新
我差不多已经安排好了我需要的东西。
剩下的唯一问题是通过AJAX发布到的URL。目前,这个URL在一个JS配置文件中,还有许多其他参数。然而,它是在开发、质量保证和生产之间变化的唯一参数。
不幸的是,像@prodigitalson建议的那样,动态生成的URL在这里是不可取的--我必须支持多个服务器端技术,这会变得很麻烦。
目前,我倾向于将URL参数放入自己的JS文件中,为每个开发、QA和生产部署不同版本的URL参数,并在部署时连接到主配置文件。
发布于 2011-06-09 16:32:01
如果你需要这样做,那么你的发展方向是错误的。所有这些shoul都在配置文件中管理。在方面,您应该有一些亲属dof助手,它根据配置值输出路径.例如:
<?php echo image_tag('myimage.jpg', array('alt'=>'My Image')); ?>
<?php echo echo javascript_include('myscript.js'); ?>在这两种情况下,该函数将根据部署查找指向javascript和图像目录的路径。
对于链接,您应该根据应用程序的本地安装和一组参数(如:
<?php echo link_to('/user/profile', array('user_id' => 7)); // output a tag ?>
<?php echo url('/user/profile', array('user_id'=>7)); // jsut get the url ?>就javascript而言,您不应该在js文件中有任何需要更改的硬编码路径。您应该使ajax或与路径相关的东西接受参数,然后从可以使用相同脚本配置的视图中发送这些参数。所以奥尤可能会有这样的东西:
<script type="text/javascript">
siteNamespace.callAjax(
'<?php echo url('/user/profile/like', array('user_id' => 7)); ?>',
{'other': 'option'}
);
</script>通过这种方式,您可以根据任意数量的变量在中心位置更改所有这些。大多数MVC框架都会这样做,尽管代码看起来有些不同,配置选项也会有所不同。
我想看一看Zend -具体而言,Config、路由器和View Helpers,或Symfony 1.4及其Config、Routing和Asset和Url Helpers的实现。
https://stackoverflow.com/questions/6295672
复制相似问题