javascript - 使用 requirejs 创建完全独立的上下文堆栈

标签 javascript node.js requirejs

我有一个现有的网站,它使用 requirejs 来处理所有事情,从加载 jQuery 和 Backbone 等库到定义 Backbone View 、模型等。我试图让它在服务器端使用 node.js 进行渲染,因此每个请求都需要一个完全独立的上下文堆栈。

Requirejs 的多版本支持几乎满足了我的需要。它允许为 future 的加载声明特殊的上下文。 var context1 = require.config({context: "abc123"});然后允许: context1(['item'], function(item){});其中“item”将被单独加载,即使它已经被加载。不幸的是,我需要所需的项目也能够要求和定义隔离到该上下文堆栈中的项目。

Requirejs 几乎通过内部 takeGlobalQueue 函数设置了此功能。不幸的是,该函数期望获取自最近调用以来定义的所有项目,因此可以获取在不同上下文堆栈上定义的项目。

我需要的是一种让 requirejs 为我提供一个真正独立的 Define/require 实例的方法,它可以通过将来的调用保持这种分离。

我不想重写我的整个网站以不使用 requirejs 和/或需要一些插件来执行我的所有 requirejs 调用。我应该为此破解 r.js 源吗?这是否违反AMD规范?

更新1: 假设在nodejs上我使用domino/jsdom创建一个窗口上下文。然后,我将 jQuery/zepto 和 Backbone 的副本附加到该窗口,以便 Backbone.View.make 在该窗口中创建一个元素。然后我可以加载我的实际应用程序堆栈,然后该堆栈继承 backone 的副本,以便一切都“正常工作”,就像在浏览器中一样。无需破解 jquery/backbone 源。但我需要一个单独的 Backbone 副本,指向一个单独的窗口来处理不同的同时请求,这意味着我的 View /模型等有一个单独的上下文堆栈。

最佳答案

我没有足够的上下文来回答这个问题,分段加载是如何进行的,但听起来与这个问题类似,所以那里可能有一些提示:

How to use requirejs, jquery and d3 in a node express webserver

不确定,但在新的虚拟机上下文中运行代码也可能是解决方案的一部分:

http://nodejs.org/api/vm.html#vm_vm_runinnewcontext_code_sandbox_filename

关于javascript - 使用 requirejs 创建完全独立的上下文堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869343/

相关文章:

javascript - 动态视频标签和 Knockout JS

javascript - 如何将提示输入保存到数组中

javascript - 使用 AJAX 请求抓取页面

knockout.js - 从现有的 html 页面中提取组件到外部文件

javascript - 函数中的回调似乎没有在 Require.JS 中执行

javascript - ReportViewer Web 窗体导致页面挂起

javascript - NodeJS/Express : Reading header, 之前设置,结果未定义

javascript - React defaultValue 不工作 axios 传递动态数据

node.js - Node.js require() 和 RequireJS require() 有什么区别?

javascript - 从获取返回值更新 vuejs 警报组件