[新手坑] 03.Vue-CLI用ES6编码仍需要手动安装一些Babel插件
Vue-CLI用ES6编码仍需要手动安装一些Babel插件
这五一几天, 没什么事情, 想着再深入研究下Vuex
, 然后又找了些教程, 结合官方文档研究. 却遇到了一个坑爹的问题...在Vue-CLI安装完成后, 如果需要用到一些ES6语法编写代码, 有时候报错的话, 可能是缺少编译插件, 比如我在看Vuex
文档和部分教程的时候, 有类似这样的代码
methods: mapActions([ 'increment', 'decrement', 'incrementIfOdd', 'incrementAsync' ])
这段代码就是借用Vuex
的辅助函数mapActions
来使代码更简洁.
问题现象
而我一个组件中, 不可能只有这些mapActions的方法啊. 于是需要改写这个methods
, 很多教程也有提到使用扩展运算符. 于是我就试着改写成如下:
methods: { ...mapActions([ 'increment', 'decrement', 'incrementIfOdd', 'incrementAsync' ]), doSth() { console.log('doSth') } }
这样看起来挺不错的. 编辑器内也没有提示存在语法错误. 但是按Ctrl+S
的时候, 项目报错- -. 这下就懵逼了.
问题原因
由于ES6语法还不够熟悉, 东改改西改改, 弄了很长时间没有弄出来, 心想难道是真的不支持? 于是不爽的去找到Vuex官方Exaples - Counter的代码复制到自己项目来测试.
也就是上面我改写的那段, 居然还报错. 这下内心凉凉... 看样子折腾了很久的我, 意识到, 官方运行OK, 我这里一样的代码还是报错, 应该不是js代码的锅... 可能真的是Babel没有装好, 又想起之前看过的一篇文章好像有提到ES6的babel插件的问题. 只是我没有注意到... 文章在此: vuex 源码:深入 vuex 之辅助函数 mapState
解决方案
那么接下来我们在Vue-CLI项目安装Object rest spread transform插件:
npm install --save-dev babel-plugin-transform-object-rest-spread
接着修改.babelrc
文件, 例如
{ "presets": [["env", { "modules": false }]], "plugins": [ "transform-vue-jsx", "transform-runtime", "transform-object-rest-spread", [ "import", { "libraryName": "vant", "libraryDirectory": "es", "style": true } ] ] }
接着重新运行项目. 总算正常了!
总结
有时候还是要自信一点, 看了视频和一些教程这样写都没报错, 唯独我报错了. 一般来说大概都是环境问题, 甩锅给Vue-CLI