Как ориентироваться на ES6 для сервера и ES5 для клиента

Я создаю проект с узлом на сервере и Angular 2 на клиенте. Я хочу использовать Typescript во всем проекте. Я хотел бы ориентироваться на ES6 для сервера, так как узел поддерживает его, но ES5 для клиента. В настоящее время моя структура каталогов выглядит примерно так.

├── app.js
├── something.js
├── tsconfig.json
├── wwwroot
│   ├── index.html
│   ├── main.ts
│   ├── components
│   │   ├── mycomponent.ts

Я хочу, чтобы все, что выше wwwroot, было нацелено на ES6, а все, что находится внутри wwwroot, — на ES5. Я попытался поместить второй tsconfig.json в папку wwwroot, но это не сработало. Я использую функцию автокомпиляции Atom, если это имеет какое-либо значение.


person rgvassar    schedule 08.11.2016    source источник
comment
Взгляните на github.com/angular/angular-cli, как я вижу, для вас это должно хорошо подходит, так как вы сможете быстро начать разработку, а позже, если вам нужно, вы можете расширить. Но я не уверен, есть ли вариант ES6   -  person Vova Bilyachat    schedule 08.11.2016


Ответы (3)


Вы можете использовать babel для преобразования javascript es6 в любой вариант ecmascript, который вам нужен.

http://babeljs.io/

person BentOnCoding    schedule 08.11.2016
comment
Вы говорите, что я должен перенести все в es6, а затем использовать babel для переноса кода на стороне клиента в es5? - person rgvassar; 08.11.2016
comment
В основном да. Typescript скомпилируется до es6, а затем babel перенесет его в es5. Это немного странно, но у вас очень специфический сценарий - person BentOnCoding; 08.11.2016
comment
Похоже, машинописный текст поддерживает транспиляцию кода es5, но я не знаком с этим процессом. См. это: typescriptlang.org/docs/handbook/compiler-options.html. В частности, флаг --lib - person BentOnCoding; 12.11.2016

У меня похожая ситуация, и я делаю следующее:

- project-root
  - scripts
    - tsconfig.json
  - wwwroot
    - scripts
      - tsconfig.json
    - html
      - index.html
    - styles
      - index.css

scripts/tsconfig.json цели es6 для сервера, а wwwroot/scripts/tsconfig.json цели es5 для клиента.

person Nitzan Tomer    schedule 08.11.2016
comment
Функция автоматической компиляции просто игнорировала нижний tsconfig.json, когда я пробовал это. Есть ли одна команда tsc, которую вы можете запустить для компиляции обоих? - person rgvassar; 11.11.2016
comment
Нет, вам нужно скомпилировать их по-разному, но если ваша IDE поддерживает несколько файлов tsconfig.json, у вас не должно возникнуть проблем. В моем текущем проекте у меня есть 4 разных, и он отлично работает. Я работаю с вебстормом - person Nitzan Tomer; 12.11.2016

Вы можете использовать Babel для переноса в es5 того, что nodejs еще не реализует, используя предустановку "babel-preset-es2015-node6".

Вы можете транспилировать только те каталоги, которые вы хотите в es5, используя, например, скрипт в вашем узле package.json:

"prestart": "babel server-source --out-dir dist/source"
person sendra    schedule 08.11.2016