requireJS 中的上下文和嵌套模块

2024-01-23

我在 requireJS 中的上下文方面遇到了一些麻烦。我想要的是在配置阶段(在加载任何模块之前)创建一个上下文“mycontext”,然后始终保留该上下文。这很复杂,因为不幸的是,我需要(

base.js

contextReq = require.config({
    context: 'mycontext',
    baseUrl: 'http://www.example.com/src/',
    paths:{
        jquery: 'http://ajax.cdnjs.com/ajax/libs/jquery/2.0.3/jquery.min',
    },
});

(function(){
    contextReq(['require', 'topModule'], function(require, topModule){
        topModule.initialize();
    });
})();

然后,我加载 topModule:

http://www.example.com/src/topModule.js http://www.example.com/src/topModule.js

define(['require', 'jquery', 'nestedModule'], function (require) {
    var $ = require('jquery');
    var other = require('nestedModule');
});

jQuery 仍然只在 mycontext 中加载吗?如果我更进一步呢:

http://www.example.com/src/nestedModule.js http://www.example.com/src/nestedModule.js

define(function (require) {
    var $ = require('jquery');
    var oneMore = require('someOtherModule');
});

我们已经可以在此上下文中访问 jquery,但是“someOtherModule”是否也会在此上下文中加载,或者在全局“_”上下文中加载?在进行 require 调用之前,有什么方法可以检查模块是否已经加载?

Thanks!


好吧,所以我自己解决了这个问题。本地或全局的 Require 有一个非常有用的属性,称为“.s”,其中列出了所有的 require 上下文。在我的需求完成加载后,我在控制台上运行了“require.s.contexts”:

base.js

contextReq = require.config({
    context: 'mycontext',
    baseUrl: 'http://www.example.com/src/',
    paths:{
        jquery: 'http://ajax.cdnjs.com/ajax/libs/jquery/2.0.3/jquery.min',
    },
});

(function(){
    contextReq(['require', 'topModule'], function(require, topModule){
        topModule.initialize();
    });
})();

//Timeout, then see where we stand
setTimeout( function () {
    console.log(require.s.contexts._);
    console.log(require.s.contexts.mycontext);
}, 500);

输出如下:

//Console.log for context '_' (the default require context)
{
     [...]
     defined: [], //empty array, nothing has been loaded in the default context
     [...]
}

//Console.log for context 'mycontext' (the default require context)
{
     [...]
     defined: [ //Filled out array; everything is loaded in context!
          topModule: Object
          nestedModule: Object
          jquery: function (e,n){return new x.fn.init(e,n,t)} //jQuery function
     ],
     [...]
}

因此,总而言之,我的预感是正确的:当在特定上下文中加载顶级 requireJS 模块时,从该顶级模块中加载的所有模块都会在上下文中加载,即使不再指定上下文也是如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

requireJS 中的上下文和嵌套模块 的相关文章

  • 错误:集合方法聚合是同步的

    我正在尝试以下代码 const Conn mongoose createConnection mongodb 127 0 0 1 27017 db const addresses Conn collection users aggregat
  • 如何使用数据对象中的值指定 d3.js 选择器?

    我在 Web 应用程序中使用 d3 js 描述我想要做的事情的最简单方法是查看下面链接的 Fiddle 但基本设置是我有一个包含数据对象的数组 my data id B text I want this text in B id C tex
  • 带有路径连接器的 jQuery 可拖动小部件

    参考该图像 Block1 和Block2 都是可拖动的 我的问题是 如何在两个块之间制作红色链状连接器 要求是链条应该延伸到块被拖动的地方 请提供任何教程 学习材料的指示 谢谢 有许多 Jquery 插件可用于创建数据库可视化或流程图的连接
  • Node.js 主机名/IP 与证书的替代名称不匹配

    我正在编写一些节点代码来进行 Facebook 的服务器端登录 我已经非常接近让它完全发挥作用了 但是我在请求 auth code 时遇到了麻烦 我认为这可能与 Facebook 应用程序设置有关Site URL但我尝试过的都没有成功 我使
  • 如何使事件 DOM 侦听器适应 Google Maps JavaScript API v3.35

    我曾经使用以下代码来捕获用户的 Enter 键事件 如果用户没有选择其中任何一个 即没有标记为 pac 的 pac item 则自动从自动完成结果 pac items 中选择第一个结果 项目选择 var input document get
  • JavaScript 和数据库连接

    javascript可以直接访问数据库吗 我觉得我的问题是反问 因为这是一个安全问题 但这有可能吗 有可能的 有了新的html5功能 js可以通过WebSql连接 一个活生生的例子 http html5demos com database
  • 如何防止脚本注入攻击

    Intro 这个话题一直是 StackOverflow 以及许多其他技术论坛上许多问题和答案的祸根 然而 其中大多数都是特定于具体条件的 甚至更糟 通过脚本注入预防中的 整体 安全性dev tools console or dev tool
  • 如何根据 URL 路径添加 CSS 类?

    如何根据我所在的路径将 CSS 类添加到 div 中 包括如果我在其中包含 则不应该出现问题 div class popup ul li a href vs Example 1 a li li a href bod Example 2 a
  • 使用HTMLWebpackPlugin时如何通过webpack加载图片?

    我正在使用 HTMLWebpackPlugin 在我的模板中我有一个 img 标签 img src images logo png 如果您注意到 这里我使用相对路径 认为 webpack 将触发在 webpack config js 文件中
  • 属性列表后缺少 jquery 验证 }

    我这里有这个代码 order validate rules name required true lastname required true address required true telephone required true di
  • Raphael JS 中的动画字体大小是否有流畅的过渡可能性?

    到目前为止似乎它不流畅 但波涛汹涌 例如 如果您有一个 font size 14 的状态属性 并且想要以动画方式显示 font size 16 的状态 则过渡看起来并不平滑 它分两步跳跃 首先更改为 15 然后更改为 16px 可以强迫它看
  • canvas:如何在一个变换语句中完成平移、倾斜、旋转...?

    最近几天我在学习 变换 现在我知道如何通过变换的矩阵进行平移 旋转 倾斜 缩放 但如果我想在一个转换语句中执行上述所有操作 我该怎么办 ctx transform a b c d e f 当我们想要通过变换旋转某些东西时 我们必须为每个参数
  • webpack 5 中是否可以让不同的入口包到不同的输出路径

    我正在使用 webpack 打包 google chrome 扩展 我想将文件夹结构保留在 dist 文件夹中 例如 我想将所有弹出资源打包在dist popup 这是我现在的配置 const path require path const
  • window.onclose 函数

    我使用这个函数来调用我的窗口关闭 这是确认框弹出窗口 if confirm Sure you want to close the window yes return to submit function else no return to
  • 如何在 jQuery 中检查 null 对象

    我正在使用 jQuery 我想检查页面中是否存在某个元素 我写了以下代码 但它不起作用 if btext i null alert btext i text btext i text Branch i 如何检查元素是否存在 检查jQuery
  • 避免使用 Grunt cssmin 任务来删除重复条目

    在我的 Gruntfile 中 我使用 cssmin grunt contrib cssmin 任务 就像是 cssmin css src dist styles css dest dist styles min css 问题是 style
  • Chrome 扩展允许的键盘快捷键

    当您创建 Chrome 浏览器扩展程序时 您可以通过实现来建议键盘快捷键chrome 命令 https developer chrome com extensions commandsAPI 是否有允许的组合键的记录列表 Chrome 似乎
  • 同步 jQuery 动画

    我正在尝试同时获得淡入 不透明度切换 和边框淡入 使用jquery 动画颜色 http www bitstorm org jquery color animation 同时开火 但我遇到了一些麻烦 有人可以帮忙查看以下代码吗 fn exte
  • MutationObserver 不适合儿童

    提前为可能是一个简单的问题和下面令人震惊的 javascript 道歉 我的问题如下 网站上有一个横幅 每隔几秒钟就会显示四个图像 我正在尝试将 印象 推入数据层以供 GTM 拾取 为了显示下一个图像 我们 不是我自己 将下一个横幅图像的
  • jQuery fullCalendar + Fancybox 弹出窗口编辑事件

    我正在使用此代码在 fullCalendar 上生成事件

随机推荐

  • Carrierwave:如果尺寸大于则缩放图像(有条件创建版本)

    仅当图像大于版本大小时 才可以使用载波创建版本 例如拇指 吗 Example version thumb if gt is thumbnable do process resize to fit gt 32 nil end protecte
  • 类型注释被推断的表达式类型覆盖

    在 Scala 编程语言中 假设我将使用更广泛的类型注释表达式并提供一个狭窄的值 我的程序将被拒绝 scala gt def x A A 8
  • 使用 HTML 和 CSS 剪辑图像

    我想在 144px x 144px div 元素中显示图像 图像总是大于 144px 所以我想缩放它们 我的意思是最小的一侧将接触 div 的边缘 从另一侧 与信箱相反 切掉一点 我怎样才能做到这一点并让它在 IE 等旧版浏览器上也能工作
  • 在 NodeJS Lambda 函数中列出 AWS.CognitoIdentityServiceProvider.listUsers 中的用户及其组?

    因此 我需要在客户端的自定义管理屏幕中显示用户列表及其各个组 我正在返回结果AWS CognitoIdentityServiceProvider listUsers在 Lambda 函数中 这可以很好地列出用户 但我不确定为每个用户获取组并
  • 按行名称连接多个表[重复]

    这个问题在这里已经有答案了 我想按行名称合并多个表 这些表的行数不同 并且它们具有唯一行和共享行 这些行都应该出现在输出中 如果可能的话我想解决这个问题awk 但我也对其他解决方案感到满意 表1 tab a 5 b 5 d 9 表2 tab
  • C++:成员指针已初始化?

    代码示例应该解释一下 class A B pB C pC D d public A int i int j d j pC new C i abc note pB is not initialised e g pB NULL 显然 pB 应该
  • C++ 11 线程与 clang

    我想学习使用 C 11 线程来加速我的语言的编译 是的 我正在构建一个编译器 x 我尝试的第一个示例在 clang 3 3 SVN 中抛出了几个错误 它在 GCC 4 6 3 下编译得很好 我从 llvm org 的 SVN 下载了 cla
  • 将对象的子集直接解构为新对象[重复]

    这个问题在这里已经有答案了 有没有一条语句可以做到这一点 我正在空白 this state is a basic object with many keys var toDate fromDate location flavor this
  • 无法更新 FBSDKCoreKit POD iOS

    当我尝试进行 pod 更新时 出现以下错误 一旦失败 我什至无法再进行 pod install 了 安装FBSDKCoreKit 4 36 0 安装 FBSDKCoreKit 时出错 usr bin git 克隆https github c
  • Visual C++ 中的堆框架有多大

    在 Visual C 中 如果我使用 new 在堆上创建对象 堆帧头和填充会占用多少额外空间 特别是在发布代码中 我期望一个 int 表示块中有多少可用空间 另一个可能表示当前正在使用多少空间 并且帧大小根据体系结构四舍五入到最接近的 32
  • WEB API 返回遵循序列化属性的对象

    我正在使用 WEB API 返回一个对象 类 类已经使用 System Xml Serialization 属性进行结构化 这使得使用 WEB API 返回整个类变得困难 因为它公开的内容超出了应有的范围 我不认为这是序列化类并返回字符串的
  • MDX 查询返回记录数

    以下是我的 MDX 查询 SELECT NON EMPTY Measures Fact Sample Count ON COLUMNS NON EMPTY Fact Sample Sample Reference No Sample Ref
  • Django 的缓存模块可以在 Google App Engine 上运行吗?

    我正在 Google App Engine 上运行 Django 1 0 2 并且想知道以下哪一项 如果有 Django 缓存模块 http docs djangoproject com en dev topics cache 本质上应该与
  • GCC 生成的 ARM 和 x86 汇编代码的差异

    让我们看一个简单的 C 代码来设置寄存器 int main int a int 111111 a 0x1000 return 0 当我使用 1 级优化为 ARM arm none eabi gcc 编译此代码时 汇编代码类似于 mov r2
  • travis 构建失败,因为缺少 devtools

    我正在尝试设置 travis 构建 但失败并出现以下错误 export PKG TARBALL Rscript e pkg lt devtools as package cat paste0 pkg package pkg version
  • Django JavaScript 文件

    在 Django 应用程序中 我应该将 javascript jquery 脚本放在哪里 与其他静态媒体一起使用 请参阅此处了解更多信息 http docs djangoproject com en dev howto static fil
  • 使用 Margin Auto 和 Center 将 Float Left Div 居中

    我知道这个问题已经被问过很多次了 将 div 居中对齐 https stackoverflow com questions 1740587 float a div to center 不过 我遵循他们的建议
  • XNA 的 CPU 使用率高

    我今天刚刚注意到 当我编译并运行一款新的 XNA 4 0 游戏时 其中一个 CPU 线程以 100 的速度运行 并且帧速率下降到 54 FPS 奇怪的是 有时它可以在 60 FPS 下运行 但随后就会下降到 54 FPS 我以前没有注意到这
  • 在 OPTIONS 响应后使 fetch API 与 CORS 一起使用

    我正在尝试从我们的 API 获取数据 API 已启用 CORS 支持并对 OPTIONS 请求返回以下响应 Access Control Request Headers content type Access Control Allow O
  • requireJS 中的上下文和嵌套模块

    我在 requireJS 中的上下文方面遇到了一些麻烦 我想要的是在配置阶段 在加载任何模块之前 创建一个上下文 mycontext 然后始终保留该上下文 这很复杂 因为不幸的是 我需要 base js contextReq require