xiaofeihe

vue文件拆分过程

.vue文件拆分是基于htmlparser进行的,并进行了一些调整。htmlparser对外提供了start、end、chars三个回调:
1.新节点开始解析时回调start
2.节点解析结束时回调end
3.文本解析完成时回调chars

我们传入需要解析的.vue文件代码字符串,当解析到<template><script><styles>节点时,分别触发start、end回调:
1.从start回调中我们拿到tag、attrs和节点开始位置等
2.从end回调中我们拿到tag和节点结束位置等,同时根据开始结束位置截取字符串得到<template><script><styles>里面的内容

最后我们得到一个下图这样的对象:
avatar
template、script为单个对象,styles为数组可以有多个。

备注:

1.除了template、script、styles类型外我们还可以自定义一些类型,比如:docs类型。不过开发过程中未使用过,这个可以google了解下。

源码参考:

https://github.com/ktsn/vue-sfc-parser

参考:

https://zhuanlan.zhihu.com/p/24311601

https://github.com/berwin/Blog/issues/18

https://segmentfault.com/a/1190000015432258

https://github.com/vuejs/vue/tree/dev/src/sfc