简介
babel-plugin-ember-legacy-class-constructor 是一个基于 babel 的插件,用于支持在 Ember.js 应用中使用 ES6 class 语法的扩展,比如ember-cli 2.12 以前的版本,支持使用extend函数来在类上扩展mixins、属性以及方法。该插件可以让我们继续使用旧的 Extend 方法的同时,享受到 ES6 class 的一些优势。
安装
我们可以通过 npm 安装:
npm install --save-dev babel-plugin-ember-legacy-class-constructor
使用
在 .babelrc 文件中配置
babel-plugin-ember-legacy-class-constructor 的配置很简单,只需要在 .babelrc 的 plugins 中添加该插件即可,例如:
{ "presets": ["@babel/preset-env"], "plugins": ["babel-plugin-ember-legacy-class-constructor"] }
示例代码
-- -------------------- ---- ------- ------ ----------- ---- ---------------- ------ ------- -------------------- ---------- ------ --------- -------- ---------- - ------ ------------------ ------------------ - ---
使用细节
- 继承的基类应该是
EmberObject
,不能是其他的 ES6 类或者普通的 JavaScript 对象。 extend
函数的原型被固定为:EmberObject.extend({})
形式。- 如果你在组件上使用了这个插件,在升级到 ember 3.0.0 或更高版本时,会出现编译错误,因为组件现在必须是 ES6 类。 解决方案是升级 ember 版本或者将组件优化为 ES6 类。
结论
至此我们可以看到,babel-plugin-ember-legacy-class-constructor 插件可以帮助我们在我们的 Ember.js 应用中使用 ES6 class 的语法,同时也可以继续保留我们使用 Extend 方法的传统。虽然 在现时的 Ember 版本中,现已支持完整的 ES6 语法,但是这个插件对于我们来说,仍然是一个有必要的工具,同样也为我们在使用 ES6 语法的前端开发中,提供了一些思路。
参考链接
-babel-plugin-ember-legacy-class-constructor 官方文档 https://github.com/ember-cli/babel-plugin-ember-legacy-class-constructor.
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562d581e8991b448e029e