在全局范围内执行文件,而不是返回导出的对象
Execute a file in global scope instead of returning exported object
在NodeJS中,我只想执行一个文件,并允许它修改全局命名空间。我知道这不是最佳实践,如果我自己设计项目,我会确保每个模块都导出一个变量。
我正在将一个由脚本标记连接的结构不佳的SPA项目转换为节点,我希望以增量的方式这样做。
现在我有:
require('./three.js')
这是threejs的一个版本,它只是用模块的内容填充一个名为"THREE"的全局变量。由于require的执行隐含地创建了一个闭包,因此不会为我创建全局变量
所以我想做的只是运行一个完整的js文件,并允许它创建全局变量。
有没有一种优雅的方法可以做到这一点?
您正在开发使用节点服务器运行的单页应用程序。那么,为什么不试试module.exports=,这样你就可以在你给出的名称空间下看到它。
所以举个例子var THRE_74=需要('./THREE');
现在这个THREE_74.半球光()
你可以访问你正在做的事情。
如果你想让你的应用程序离开节点,而不是使用相同的布局(因为你正在转换SPA应用程序),然后创建你的index.html加载require.js文件(http://requirejs.org/docs/download.html)到script标记中,使您的所有文件在这个js文件之后调用(到那些文件中执行您现在所做的要求)。
然后运行单行服务器python-m SimpleHTTPServer并在浏览器simple上运行:)
我找到了这个片段。它在Node中不是本机的,但它作为临时解决方案工作得很好!
var fs = require('fs');
var vm = require('vm');
var includeInThisContext = function(path) {
var code = fs.readFileSync(path);
vm.runInThisContext(code, path);
}.bind(this);
includeInThisContext("<PATH_TO_FILE>");
相关文章:
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 通过数组值返回对象
- JavaScript:返回对象的函数
- 为什么document.getElementsByClassName(“className”)返回对象
- 如何返回对象
- Promise没有;t返回对象的数组
- 面料:“;鼠标:向下”;在event.target中未返回对象
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- Javascript:返回对象
- 为什么 javascript 返回对象位置 true 或 false
- 解析查询查找方法返回对象而不是数组
- 来自函数的返回对象在 jQuery 中未从 $.post 定义
- JavaScript 返回对象未按预期工作
- 返回“[对象对象] NaN” - Javascript
- 何时从创建返回对象
- Javascript:接收对象并返回对象中描述的所有数字的列表的函数
- JSDoc:返回对象结构
- node.js请求返回对象
- 返回对象的ECMAScript 6箭头函数
- 如何从控制器返回对象列表并使用JQuery(SpringMVC,ajax)显示它们