Require.js是否有用于加载单个依赖项的同步版本
Does Require.js have a sync version for loading a single dependency?
…这将启用此模式:
var $ = require('jQuery');
我正在查看Require.js文档,所能看到的只是回调版本,例如require(['jQuery'], function ($) { … });
Require提供了一个"CommonJS"模式,允许在代码中内联类似Node的Require语句。例如,这是一个典型的AMD定义,它将异步加载这些脚本:
define(['script1', 'script2'], function (script1, script2) {
});
但你也可以这样做:
define(function () {
var script1 = require("script1");
var script2 = require("script2");
});
Require也将异步处理这些。这样做的方法是,Require看到您没有指定依赖项数组作为第一个参数,然后扫描代码中的Require语句。然后,它异步地处理它们中的每一个。
然而,为了回答您的问题,如果您确实指定了一个依赖数组作为第一个参数,并且仍然使用CommonJS语法,Require将同步处理Require语句:
define([], function () {
// Each of these scripts will be loaded synchronously
var script1 = require("script1");
var script2 = require("script2");
});
文档::
https://github.com/jrburke/requirejs/wiki/Differences-between-the-simplified-CommonJS-wrapper-and-standard-AMD-define
受浏览器限制,加载脚本只能是异步的。因此,在Require.js.中没有用于加载依赖项的同步版本
但是,有些模块加载程序确实有变通方法。例如,Sea.js提供了一个同步版本(http://seajs.org/docs/en.html#quick-start),通过运行regexp提取所有依赖项(https://github.com/seajs/seajs/blob/3d3c3bc142d9a6e3f6de14c1959d3f308b1c9e0e/src/module.js#L324)并在实际执行脚本之前异步加载它们。因此,依赖关系似乎是同步加载的。
看起来在开发过程中使用了sync变体:
require('foo')
执行同步加载,require('foo', function(foo){ … })
执行异步加载。在开发中,我们使用同步加载(方便是唯一的原因)-在生产中,RequireJS Optimizer内联无论如何都需要调用…
来源:https://github.com/rodneyrehm/viewport-units-buggyfill/issues/18#issuecomment-55604581
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- 在控制器和数据对象之间同步数据
- 同步调用,直到用户通过angular验证为访问者
- javascript函数同步
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 如何将本地依赖项添加到npm项目中
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- jquery中的复选框依赖项
- 为什么react/redux前端项目在package.json中包含生产依赖项
- 音频和动画在javasctipt循环中同步
- 使用d3链接(同步)依赖转换
- 同步相互依赖的 Dojo 小部件/值
- Require.js是否有用于加载单个依赖项的同步版本
- 如何同步声明JS对象,然后用依赖于并发操作的数据编辑对象的属性
- 首选的方式做多个依赖ajax同步调用
- 如何同步依赖于多个ajax请求响应的javascript代码