我想知道在使用UI5时使用let
和const
关键字是否安全。我不知道退回let
,const
,甚至创建sap.m.Table
let
会产生不良影响。
也许某人以前有过这方面的经验?
答案 0 :(得分:2)
关于与UI5可能不兼容的documentation still warns:
!限制
我们目前不保证OpenUI5可以使用更新的ECMAScript标准,例如ES6 / ES2015。
另一方面,到目前为止,我一直在UI5上使用ES6 +功能(包括const
和let
),到目前为止没有任何问题。
更新:从@sap/grunt-sapui5-bestpractice-build
的1.3.65开始,不再需要以下解决方法。参见MLauffer's answer。
您可能会遇到的一个问题是 Web IDE当前无法部署启用ES6的应用,因为IDE仍使用npm任务 grunt-openui5
src 在构建期间作为@sap/grunt-sapui5-bestpractice-build
任务的一部分运行。 doc 过时的grunt-openui5
任务使用了旧的uglify-js
,它没有无法理解ES6语法。
尽管0.14.x版本最终支持ES6 +语法,但是grunt-sapui5-bestpractice-build
仍使用旧的0.11.x
版本,如果使用了ES6功能,则会导致生成错误(语法错误)。
解决方法之一是手动在package.json 中添加当前的grunt-openui5
依赖项:
{
"name": "...",
"version": "0.0.1",
"description": "...",
"private": true,
"devDependencies": {
"@sap/grunt-sapui5-bestpractice-build": "1.3.62",
"grunt-openui5": "0.15.0"
}
}
然后,使用ES6 +语法构建应用程序成功。
答案 1 :(得分:1)
只要您使用更新版本的构建模块,SAP WebIDE便可以部署ES6 let / const语法。
只需使用:“ @ sap / grunt-sapui5-bestpractice-build”:“ 1.3.65”
答案 2 :(得分:0)
我会假设您害怕浏览器不兼容? let
和const
是用于声明变量的构造;它们不会影响对象的生命周期。 let
声明了一个块作用域变量,而const
声明了一个只读变量。这些变量中包含的对象具有完全不同的生命周期。
这不是UI5问题,而是一般的JavaScript问题。无论您使用哪种库,您的应用程序的兼容性将由两个因素决定:
由于你无法真正控制兼容性matrix of UI5(应涵盖ES6的兼容性矩阵),所有这些都归结为你必须要问自己的两个主要问题:
对于第一个问题,如果您只关心可以支持本机ES6(not IE)的浏览器,那么您绝对可以使用它。否则,第二个问题可能更有意义。如果你有一个体面的C.I.适用于您的应用程序的管道,然后您可以使用babel之类的东西将闪亮的ES6代码转换为IE非常喜欢的冗长的意大利面。
根据评论,我会指出ES6并非以全有或全无的方式支持。特征子集(如const和let的支持)可能适用于某些浏览器(IE),即使整个ES6不是。具体而言,基于https://caniuse.com/#feat=let和https://caniuse.com/#feat=const,IE11中似乎可以使用let
和const
(但旧版本中不可用)。其他功能如ES6 class definitions不受支持。