gpt4 book ai didi

javascript - 我可以编写一个可选地使用 require.js 指定依赖项的 javascript 文件吗?

转载 作者:行者123 更新时间:2023-11-30 12:49:45 26 4
gpt4 key购买 nike

我需要编写一个既可以用作 AMD 模块又可以用作非 AMD(同步加载)javascript 文件的 javascript 插件。

它依赖于“Jockey.js”和 jquery 库。

换句话说,我想构建文件,以便它在传统的非异步 html 结构中使用时不会失败(通过脚本标签加载,在通过脚本标签加载其依赖项之后),但这样它也可以在没有垫片的情况下作为 AMD 模块工作,并指定其依赖项。这可以做到吗,或者 shim 是唯一的方法吗?

最佳答案

这是可以做到的。我有一个这样的插件 right here .这是一般结构:

(function (factory) {
// If in an AMD environment, define() our module, else use the
// jQuery global.
'use strict';
if (typeof define === 'function' && define.amd)
define(['jquery'], factory);
else
factory(jQuery);
}(function ($) {
'use strict';

// This is the plugin proper.
$.fn.myMethod = function(/* ... */) {
// Code for the method...
};
}));

除了 jQuery 之外还需要其他东西的插件将使用上面的结构并进行以下修改:

  1. 调用 define列出了所需的附加模块。

  2. A factory(jQuery)调用(在非 AMD 分支中,在 RequireJS 未加载插件时使用)在 jQuery 之后从全局空间传递附加值.

  3. 工厂函数 function ($)它有额外的参数来接收传递给它的额外值。

所以如果插件需要模块 foo它在全局空间中将自己导出为 foo并使用将其命名为 "foo" 的 RequireJS 配置,然后:

(function (factory) {
// If in an AMD environment, define() our module, else use the
// jQuery global.
'use strict';
if (typeof define === 'function' && define.amd)
define(['jquery', 'foo'], factory);
else
factory(jQuery, foo);
}(function ($, foo) {
'use strict';

// This is the plugin proper.
$.fn.myMethod = function(/* ... */) {
// Code for the method...
foo.blah();
};
}));

关于javascript - 我可以编写一个可选地使用 require.js 指定依赖项的 javascript 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21351621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com