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"