E4X с NodeJS

Есть ли способ заставить 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>

заранее спасибо


person zanona    schedule 20.02.2011    source источник
comment
Не совсем ответ на ваш вопрос, но мне нравится писать сценарии NodeJS на CoffeeScript, потому что вы можете использовать heredocs или что-то вроде p = """Hello #{name}""". 3 кавычки также позволяют вам использовать новые строки внутри строк.   -  person Thai    schedule 20.02.2011
comment
@Thai спасибо за это, было приятно узнать, что есть что-то полезное, такое как CoffeScript, и на самом деле это очень умно, мне это очень нравится.   -  person zanona    schedule 20.02.2011
comment
Вы можете использовать React и JSX в NodeJS. Но это не совсем то, что вы хотите.   -  person user1742529    schedule 08.12.2017


Ответы (2)


Node использует V8, который на данный момент не реализует E4X.

Существует проблема двухлетней давности, но она все еще активна проблема по теме. Но реального «статуса» у нее нет и она никому не присваивалась.

Итак, вкратце: ответ — нет.

person Ivo Wetzel    schedule 20.02.2011
comment
да, это действительно позор, потому что на первый взгляд кажется очень странным, что эта функция не реализована ... и также кажется, что многие люди тоже ее ждут :( - person zanona; 20.02.2011
comment
Существует множество шаблонизаторов, которые можно использовать для того, что делает e4x. Единственным недостатком является то, что вам нужно будет выполнить дополнительный вызов, чтобы поместить переменные в строку шаблона после того, как вы ее определили. - person Blacktiger; 21.02.2011

Я разработал плагин для Babel, который добавляет базовую поддержку E4X в NodeJS.

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>");
person Antonio Marin    schedule 01.01.2020