包括用于计算的javascript库

Include a javascript library for calculation

本文关键字:javascript 计算 用于 包括      更新时间:2023-09-26

我想用javascript做一些非常简单的事情。我有一个main.js文件,需要调用math.js.中的计算方法

如果我在index.html中包含这两个带有script标记的文件,首先是math.js,然后是main.js,我是否保证在我可以在main.js中使用它之前,math.jss已经加载完毕?

如果没有,我需要像我在这里读到的那样做一些过度的黑客攻击吗?我如何在另一个JavaScript文件中包含一个JavaScript文件?或者更糟的是,因为我甚至看不到在这个链接中是如何实际考虑依赖性的。

更新:为什么我不能像Dashcode看起来那样做?我如何添加我的库以加载Dashcode部件,即只使用document.write("…")?事实上,如果库大于main.js,document.write在非常慢的连接上是否足够健壮?

在math.js中设置一个变量,如果该变量存在,则在main.js中proove。

var mathLoaded = true;

在main.js:中

function loaded() {
    return ((typeof mathLoaded) !== 'undefined');
}

编辑:

现在你可以启动一个等待功能,直到它被加载:

function wait() {
    if(loaded()) {
        //doSomething();
    } else {
        window.setTimeout(function() { wait(); }, 0);
    }
}
window.setTimeout(function() { wait(); }, 0);

您可以查看RequireJS以确保加载了依赖项

此外,JS从上到下被加载和解析。无论哪个先出现在源中,都会先获取并首先解析(但这并不能保证顺序,因为某些文件的服务器可能会很慢)。这就是为什么建议如果您使用库和工具包(如jQuery和其他工具),则应该先加载它们。

不,你不是。文件可以按任何顺序加载。您通常希望从documents load事件中调用初始代码。甚至在加载页面所需的所有文件后,它也会触发。

为什么不使用window.onload

window.onload = function () {
    //your code here.
}

或者真的很喜欢跨浏览器的addEvent功能?

var libJS = {
    addEvent: function (obj, type, fn) {
        if (obj.addEventListener) {
            obj.addEventListener(type, fn, false);
            return true;
        } else if (obj.attachEvent) {
            obj['e' + type + fn] = fn;
            obj[type + fn] = function () {
                obj['e' + type + fn](window.event);
            }
            var r = obj.attachEvent('on' + type, obj[type + fn]);
            return r;
        } else {
            obj['on' + type] = fn;
            return true;
        }
    }
}

它将功能正确地附加到事件。。。

libJS.addEvent(window, 'load', someMainJsFunction); //add to window.onload