const и пусть объявления в UI5

Я хотел бы знать, если это безопасно использовать let а также const ключевые слова при работе с UI5. Я не знаю, возвращаю ли let, constили даже создать, например, sap.m.Table с let будет иметь неблагоприятные последствия.

Может быть, у кого-то есть предыдущий опыт с этим?

2 ответа

Решение

Я бы предположил, что вы боитесь несовместимости браузера? let а также const являются конструкциями для объявления переменных; они не влияют на время жизни объекта. let объявляет переменную области видимости блока const объявляет переменную только для чтения. Объекты, содержащиеся в этих переменных, имеют совершенно другой жизненный цикл.

Это на самом деле не проблема UI5, а общая проблема JavaScript. Независимо от того, какие библиотеки вы используете, совместимость вашего приложения будет определяться двумя факторами:

  • Матрица совместимости каждой библиотеки, которую вы используете.
  • Совместимость кода, который вы пишете.

Поскольку вы не можете реально контролировать матрицу совместимости UI5 (которая должна охватывать матрицу совместимости для ES6), все сводится к двум основным вопросам, которые вы должны задать себе:

  • Какие браузеры я поддерживаю?
  • Могу ли я использовать что-то для переноса своего кода для поддержки старых браузеров?

По первому вопросу: если вы заботитесь только о браузерах, которые могут изначально поддерживать ES6 ( не IE), то вы определенно можете его использовать. В противном случае второй вопрос может иметь больше смысла. Если у вас есть приличный конвейер CI для вашего приложения, то вы можете использовать что-то вроде babel, чтобы превратить ваш блестящий код ES6 в многословные спагетти, которые IE так любит.


Позже отредактируйте:

Что касается комментариев, я хотел бы отметить, что ES6 не поддерживается "все или ничего". Подмножества функций (например, поддержка const и let) могут быть доступны для некоторых браузеров (IE), даже если ES6 полностью отсутствует. Конкретно, на основе https://caniuse.com/ и https://caniuse.com/ кажется, что let а также const доступны в IE11 (но не в более старых версиях). Другие функции, такие как определения классов ES6, не поддерживаются.

Документация по-прежнему предупреждает о возможной несовместимости с UI5:

В настоящее время мы не гарантируем, что более новые стандарты ECMAScript, такие как ES6/ES2015, будут работать с OpenUI5.

С другой стороны, я использую функции ES6+ (в том числе const а также let) с UI5 без проблем пока.


Выпуск SAP Web IDE

Одна из проблем, с которой вы можете столкнуться, заключается в том, что в настоящее время в Web IDE не удается развернуть приложения с поддержкой ES6, поскольку в IDE по-прежнему используется устаревшая версия задачи npm. grunt-openui5 SRC, который запускается во время сборки как часть @sap/grunt-sapui5-bestpractice-build задача. Док Это устарело grunt-openui5 задание использовало старое uglify-js который не понимает синтаксис ES6.

Хотя версия 0.14.x наконец поддерживает синтаксис ES6+, grunt-sapui5-bestpractice-build до сих пор использует старый 0.11.x версия, которая вызывает ошибку сборки (синтаксическую ошибку), если использовались функции ES6.

Одним из обходных путей является добавление текущего grunt-openui5 зависимость вручную в package.json:

{
  "name": "...",
  "version": "0.0.1",
  "description": "...",
  "private": true,
  "devDependencies": {
    "@sap/grunt-sapui5-bestpractice-build": "1.3.62",
    "grunt-openui5": "0.15.0"
  }
}

Затем создание приложения с синтаксисом ES6+ завершается успешно.

SAP WebIDE может развертывать синтаксис let/const ES6, если вы используете более новую версию модуля сборки.

Просто используйте: "@sap/grunt-sapui5-bestpractice-build": "1.3.65"

Другие вопросы по тегам