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>
里面的内容
最后我们得到一个下图这样的对象:
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