如何在PhantomJS中使用ES6

exu*_*ero 30 phantomjs ecmascript-6

有没有办法使用ES6和模块与PhantomJS?

我可以使用Babel将每个文件从ES6转换为ES5,但是维护并行树(ES6中的一个和ES5中的另一个)很难并且编写导入以要求ES5模块.我正在寻找一个更清洁的解决方案.

我可以删除所有导入和导出代码,将模块连接在一起,将结果转换为单个文件,然后通过PhantomJS运行,但我更愿意使用导入和导出.

我尝试使用Browserify和babelify转换将ES6依赖树转换为单个ES5文件,但Browserify无法找到PhantomJS提供的模块webpage.我已经尝试通过放入我的忽略这些模块package.json:

"browser": {
  "webpage": false
}
Run Code Online (Sandbox Code Playgroud)

但导入webpage返回一个空对象而不是PhantomJS模块.

是否有一种干净的方式来使用PhantomJS的ES6模块?

ipl*_*s26 12

根据PhantomJS开发者对GitHub的评论,ES6的全面支持将伴随着PhantomJS 2.5.

  • 鉴于PhantomJS [已停止](https://github.com/ariya/phantomjs/issues/15344),我们不太可能看到版本2.5被发布. (7认同)

exu*_*ero 1

Browserify 的--exclude选项可以满足我的需要。

browserify --exclude webpage -t babelify script.js --outfile compiled.js
phantomjs compiled.js
Run Code Online (Sandbox Code Playgroud)

这会webpage从依赖关系树中排除,但保留导入。

  • 我不知道为什么这回答了这个问题。是的,它暂时解决了 PhantomJS 中缺失的 ES6 功能。但是,如果您想运行“真正的”ES6 功能而不先转译它们,那么这不是一个解决方案。 (21认同)