JavaScript";包括「;功能?
我想知道是否有一个javascript“include”函数(类似于python中的函数),我正在寻找一些东西,但除了JavaScript";包括「;功能?,javascript,jquery,python,include,Javascript,Jquery,Python,Include,我想知道是否有一个javascript“include”函数(类似于python中的函数),我正在寻找一些东西,但除了$.load()和google.load()之外,什么都找不到 因此,我大胆地创造了一个脚本,可以这样做只是为了好玩,所以: var include = function( lib ) { // start with jQuery if(lib == "jquery") { var script = document.createElement("scri
$.load()
和google.load()
之外,什么都找不到
因此,我大胆地创造了一个脚本,可以这样做只是为了好玩,所以:
var include = function( lib ) {
// start with jQuery
if(lib == "jquery") {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://code.jquery.com/jquery.min.js";
script.defer = "defer"; // should I use script.setAttribute('defer', 'defer')?
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(script, s);
}
}
然后,在单独的脚本中:
include("jquery");
$("p").innerHTML = "Worked!";
但是我得到了一个错误$未定义
这很有意义,因为脚本是在jQuery加载之前运行的。所以我的问题是,有没有办法确保include脚本在之前运行?我见过回调
解决方案,看起来像这样:
include("http://code.jquery.com/jquery.min.js", function() {
$("p").innerHTML = "Worked!";
});
但我确实想知道是否有什么东西(如我上面提出的)更整洁一点
任何帮助都将不胜感激 您正在重新发明轮子:有大量的库/组件基本上做着相同的工作,但有更多的功能。检查并开始。由于JavaScript的运行方式,没有办法做到更干净。您可以有一定的时间间隔来加载所需的所有文件,如下所示
window.includeFiles = [];
function include(file){
window.includeFiles.push(file);
}
function initialize(callback){
for(var i = 0; i < window.includeFiles.length; i++){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = window.includeFiles[i];
script.defer = "defer"; // should I use script.setAttribute('defer', 'defer')?
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(script, s);
if((i+1)==window.includeFiles.length){
callback();
}
}
}
唯一的问题是它不测试网络,这只能通过检查包含的库中是否有可用的函数来实现。Witch让raina77ow的答案使用更好的解决方案。我认为最简单的方法是使用
head.js
+1 Require.js具有在浏览器和node.js中工作的额外优势“我见过类似这样的回调解决方案:
include(”http://code.jquery.com/jquery.min.js“,function(){$((“p”).innerHTML=“Worked!”})
,但我确实想知道是否有什么东西(如我上面建议的)更整洁一些。”我知道所有这些图书馆和东西。不要试图重新发明轮子。只是想找到(或制作)类似于python的东西。@Jacedc如果说“整洁”,你指的是同步/过程性的,不需要回调,那么就没有了。JavaScript还没有类似于协同程序的功能,在协同程序中,函数可以暂停执行,甚至可以在不阻塞的情况下返回。将很接近,但这是ES6即将推出的功能。虽然,对于一些可扩展的环境,如Node.js,您可能会找到解决方案,如.I,但是您忽略了异步js的黄金法则:'below'
并不意味着'after'
。而包含
-默认情况下,外部JS是异步的,因为它基本上是在DOM.Ah中添加一个元素。可以只是想知道。。。我在想,是否有任何可能的方法可以在不将script
元素发布到html
元素的情况下包含脚本?这似乎是包含脚本的一种非常传统的方式。
include("http://code.jquery.com/jquery.min.js");
include("http://code.jquery.com/jquery.min.js");
include("http://code.jquery.com/jquery.min.js");
include("http://code.jquery.com/jquery.min.js");
include("http://code.jquery.com/jquery.min.js");
initialize(function(){
//code ready
});
head.js(
"/path/to/jquery.js",
"/google/analytics.js",
"/js/site.js", function() {
// Code that executes when all the scripts have been loaded
});