配置 ES2015 和 Babel

vue-loader 附带 ES2015(也叫 ES6),在 <script> 中默认支持。Vue 组件的所有脚本代码都使用 babel-loader,通过 Babel 来完成编译。如果你还没用上新的语言特性,你真的得用用了。有一些不错的学习资源:

以下是一种导入其他 Vue 组件的经典地方式:

<script>
import ComponentA from './ComponentA.vue'
import ComponentB from './ComponentB.vue'

export default {
  components: {
    ComponentA,
    ComponentB
  }
}
</script>

我们用 ES2015 字面量对象的简写语法来定义子组件。其中 { ComponentA } 代表 { ComponentA: ComponentA } ,Vue 会自动的将键名转化为 component-a,所以你可以在模板中写 <component-a> 来使用导入的组件。

自定义配置 Babel

注意兼容性: vue-loader 7.0+ 使用 Babel 6。如果你需要使用 Babel 5 来转换代码的话,请用 vue-loader 6.x 版本。

Vue 组件的代码使用 Babel 的默认配置为:

{
  "presets": ["es2015"],
  "plugins": ["transform-runtime"]
}

如果你想自己配置别的 presets 或 plugins,例如想要使用 stage-0 的语言特性,则安装相应 preset 或 plugin,然后在 Webpack 配置中增加 babel 字段:

npm install babel-preset-stage-0 --save-dev
// webpack.config.js
module.exports = {
  // other configs...
  babel: {
    // enable stage 0 babel transforms.
    presets: ['es2015', 'stage-0'],
    plugins: ['transform-runtime']
  }
}

另一种方式就是,在项目根目录增加一个 .babelrc 配置文件。(译者:内容就是 babel 字段对应的 json 对象)

通过 Babel 编译 .js 文件

反正都已经用上 Babel 了,你大概也想编译其它普通 .js 文件。下面告诉你如何通过配置 Webpack 实现:

// webpack.config.js
module.exports = {
  // other options ...
  module: {
    loaders: [
      {
        // use vue-loader for *.vue files
        test: /\.vue$/,
        loader: 'vue'
      },
      {
        // 对所有 *.js 文件使用 babel-loader
        test: /\.js$/,
        loader: 'babel',
        // 重点: 排除 node_modules 中的文件,
        // 不然真的会非常慢!
        exclude: /node_modules/
      }
    ]
  },
  // 如果你自己直接用上 babel-loader,
  // 那么 babel 配置项就是必须配的。
  babel: {
    presets: ['es2015'],
    plugins: ['transform-runtime']
  }
}

results matching ""

    No results matching ""