如何在一个文件中导入javascript依赖项
在我的应用程序中,我们有将近100多个web页面(html页面),所有容器都是一个引用内部javascript库的脚本 例如,它们都加载此文件:如何在一个文件中导入javascript依赖项,javascript,Javascript,在我的应用程序中,我们有将近100多个web页面(html页面),所有容器都是一个引用内部javascript库的脚本 例如,它们都加载此文件: http://server/application/map.js 但是,map.js必须使用jquery和openlayers以及其他一些东西 直接将这些依赖项添加到100多个页面不是一个好主意,因为map.js的实现有一天可能会改变 例如,我们现在使用openlayers,但有一天我们可能会使用googlemap。如果这样,我们将不得不修改100多
http://server/application/map.js
但是,map.js必须使用jquery
和openlayers
以及其他一些东西
直接将这些依赖项添加到100多个页面不是一个好主意,因为map.js
的实现有一天可能会改变
例如,我们现在使用openlayers
,但有一天我们可能会使用googlemap
。如果这样,我们将不得不修改100多个页面,从openlaeyrs
更改为googlemap
因此,我想知道是否可以在map.js
中添加依赖项
当然,我可以像这样直接在map.js
中添加脚本:
map.js
((function(){
addScript("jquery");
addScript("openlayers");
function addScript(){
// add a script element to the head of the page
}
})();
但它可能会因为js下降时间而导致问题
还有其他的想法吗?你需要一个抽象的页眉和页脚,它可以自动处理你所有的include(css、js库) 在最坏的情况下,您应该只在每页添加这些内容 更好的是,所有这些都应该由您正在使用/已经构建的任何系统自动完成(想想带有外壳/模板的CMS,至少部分是数据驱动的)。即使您没有system/CMS,设置一些非常基本的东西也应该是非常简单的 如果您只希望根据内容包含某些文件(作为从属文件),那么最好在抽象的页眉/页脚中动态地表驱动某些包含文件 jQuery的工作方式是,它只发送一个ajax get请求,基本上使用
eval
加载脚本。因此,如果您想使用普通的旧javascript来实现这一点,您可以使用以下内容:
加载脚本的普通老JavaScript方法
jQuery使用了一种更好的评估方法(我在上面的示例中没有包括),以防您希望将其合并到脚本中
jQuery的Eval的更高级版本:
其他方式
作者还讨论了在javascript中动态加载脚本的一些其他方法。如果您对我的示例或任何内容有任何疑问,请告诉我:)为什么要手动编辑所有这些HTML页面?您可能希望看到这个-请参见。这个
https://github.com/openlayers/openlayers/blob/master/lib/OpenLayers.js
,作为最终用户,我只添加了OpenLayers.js
,然后openlayer将添加自己的文件。嗨,你能在我的帖子下查看我的评论吗?我发现人们使用文档。write
添加脚本,为什么他们不满足加载问题?
function addScript(script)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
eval(xmlhttp.responseText);
}
}
xmlhttp.open("GET",script,true);
xmlhttp.send();
}
addScript("path/to/jquery.js");
addScript("yourscript.js");
globalEval: function( data ) {
if ( data && jQuery.trim( data ) ) {
// We use execScript on Internet Explorer
// We use an anonymous function so that context is window
// rather than jQuery in Firefox
( window.execScript || function( data ) {
window[ "eval" ].call( window, data );
} )( data );
}
},