- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法通过 Browserify 和 Babelify 使用 ES2015 进行动态继承?
我需要用额外的功能“构造函数”包装一个类“前驱”,并且我不知道前驱将是什么,所以我不知道参数的数量或有关其执行的任何信息。
通常,对于 JS 中的动态继承,我会这样做:
function Constructor() {
Predecessor.apply(this, arguments); // <<-- this is what I'm trying to do.
}
Constructor.prototype = Object.create(Predecessor.prototype);
Constructor.prototype.constructor = Constructor;
当我尝试使用 ES2015 时:
class Constructor extends Predecessor {
constructor() {
super(arguments);
}
}
super(arguments)
转换为:
var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Singleton).call(this, args));
因此,Predecessor
会被执行,就像您执行的那样:new Predecessor([arguments]);
(数组中的数组)。
Predecessor.apply(this, argument);
但它会抛出错误(必须调用 super
)。另外,我不想执行前驱两次。super.apply(arguments)
,当然,它不起作用(引发捆绑错误)。我不想强制开发人员说所有参数都将包含在一个数组中,因此:
看起来很糟糕,绝对不是最佳实践:
class Constructor extends Predecessor {
constructor(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) {
super(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z);
}
}
我当然不喜欢它。
那么,这只是 Babelify/Babel 还是 ES2015 不允许这样做?我可以做些什么来改善这一点(为 Babelify 做出贡献)?或者我应该返回旧的实现?
如果您想知道我的编译过程:
{
// ...
"scripts": {
"dist": "./node_modules/browserify/bin/cmd.js ./src/index.js -o ./dist/bundle.js -t [ babelify --presets [ es2015 ] ]",
// ...
},
"devDependencies": {
"babel-preset-es2015": "^6.9.0",
"babelify": "^7.3.0",
"browserify": "^13.0.1",
// ...
}
}
最佳答案
so
Predecessor
gets executed something like if you did:new Predecessor([arguments])
: array within array
嗯,这就是您所写的:super(arguments)
将整个对象传递给一个参数。您需要编写 super(...arguments)
来传递参数。或者更好的是,不要使用 arguments
object ES6 中除了其余参数之外还有更多:
class Constructor extends Predecessor {
constructor(...args) {
super(...args);
}
}
(或者如果您不执行任何其他操作,则省略 constructor
方法,因为这是默认行为)。
关于JavaScript ES2015 动态继承与 browserify 和 babelify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37514318/
我正在写一个React申请 ES6和 JSX 。以下是我用来将 .es6 文件浏览器化为 bundle.js 的命令。 $ browserify src/es6/app.es6 -t babelify
我正在进行我的个人项目,我想集成 flowtype。现在,在 package.json 中我得到了: "babel-plugin-syntax-flow": "6.3.13" 这有助于 babelif
全新安装 browserify 后,以下内容对我不起作用: browserify main.js -o bundle.js -t babelify main.js的内容是: var x = () =>
如何使用 babel在不同的目录中转译包含 ES6 内容的 JavaScript 文件?我希望结果位于相同的目录中(例如,具有 foo/bar/index.js,我希望通过覆盖在同一个文件中获取 ES
我正在使用 babel 来转译我的 es6 代码。我还使用 gulp 来完成任务。我的 gulpfile.js 如下所示: var gulp = require('gulp'), es6Pat
我有多个使用 es2015 特性编写的模块。我不想将 es2015 转换作为每个模块的依赖项,而是在全局安装它。它失败了 错误:找不到相对于目录的预设“es2015” 有人试过吗?任何解决方法? 最佳
我目前正在学习如何使用 npm、Babel 和 Browserify 设置 React 项目。 Babel 的用法对我来说似乎很清楚:它将 JSX 和 ES6 代码转换为 ES5 代码,可以在所有浏览
我是: 与 browserify 捆绑 使用 babel 将 ES6 转换为 ES5 使用 uglifyjs 压缩 ES5 以前有效。然而最近我一直收到 uglifyjs 的错误,提示 ES6 语法,
我正在使用实现 Browserify-Rails 的 Rails 4.0 项目实现Babelify . 在我的本地和远程 Beta 服务器上,一切似乎都很顺利。但是当我部署到生产环境时,某些文件将被跳
有没有办法import使用 Babelify 时的原生 Node 模块(例如 crypto、fs、path)与 Browserify ? 例如: 'use strict'; import $ from
我正在尝试将我的工作应用程序从 React 和 Gulp with ES5 转换为 React + Gulp 和 ES6。 我只尝试用 babelify 替换 Reactify,但仍然收到 gulp
我正在尝试使用 browserify 和 babelify 创建 gulp 任务。这是任务: var gulp = require('gulp'); var browserify = require(
我在我的应用程序中使用 es6 模块,在我的 chrome 检查器中调试时遇到问题。当我在我的代码中执行类似以下操作时: import 'widget' from './widget' class S
我正在使用 Gulp , Browserify和 Babelify将我的源代码从 ES6 + JSX 编译为纯 Javascript。 我的 gulpfile.js 看起来像: var gulp =
这是我的 gulpfile 代码: gulp.task('react', function () { browserify('app/src/main.jsx') .transform(r
我正在尝试使用 Babelify 来转译 async 和 wait ES7 功能,但我不希望使用 gulp、grunt 或类似的构建工具。到目前为止,我仅使用 npm 就取得了巨大的成功,而这一额外步
我使用带有 Gulp 系统的 Browserify 构建器从 reactify JSX 编译器转移到 Babel 编译器 (Babelify)。现在我得到了这个错误: [00:17:25] Error
watchify配合babelify使用实用吗? 我正在尝试 React 并在开发模式下运行一个项目: watchify app/src/src.js -t babelify -o app/build
有没有办法通过 Browserify 和 Babelify 使用 ES2015 进行动态继承? 我需要用额外的功能“构造函数”包装一个类“前驱”,并且我不知道前驱将是什么,所以我不知道参数的数量或有关
我想对我的代码进行 browserify、tsify 和 babelify。 Browserify 和其他转译器之一可以工作,但它们不能一起工作。 Babel 似乎只是被忽略了(甚至不读 .babel
我是一名优秀的程序员,十分优秀!