【问题标题】:node.js with browser-based APInode.js 与基于浏览器的 API
【发布时间】:2012-02-07 13:10:31
【问题描述】:

我有一个通常在网络浏览器中使用脚本标记的 javascript 文件。它是一个自执行函数,似乎在窗口上放了一个对象(窗口是传入的)。

从服务器上的 node.js 使用它的最干净的方法是什么?

谢谢,

加雷斯

【问题讨论】:

  • 您是否希望:(a) 从 Node 使用此文件而不进行任何更改? (b) 制作一个可以在 Node 中工作的单独版本?或者 (c) 制作一个对浏览器和 Node 都友好的文件版本?
  • 它必须是同一个文件,抱歉耽搁了。
  • 好的,这消除了三个选项之一。您是否愿意/能够对此文件进行修改以使其正常工作 (c),还是必须按原样使用原始文件 (a)?
  • 对不起,我的意思是同一个文件,没有变化。

标签: javascript api node.js browser


【解决方案1】:

如果它所做的只是将属性添加到window,并且您希望将其恢复,您可以创建一个名为window 的全局:

global.window = {};
require('theLibrary');
// now do something with global.window.theThingItAdded

但是,如果该库是为浏览器编写的,它可能仍然无法运行,因为它想使用 DOM。在这种情况下,您可能需要查看 jsdom,它旨在为您在 Node 中提供符合规范的 DOM。

(如果您使用的是 jsdom,我认为您会使用它而不是上面的 global.window -- 我认为 jsdom 可以为您做到这一点,但功能更全面window 对象。不过我并没有真正使用过 jsdom,所以我不确定。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-28
    • 2013-11-10
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多