2015-07-21 96 views
1

当我走到低谷客户通道代码(phoenix.js文件中),我看到它使用ES6。示例代码:凤凰渠道polyfills

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本机运行(至少)。我不应该使用某种polyfills? 什么是最好的方法/ polyfill? 此外,我认为polyfills盖类/ /出租的印象......但没有箭头的功能/新字符串插值。我应该改变这些吗?

回答

3

由于ES6增加了新的语法的语言,就没有办法来填充工具箭头的功能。

然而,创建一个新的应用程序时,凤凰安装一个名为Brunch库,用于合并资产。它包括Babel的包装,将transpile ES6为JavaScript将在浏览器中运行。

如果你看priv/static/app.js(编译的输出)而不是web/static/app.js(源),那么你会看到它没有新的ES6语法。如果您使用某些功能,您可能会发现

一两件事,那么你可能需要包括babel-polyfill.js你可以在https://babeljs.io/docs/advanced/caveats/

这是在凤凰城0.10.0介绍了解,您可以在公告阅读更多关于它发布http://www.phoenixframework.org/v0.14.0/blog/phoenix-0100-released-with-assets-handling-generat

+0

明白了。再次感谢你。 –