热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RequireJS何时需要调用异步?什么时候同步?

如何解决《RequireJS何时需要调用异步?什么时候同步?》经验,为你挑选了1个好方法。

我使用RequireJS在我的一个项目中加载我的模块.我在网上看到了使用require呼叫要求模块的不同方式(而不是define).

让我们假设我有一个名为"JQuery"的模块,我想要它.我在示例中看到了两种方法:

    这个:

    require(["JQuery"], function($){
       $.doSomething();
    })
    

    还有这个:

    var $ = require("JQuery");
    $.doSomething();
    

我的问题是,如果负载是异常的,就像RequireJS文档说的那样,第二个约定如何工作呢?我如何确定$已定义并且第二行在第二行执行之前完成?



1> Louis..:

RequireJS总是异步加载模块,但它允许一种require看似同步的形式.你的第二个片段实际上缺少一些非常重要的代码.(此外,jQuery的模块名称是硬编码的jquery.您可以编写一个允许您引用它的配置,jQuery但没有意义.)这种形式的require调用旨在用于模块内部,因此:

define(function (require) {
    var $ = require("jquery");
    $.doSomething();
});

RequireJS对上面代码的作用是在执行之前将其转换为:

define(['jquery'], function (require) {
    var $ = require("jquery");
    $.doSomething();
});

注意添加依赖项作为第一个参数define.当RequireJS执行代码时,它会找到依赖项,加载jquery然后调用匿名函数.到时候require("jquery")遇到模块已经加载.require调用看起来是同步的一天结束时,它所需的模块加载仍然是异步发生的.

你可以requiredefine通话之外使用这种同步形式吗?只有你对失败感到满意.如果传递给它的模块尚未加载,则require调用将失败.你得到臭名昭着的错误:

Module name ... has not been loaded yet for context: ...

define像我上面所示的那样使用它是安全的.或者我想你可以这样做:

require(['jquery'], function (require) {
    var $ = require("jquery");
    $.doSomething();
});

哪个起作用但是手动重复依赖的重点是什么.(如果你不知道,RequireJS 变换require电话与像我在我的例子在这里它把一个同样的方式回调define正如我上面显示的呼叫.)


推荐阅读
author-avatar
棒棒糖的困惑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有