当我通过客户端通道代码(在phoenix.js文件中)时,我看到它使用了ES6。示例代码:
let chan = socket.chan("rooms:123", {token: roomToken})
// chan.on("new_msg", msg => console.log("Got message", msg) )
// $input.onEnter( e => {
// chan.push("new_msg", {body: e.target.val})
// .receive("ok", (message) => console.log("created message", message) )
// .receive("error", (reasons) => console.log("create failed", reasons) )
// .after(10000, () => console.log("Networking issue. Still waiting...") )
this.onError( reason => {
this.socket.log("channel", `error ${this.topic}`, reason)
this.state = CHAN_STATES.errored
this.rejoinTimer.setTimeout()
})
这意味着它不会在IE和Safari中本地运行(至少)。我不应该使用某种填充剂吗? 什么是最好的方法/ polyfill? 此外,我的印象是polyfill覆盖了类/ let / ...但不是箭头函数/新字符串插值。我应该自己改变吗?
答案 0 :(得分:3)
由于ES6为语言添加了新语法,因此无法填充箭头函数。
但是,在创建新应用程序时,Phoenix会安装一个名为Brunch的库,用于组合资产。它包含Babel的包装器,它将ES6转换为将在浏览器中运行的JavaScript。
如果你看priv/static/app.js
(已编译的输出)而不是web/static/app.js
(源代码),那么你会发现它没有新的ES6语法。
如果您使用某些功能,可能会发现一件事情,那么您可能需要添加babel-polyfill.js
,您可以在https://babeljs.io/docs/advanced/caveats/
这是在Phoenix 0.10.0中引入的,你可以在公告帖http://www.phoenixframework.org/v0.14.0/blog/phoenix-0100-released-with-assets-handling-generat
中阅读更多相关信息。