请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我感觉2-6章节有点疑问 关于es7的语法是否被转义了

https://img1.sycdn.imooc.com//szimg/5a9fba5b0001234604460488.jpg

https://img1.sycdn.imooc.com//szimg/5a9fba5c00014c5e08230165.jpg

https://img1.sycdn.imooc.com//szimg/5a9fba5c0001cd9d06310112.jpg

我感觉2-6章节有点疑问,按道理安装了babel-plugin-transform-runtime转义后就算node版本是6.x的也应该可以执行这个async函数,但是我转义后还是错的。并且课程中package.json中scripts脚本部分每次都是以--presets env结尾 感觉好像只是执行了es6的转换 并没有 去转换es7的命令。所以我很好奇是不是转换了es7的语法 然后让node低版本的也可以去运行?

正在回答

2回答

Scott 2018-03-07 22:14:16

这个到后面会改成这样的写法

require('babel-core/register')()
require('babel-polyfill')
require('./server/index.js')


在入口文件里面来注册,同时配合这样的 babelrc


{
  "presets": ["env", "stage-0", "react"],
  "plugins": [
    "transform-runtime",
    "transform-decorators-legacy",
    "transform-class-properties"
  ]
}


在 package 里面,除了 env 也可以追加 plugins 来进行编译,比如


--plugins plugin-transform-runtime

1 回复 有任何疑惑可以回复我~
  • 提问者 龙枫飘 #1
    谢谢老师,我有个疑问就是关于node线上的问题,我是这样理解的,如果我线上的node环境保持8.x就可以了,那就不需要一些babel等转换语法,是这样理解的吗,因为node作为这个web服务的话不需要去运行在客户端,不知道我这个想法是不是对的。
    回复 有任何疑惑可以回复我~ 2018-03-08 08:42:03
  • Scott 回复 提问者 龙枫飘 #2
    基本是对的,大部分语法特性 8.x 都支持了,比如 async await,但是比如 import decorator 之类的还不支持,所以还需要 babel 的加成。
    
    除非拖累对这些语法的依赖,那么 babel 可以全部移除
    回复 有任何疑惑可以回复我~ 2018-03-08 21:53:36
  • 提问者 龙枫飘 回复 Scott #3
    谢谢老师,老师我目前学习这个koa2目的是希望用node作为中间层,后端还是java,前端用这个vue写,数据请求和处理放中间层,我有疑问就是我这个中间层是否还需要打包工具,前端是webpack打包的,这个中间层我就不知道如何打包以及推到线上。
    回复 有任何疑惑可以回复我~ 2018-03-08 22:02:08
Scott 2018-03-09 21:47:44

中间层就不用打包了,直接推线上,用 babel node 启动跑起来看看响应性能如何,如果性能有问题的话,可以再考虑在线上用 babel 把整个项目编译一遍后,来启动编译后的服务入口文件,目前可以不考虑

1 回复 有任何疑惑可以回复我~
  • 提问者 龙枫飘 #1
    谢谢老师
    回复 有任何疑惑可以回复我~ 2018-03-10 08:53:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信