当前位置: 首页 > news >正文

38-mini-vue 实现解析 element

实现解析 element

  1. 思路
  • 区别与解析插值语法,解析 element 需要不同类型和方法, 尖角号和第一个字符是字母
  • 将解析完成后的代码都删掉
  1. 测试代码
describe("element",()=>{it("simple element div",()=>{constast=baseParse("<div></div>")expect(ast.children[0]).toStrictEqual({type:NodeTypes.ELEMENT,tag:"div"})})})
  1. 效果实现
// compiler-core/src/parse.tsfunctionparseChildren(context){constnodes:any[]=[]letnode:anyconsts=context.sourceif(s.startsWith('{{')){node=parseInterpolation(context)}elseif(s[0]==='<'){// ✅ 匹配出标签if(/[a-z]/i.test(context.source[1])){// ✅console.log('解析到标签');node=parseElement(context)// 处理标签}}nodes.push(node)returnnodes}functionparseElement(context){// ✅letelement=parseTag(context,TagType.Start)// ✅ 处理前标签parseTag(context,TagType.End)// ✅ 处理后标签returnelement}functionparseTag(context,type:TagType){// ✅// 1. 解析 tagconstmatch:any=/^<\/?([a-z]*)/i.exec(context.source)consttag=match[1]// 2. 删除处理完成的代码advanceBy(context,match[0].length)advanceBy(context,1)if(type===TagType.End)returnreturn{type:NodeTypes.ELEMENT,tag}}
http://www.jsqmd.com/news/318727/

相关文章:

  • Java零基础必看,1小时搞定微服务,从0到1搭建springcloud+nacos实战项目,搞定企业刚需技术!
  • 第6章:字符设备驱动的高级操作1:ioctl 系统调用
  • SQL 注入攻防进阶
  • 让 Q 值估计更准确:从 DQN 到 Double DQN 的改进方案
  • 《贾子智慧理论体系:从认知到文明的统一框架》| Kucius Wisdom Framework: A Unified Framework from Cognition to Civilization
  • 使用Dockerfile构建Flask应用镜像
  • vulnstack红队实战一
  • 全球首次突破异形框定位难题,百度开源全新OCR模型 PaddleOCR-VL-1.5
  • 智能指针详解
  • PVE 9.0 定制 Debian 13 镜像 支持 Cloud-Init 敏捷部署虚拟机【模板篇】
  • Java面试中的异常继承难题:自定义Exception避坑指南
  • Spring Boot的项目创建
  • 小程序毕设项目推荐-基于SpringBoot的医院设备管理及报修系统微信小程序基于springboot的医院设备管理及报修小程序的设计与实现【附源码+文档,调试定制服务】
  • 小程序毕设选题推荐:基于springboot的医院设备管理及报修小程序的设计与实现基于微信小程序的医院设备管理及报修系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 基于SpringBoot的房屋租售系统毕业论文+PPT(附源代码+演示视频)
  • 销售实战资源合集
  • 使用 NanUI 快速创建具有现代用户界面的 WinForm 应用程序
  • AI运维专家圆桌:新兴技术类别的诞生
  • ServiceNow与Anthropic达成多年合作协议
  • 一款基于 .NET Avalonia 开源免费、快速、跨平台的图片查看器
  • 【课程设计/毕业设计】基于微信小程序的医院设备管理及报修系统基于springboot的医院设备管理及报修小程序的设计与实现【附源码、数据库、万字文档】
  • AI工具存在严重安全脆弱性,治理刻不容缓
  • 小程序计算机毕设之基于SpringBoot+微信小程序的微信医院医疗设备管理系统管理系统基于springboot的医院设备管理及报修小程序的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • SolarWinds修复Web Help Desk四个关键漏洞
  • 小程序毕设项目:基于springboot的医院设备管理及报修小程序的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 为啥大厂 FPS 进对局不立刻清空局外缓存,而是打完再清?(大白话超长版)
  • 【毕业设计】基于springboot的医院设备管理及报修小程序的设计与实现(源码+文档+远程调试,全bao定制等)
  • 大数据架构设计:非结构化数据处理系统搭建
  • 《明日方舟:终末地》:披着二游皮的基建模拟器
  • Redis 与大数据 NoSQL 数据库的融合应用