可变路径(测试/临时/生产域)始终是 JavaScript 中的一个问题,最好的选择是在 HTML 中包含应用程序/网站的根路径。执行此操作的明显位置是在模板层中。例如:
<body data-root="${rootContext}">
<!-- or whatever syntax your template layer uses -->
并使用 javascript 获取它以便在您的脚本中使用。
var rootContext = document.body.getAttribute("data-root");
注意,只有当 DOM 准备好时(或者 document.body 可用时,跨浏览器有所不同),您才能执行此操作;)
在我看来,另一种不太漂亮的选择是简单地渲染 javascript。
<script>
var rootContext = ${rootContext} // or whatever syntax your template layer uses.
</script>
至少使用“数据根”技术,您可以将值存储在您喜欢的任何位置并避免全局定义。
因此,在引用图像的代码中,您可以执行以下操作:
img.src = rootContext + "/media/js/close.gif";
或者创建一个很好的辅助方法:
// lets use a namespace to avoid globals.
var myApp = {
// still need to set this when DOM/body is ready
rootContext: document.body.getAttribute("data-root"),
getContext: function( src ) {
return this.rootContext + src;
}
}
img.src = myApp.getContext( "/media/js/close.gif" );
在辅助方法中,您还可以编写一些代码来确保正确使用 / 等。