【问题标题】:How to determine cordova/ionic JS vs ES5 or ES6?如何确定cordova/ionic JS vs ES5或ES6?
【发布时间】:2019-03-29 15:00:04
【问题描述】:

我一直只是用 Javascript 和一些 JQuery 编写代码。在过去的 2 年里,我一直在阅读有关 JS、ES5 和 ES6 的文章,并且看到很多术语都转移到了 ESx。另请注意,我从未接受过任何正规的编程教育,并且完全是通过“需要完成”的方式自学的

我已经阅读了维基百科和其他出版物,但老实说,我仍然有点困惑,现在我需要深入了解它,因为我正在尝试缩小/丑化我的文件,这样做的过程是破坏和输出 9 “未定义”的字节文件。然而,大多数关于 minify/uglify 的文档都指的是 ES5 或 ES6,这让我很困惑我需要如何修复我的代码,以便 minify/uglify 能够正常工作。

我的项目使用 Cordova 8.0/Ionic v1 构建并部署到 Android (cordova-android 7.1.1) 和 iPhone (cordova-ios 4.5.1) - 因此我不能完全确定我使用的是哪个版本的 JS。如何确定我的项目正在使用什么并知道它的 ES5 与 ES6...还是其他...以便我可以正确清理它以进行缩小和丑化?

【问题讨论】:

  • ES5 和 ES6 指的是 ECMA 脚本版本。 ECMA Script 是 Javascript 所基于的标准。标准的版本和支持取决于您使用的 javascript 引擎。并非所有引擎都实现了最新版本。 ES5 是 2015 年发布的 Javascript,例如它仍然可以在所有浏览器和 nodejs 上运行。 ES6 是一些“标签”,表示 2015 年之后的所有其他规范版本,具有新功能。
  • 请注意,ES5 和 ES6 都是 JS(“JS vs ES5 vs ES6”在这方面有点奇怪)。它们只是实现的不同版本,你可以完美地将 ES5 和 ES6 语法放在同一个文件中,它仍然是 JS。改变的是支持。一些 minifiers/uglifiers 不支持 ES6 语法(在我的 uglifyjs 版本中,例如箭头函数不起作用),你使用的是哪一个?
  • 这是一个可以重现问题的代码示例,准确的错误有助于理解您的问题。
  • 普通的 'javascript' 实际上是 ES3! ES5 和 ES6 只是为语言添加了新功能,但您不必使用这些功能。
  • 谢谢大家...这有助于我更接近。我想如果他们称它为 JS5 和 JS6 会更容易......很容易理解 JS6 将具有 JS5 没有的新功能。但是,当 JS 既是 ES5 和 ES6 的子集时,它就会变得更加混乱。其他语言没有这个问题……perl就是perl,python就是python,php就是php……但是只有JS就是ES5,而ES5不一定就是JS,显然也可以是JScript或者其他风格。

标签: javascript cordova ionic-framework ecmascript-6 ecmascript-5


【解决方案1】:

在浏览器中看到的JavaScript 是ECMAScript 或“ES”的实现。每隔一段时间,就会指定一个新版本的 ES,为语言添加新功能、您可以访问的对象等。例如,Wikipedia summarizes ES6:

第 6 版,正式名称为 ECMAScript 2015,于 2015 年 6 月完成。此更新为编写复杂的应用程序(包括类和模块)添加了重要的新语法,但在语义上以与 ECMAScript 5 严格模式相同的术语定义它们。其他新功能包括迭代器和 for/of 循环、Python 风格的生成器、箭头函数、二进制数据、类型化数组、集合(映射、集合和弱映射)、承诺、数字和数学增强、反射、代理(虚拟对象的元编程和包装器)和模板文字。完整的列表很广泛。

那么,这些功能中的哪些在您的浏览器提供给您的“JavaScript”中实现是另一回事。实际上它相当复杂——例如here's a table you can refer to regarding ES6 features。

因此,简而言之,当您编写 Cordova 应用程序或网站时,您使用的是 JavaScript,并且大多数情况下,使用您读到的任何 ES5 功能都是安全的。对于 ES6 特性,请查看我上面链接的表格。由于您使用的是 Cordova / Ionic,因此您最需要查看移动浏览器。

附:如果您真的想要使用当前未在您需要支持的浏览器中实现的 ES6 甚至 ES7 功能,那么使用Babel 可能会有一些运气。它是一个 JavaScript“预处理器”;也就是说,它需要您的代码,并将其转换为可能在旧浏览器中更好地工作的东西;缩小的相同方式使您的代码保持不变,只是使其更小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-19
    • 2018-10-09
    • 2017-02-28
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多