vue-loader 是用于处理单文件的 webpack loader。在 Vue 组件中,分为 template\script\style,结合其他 loader,我们可以用 Pug 编写<tempalte></tempalte>,用 Sass/Less 编写<style></style>,用 js/ts 编写<script></script>

webpack 打包时,会以 loader 方式调用 vue-loader, vue-loader 被执行时,它会对单文件组件的每个语言块用单独的 loader 链处理,最后将这些单独的块装配成最终的组件模块。

vue-loader 会调用@vue-compiler-sfc 模块解析 SFC 源码为一个描述符,然后为每个语言块生成 import 代码。

1
2
3
4
5
6
7
8
9
10
// 模板
import render from 'xxx.vue?vue&type=template'
// script
import script from 'xxx.vue?vue&type=script'
import * from "xxx.vue?vue&type=script"
// 样式
import 'xxx.vue?vue&type=style&index=1'

script.render = render
export default script