2015-10-19 3 views

ответ

5

Это вопрос node.js, который специально не паруса. Да, текущая версия node.js поддерживает определенные стандарты ES2015 в зависимости от версии и флагов Node.js, которые вы используете при запуске своего сервера.

Большинство функций уже активны, однако, чтобы использовать все функции, вы должны использовать node app.js --es_staging или node app.js --harmony в папку проекта вместо sails lift

Следующая ссылка предоставляет обновленную информацию о том, какие особенности текущей версии поддержки узла и как доступ к ним.

https://nodejs.org/en/docs/es6/

8

Вам необходимо проверить совместимость ES6 с node.js вместо любой рамки, как sails.js, экспресс и т.д.

Потому что наконец node.js изменит к JavaScript на стороне сервера кода. Так что неважно, какую структуру вы используете.

You can use the sails with ES6:

Для проверки совместимости ES6 kangax.github.io.

Рекомендуется:

Sails v 0.11.0 or greater

Node v 4.. or greater

npm v 2.14.4 or greater

Теперь вы готовы исследовать новую функцию Ecmascript6.

Вы получите новую функцию от http://es6-features.org/.

TEST:

Код:

ecma6Test:function(req,res,next){ 
    var evens =req.body.evens 
    odds = evens.map(v => v + 1); 
    res.json({sucess:true,'odds':odds}); 
} 

Запрос:

{"evens":[2,4,6,8,10]} 

Ответ:

{ 
    "sucess": true, 
    "odds":[3, 5, 7, 9, 11] 
} 
+0

Поэтапные функции не считаются стабильными командой V8. но вы можете использовать их с помощью флага --harmony. Но я думаю, вам нужно подождать, пока они не станут стабильными. –

2

ответ Вишну покрывали Вас.

Явный список ES6 функции, доступные в последней версии узла здесь https://nodejs.org/en/docs/es6/

Which ES6 features ship with Node.js by default (no runtime flag required)?

  • пусть (строгий режим только)
  • Const
  • функция-в-блоках (строгий режим только)
    • Начиная с v8 3.31.74.1, объявления с блочной областью намеренно внедряются с несоответствующим lim itation до строгого режима. Разработчики должны знать, что это изменится, так как v8 продолжает соблюдение спецификации ES6.
  • Классы (строгий режим только)
  • Коллекции
  • Карта
  • WeakMap
  • Набор
  • WeakSet
  • типизированные массивы
  • Генераторы
  • Бинарные и восьмеричные литералы
  • объектов буквальных расширений (сокращенные свойства и методы)
  • Обещания
  • метода
  • Новых строковых
  • Символов
  • шаблон строка
  • Arrow Функция
+0

Извините за форматирование. App не самый лучший для него –

15

SailsJS только рамочное написано с помощью синтаксиса ES5 и ему не нужно поддерживать ES6.

Вы можете написать проект с синтаксисом ES6, как обычно, и использовать Babel \ Traceur \ whatever для работы.

Мой поток следующие:

  • Создание проекта Sails;
  • babel as devDependencies;
  • Обновление npm start сценарий в package.json с "start": "babel-node app.js";

Всё. Я могу написать код ES6 \ 7 в моих контроллерах \ models \ etc и запустить сервер с помощью команды npm start. Он работает как обычно, когда вы написали его с синтаксисом ES5.

Babel Transpiler

Babel Node

+0

Не так просто, к сожалению. Ошибка: /node_modules/source-map-support/source-map-support.js:415 var hasStack = (arguments [1] && arguments [1] .stack); ^ TypeError: Невозможно прочитать свойство 'filename' of undefined – alexmngn

1

Существует sails-hook-babel крюк, который может работать для вас. Это не работает для меня, как я объясняю ниже, но я надеюсь, что он станет более заметным, улучшится, и тогда этот ответ будет более уместным.

В настоящее время, начиная с версии 6.0, библиотека будет работать с файлами, загруженными после запуска ходов парусов. Это означает, что если вы хотите использовать ES2015, например. ваш файл config/routes.js, вы получите синтаксическую ошибку. Но, как предложено в this issue, оно должно работать, например, файлов в папке api.

Смежные вопросы