Почему Angular build создает файлы с 'es5' и 'es2015', но не с 'es6' (или вообще без суффикса)? - PullRequest
2 голосов
/ 12 февраля 2020

Я недавно скачал Angular CLI (@ angular / cli 9.0.1). Затем я приступил к созданию нового приложения, чтобы можно было создать новый Angular элемент, упаковать его и использовать в другом приложении.

После просмотра нескольких блогов последний этап каждого блога, который я наткнулся на все разговоры о создании одного JS файла из сгенерированных файлов, сброшенных в папку dist /. Например: https://blog.bitsrc.io/using-angular-elements-why-and-how-part-1-35f7fd4f0457

Затем с помощью команды cat мы объединяем среду выполнения . js, полифилы. js, скрипты. js и main. js файлы из папки dist / angular -app в файл angularapp. js внутри папка предварительного просмотра.

При запуске ng build angular-app --prod --output-hashing=none вместо этого создается файл с именем:

  • main-es5. js
  • main-es2015. js
  • polyfills-es5. js
  • polyfills-es2015. js
  • runtime-es5. js
  • runtime-es2015 . js

Я проверил каждый файл, содержащий термины es5 и es2015 , и изменил его на es6 , но он по-прежнему выдает те же имена файлов es5 и es2015 . Что я тут не так делаю?

Ответы [ 3 ]

3 голосов
/ 12 февраля 2020

ES2015 совпадает с ES6. ECMAScript 6 был выпущен в 2015 году.

Немного истории:

https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c

3 голосов
/ 12 февраля 2020

Angular не объединяет файлы JavaScript в один файл.

Вы можете добавить шаг сборки для объединения файлов вместе.

concat-build . js:

var concat = require('concat');
const es5 = ['./dist/app/runtime-es5.js','./dist/app/polyfills-es5.js','./dist/app/main-es5.js'];
const es2015= ['./dist/app/runtime-es2015.js','./dist/app/polyfills-es2015.js','./dist/app/main-es2015.js'];
concat(es5, './dist/app/elements-es5.js');
concat(es2015, './dist/app/elements-es2015.js');

пакет. json:

"scripts": {
   "concat": "./concat-builds.js",
   "build": "ng build --prod --output-hashing=none && npm run concat"
}

Не путайте сборки ES5 и ES2015, потому что команда Angular разделяет пакеты в зависимости от того, как загружаются модули (не специально для версии JavaScript).

Веб-браузеры, поддерживающие модули, будут загружать версии ES2015 вместо версий ES5, но оба рекомендуется указывать в Html.

Если вы хотите только один файл для использования, тогда вы вынуждены использовать более старую версию ES5 и должны предоставить его следующим образом:

<script src="elements-es5.js">

Рекомендуется предоставить оба файла следующим образом и браузер загрузит соответствующую версию:

<script src="elements-es5.js" nomodule defer>
<script src="elements-es2015.js" type="module">

Обратите внимание:

Старые браузеры игнорируют версию type="module", а новые браузеры пропускают nomodule версия.

1 голос
/ 12 февраля 2020

Это одно и то же .

6-е издание - ECMAScript 2015

  • 6 -е издание E CMA S Cript -> ES6
  • E CMA S Cript 2015 -> ES2015

Различные имена для одной и той же вещи. Angular просто решил назвать его es2015.

...