1

我经常这样启动我的 JavaScript 应用程序:

jQuery(function($) {
    ... code for the app ...
});

我刚刚开始使用 RequireJS,并将像这样启动应用程序:

define(['jquery'], function($) {
    ... code for the app ...
});

现在,由于我不希望应用程序在加载所有 HTML 之前开始处理,因此我将两者结合起来:

require(['jquery'], function($) {
    $(function($) {
        ... code for the app ...
    });
});

这是这样做的方法吗?

4

3 回答 3

0

RequireJS 文档涉及到这一点,并提供了一个更方便的选项

require(['domReady!'], function (doc) {
    //This function is called once the DOM is ready,
    //notice the value for 'domReady!' is the current
    //document.
});

请注意,您将需要下载domReady插件,如果您有一个非常复杂的页面,您可能希望使用他们也显示的“显式函数调用”方法......虽然它看起来很像你已经用 jQuery 做。

于 2013-10-08T22:37:14.810 回答
0

define所以和在这个场景中的主要区别require是,一个声明一个模块,第二个调用这个定义的模块,然后如果它没有加载,浏览器下载js库。

要控制下载所需文件的时间,您需要使用domReady插件。

你需要把 js 库放在你的地方require.config,我通常放在和 baseUrl 属性声明的目录相同的目录下,例如:

require.config({
    baseUrl: "js/lib",
    paths:{
        filter:"../src/filter",
        addPanel: "../src/edit-panel"
    }
}

我将 domReady.js 放在js/lib/文件夹中。

因此,您可以在 html 文件的任何位置使用 require 方法:

require(['jquery!'], function ($) {

}); 

请注意,我使用该符号!表示该库是在完全加载页面后加载的。

于 2013-10-08T22:42:57.550 回答
0

作为页面顶部的框,我的问题在这里得到了回答:

Requirejs domReady 插件与 Jquery $(document).ready()?

此处的其他答案必不可少,重复上述链接中的内容。但是,谢谢!

于 2013-10-26T22:35:24.563 回答