繁体   English   中英

需要Js - 在“不完全客户端应用程序”中寻求requirejs的混合实现

[英]Require Js - Seeking Hybrid implementation of the requirejs in “Not fully client side application”

我正在探索requirejs(用于异步加载模块和依赖项的JavaScript模块加载器)。

我所理解的是你需要将所有的JavaScript库或插件(如Jquery等)加载到require.config中,以用作你创建的任何自定义模块中的依赖项或你使用的任何其他直接依赖的插件在jquery或任何其他lib上。

我不确定并且持怀疑态度的是,它是否可以在已经构建的应用程序中使用,我只需要很少的依赖于Jquery的插件或库来使用requirejs定义/使用其他应用程序javascript继续使用jquery以行的形式。

也就是说:我使用脚本标记包含jquery,而不是通过require.config,但希望使用并包含其他插件/ JavaScript,使用依赖于Jquery的require js。

简而言之,我想在我已经构建的服务器端应用程序中实现requirejs的一种混合实现,而不是完全客户端应用程序。

代码片段或操作方法将受到高度赞赏。

是的,如果你小心你做了什么,这是可能的。

加载了使用RequireJS加载的代码所依赖的JavaScript代码的所有script元素应出现使用RequireJS启动模块加载的任何代码之前 当RequireJS开始加载模块时,这是确保所需内容可用的唯一方法。

然后,您可以选择使用RequireJS加载模块,只需假设加载script已在全局范围内可用,并使用它而不将其添加到依赖项中。 例如,如果一个模块需要jQuery并且它已经加载了一个script元素,那么该模块将假定已经定义了$

define(function () {
    $("p").append(...);
});

对于已经使用script元素加载的代码已经列出依赖关系的第三方代码,或者如果您希望在显式编写的代码中创建依赖关系,则必须使用“glue modules”。 这是我更喜欢我自己的代码的选项。 )上面的相同模块将正式要求jQuery:

define(["jquery"], function ($) {
    $("p").append(...);
});

你必须有一个jquery的“胶水模块”。 我通常在require.config调用之前放置这些模块, 而不是将它们放在单独的文件中。 它会是这样的:

define('jquery', function () {
    return $;
});

请注意,这里define调用的第一个参数是一个字符串(而不是一个数组),它告诉RequireJS模块名为jquery 你通常不应该硬编码像这样的名称,但对于胶水模块,这没关系。 胶水模块假设$已定义并且是jQuery。 任何需要jQuery的模块都依赖于这个模块。 如果在稍后阶段将jQuery加载为RequireJS模块,则可以删除粘合模块,并且不需要修改任何依赖于jQuery的模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM