RequireJS 插件:使用插件时遇到的加载超时
RequireJS plugin: load timeouts experienced when using plugin
使用RequireJS,我正在构建一个广泛使用小部件的应用程序。对于每个小部件,我至少有 3 个单独的文件:
- request.js包含用于设置请求/响应处理程序以在应用程序的另一部分中请求小部件的代码
- 控制器.js包含模型和视图之间的处理
- 视图.js包含用户和控制器之间的处理
请求中的模块定义.js:
define(['common/view/widget/entity/term/list/table/controller'],
function(WidgetController) { ... });
控制器中的模块定义.js:
define(['common/view/widget/entity/term/list/table/view'],
function(WidgetView) { ... });
视图.js的模块定义为:
define(['module','require'],function(module,require) {
'use strict';
var WidgetView = <constructor definition>;
return WidgetView;
});
在我开发的小部件的情况下,我有很多这样的小情况。我不喜欢的是每次当一个模块需要另一个模块并且两者都位于同一文件夹中时使用完整路径。我想简单地指定如下(假设我们有一个 RequireJS 插件可以为我们解决这个问题):
define(['currentfolder!controller'],
function(WidgetController) { ... });
为此,我写了一个小插件,因为我在网上找不到它:
define({
load: function (name, parentRequire, onload, config) {
var path = parentRequire.toUrl('.').substring(config.baseUrl.length) + '/' + name;
parentRequire([path], function (value) {
onload(value);
});
}
});
您可能会注意到,在其基本形式中,它看起来像 RequireJS 插件文档的示例。
现在在某些情况下,上述工作正常(例如,从请求.js到控制器.js),但在其他情况下,会发生加载超时(从控制器.js到查看.js)。当我查看生成的路径时,所有路径都是正确的 RequireJS 路径。查看加载超时,将记录以下内容:
Timestamp: 13-09-13 17:27:10
Error: Error: Load timeout for modules: currentfolder!view_unnormalized2,currentfolder!view
http://requirejs.org/docs/errors.html#timeout
Source File: http://localhost/app/vendor/requirejs/require.js?msv15z
Line: 159
上面的日志来自我所做的测试.js仅从控制器加载视图.js在定义语句的模块列表中使用 currentfolder!view。由于我只请求了一次当前文件夹!view,我很困惑为什么我在消息中看到当前文件夹!view_unnormalized2和当前文件夹!view。
知道为什么会发生这种情况吗?
我的回答可能无法回答您的主要问题,但它将帮助您实现您要用插件做的事情。
事实上,在使用 CommonJS 样式时,Require.js 支持需要模块的相对路径。这样:
define(function( require, exports, module ) {
var relativeModule = require("./subfolder/module");
module.exports = function() {
console.log( relativeModule );
};
});
相关文章:
- IE 9 BHO插件.加载外部JS文件时出现错误SCRIPT1014
- phoneGap/Cordova插件加载顺序/交易w/AdBlock
- jasmine-maven插件加载源文件及其依赖关系
- 使用 require.js 字体插件加载谷歌网络字体
- 如何使用jQuery图像库插件加载加载本地图像
- 普通<视频>元素或视频插件加载速度更快
- 捕获事件 DOMContent使用Chrome插件加载和加载每个帧
- 如何优化jquery选择的插件加载超过5万个结果
- 仍在为未安装的插件加载脚本
- 保存模型时,只将所需的插件加载到架构中
- Instafeed插件“加载更多”按钮不工作
- 插件加载程序(如果一台服务器出现故障)
- 通过Ajax插件加载Wordpress编辑器
- 修改Cordova插件加载行为以加快加载时间
- 将jquery插件加载到特定的命名空间
- 使用ocLazyLoad插件加载组件和其他依赖项
- ASP.. Net MVC jQuery和插件加载顺序错误
- TypeError: $(. .).不是函数,如何在jQuery插件加载后执行函数
- Knockout.js:更新用映射插件加载的对象
- 通过插件加载YouTube Iframe时,Chrome不安全的javascript请求