编译时条件注释匹配开头标识正则?

来源:6-6 parse(2)

菜菜木子

2021-05-14

// 解析是否是条件注释
const conditionalComment = /^<!\[/
if (conditionalComment.test(html)) {
// 若为条件注释,则继续查找是否存在']>'
const conditionalEnd = html.indexOf(']>')

if (conditionalEnd >= 0) {
// 若存在 ']>',则从原本的html字符串中把条件注释截掉,
// 把剩下的内容重新赋给html,继续向后匹配
advance(conditionalEnd + 2)
continue
}
}


以上代码匹配条件注释来开头和结尾的正则,写法不太懂,
条件注释:
"<!--[if gt IE 6]> 用于 IE6 以上版本<![endif]-->"
开头是<!--,但是源码正则是/^<!\[/
结尾是]-->,但是源码里是]>,不是很理解

写回答

2回答

ustbhuangyi

2021-05-14

//img.mukewang.com/szimg/609e48670984152f30261130.jpg
看图吧

0
3
菜菜木子
回复
ustbhuangyi
点开了
2021-05-16
共3条回复

ustbhuangyi

2021-05-14

条件注释参考 https://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment

0
1
菜菜木子
链接失效,打不开
2021-05-14
共1条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4986 学习 · 1038 问题

查看课程