【问题标题】:E4X with NodeJSE4X 与 NodeJS
【发布时间】:2011-02-20 12:40:45
【问题描述】:

有没有办法让E4X(ECMAScript) 与 NodeJS 一起工作?

输出流畅的 html/xml 真的很有帮助,没有麻烦/噪音。

使用 SpiderMonkey 可以正常工作,因为它是本机实现的,但它似乎不适用于 NodeJS。

使用节点

$node
> var name = "World";
> var p = <p>Hello {name}</p>;
...

使用蜘蛛猴

$js
js> var name = "World";
js> var p = <p>Hello {name}</p>;
Hello World
js>

提前致谢

【问题讨论】:

  • 不是你的问题的真正答案,但我喜欢在CoffeeScript 中编写 NodeJS 脚本,因为你可以使用 heredocs 或类似p = """Hello #{name}""" 的东西。 3 引号还允许您在字符串中添加换行符。
  • @Thai 感谢这一点
  • 你可以在 NodeJS 中使用 React 和 JSX。但这并不是你想要的。

标签: javascript node.js html-parsing e4x spidermonkey


【解决方案1】:

Node使用V8,目前还没有实现E4X。

有一个 2 年前的问题,但在该主题上仍然活跃 issue。但它没有真正的“地位”,也没有分配给任何人。

简而言之:答案是否定的。

【讨论】:

  • 是的,这真的很可惜,因为乍一看,没有实现这个功能似乎真的很奇怪......而且似乎也有很多人在等待它:(
  • 有很多模板引擎可以用来做 e4x 所做的事情。唯一的缺点是在定义变量后,您需要运行一个额外的调用将变量放入模板字符串中。
【解决方案2】:

我开发了一个 babel 插件,为 NodeJS 添加了 E4X 基本支持。

https://www.npmjs.com/package/babel-plugin-transform-simple-e4x

您还可以使用 npm simple4x 库将 xml 字符串解析为类似 XML 的对象。

https://www.npmjs.com/package/simple4x

插件转译以下 E4X:

var fooId = 'foo-id';
var barText = 'bar text';
var xml =
    <xml>
        <foo id={fooId}>
          {barText}
        </foo>
    </xml>;

到以下 JavaScript:

var XML = new require("simple4x");

var fooId = 'foo-id';
var barText = 'bar text';
var xml = new XML("<xml><foo id=\"" + fooId + "\">" + barText + "</foo></xml>");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多