首页 前端知识 类似Vue的mvvm虚拟语法树AST解析器,html转AST(2)

类似Vue的mvvm虚拟语法树AST解析器,html转AST(2)

2024-04-21 10:04:15 前端知识 前端哥 737 804 我要收藏

‘input,isindex,keygen,link,meta,param,source,track,wbr’);

function makeMap (values) {

values = values.split(/,/);

var map = {};

values.forEach(function (value) {

map[value] = 1;

});

return function (value) {

return map[value.toLowerCase()] === 1;

};

}

function parse(template){

var root;//根节点

var currentParent;//当前父节点

var stack = [];//节点栈

if(!template) return ;

parseHtml(template,{

start:function(tagName,attrs,unary){

//元素节点

var element={

nodeType:1,

tagName:tagName,

attrs:attrs,

children:[],

parent:‘’

}

//如果是第一次进来

if(!root){

root = element;

}

if(currentParent){

//添加子节点,并建立parent对应关系

element.parent=currentParent

currentParent.children.push(element);

}

if (!unary) {//如果不是自行结束标签

currentParent = element;

stack.push(element)

}

},

end:function(){//处理结束标签

stack.length -=1;

currentParent=stack[stack.length-1]

},

chars:function(text){//处理文字

if(!currentParent){

return;

}

var children = currentParent.children;

children.push({

nodeType:3,

nodeValue:text,

textContent:text

})

},

comment:function (text) {// 处理注释

if(!currentParent){

return;

}

var children = currentParent.children;

children.push({

nodeType:8,

nodeValue:text,

textContent:text

})

}

})

return root ;

}

function parseHtml(template,options){

// 开始标签头

var startTagOpen = /^<([\w-]+)/,

// 开始标签尾

startTagClose = /^\s*(/?)>/,

// 标签属性

attribute = /\s*([\s"‘<>/=]+)(?:\s*((?:=))\s*(?:"([“]*)”+|'([’]*)‘+|([^\s"’=<>`]+)))?/,

// 结束标签

endTag = /^</([\w-]+)>/;

var html = template;

var tagStack = []; // 标签栈

var index = 0;

while(html){

var text;

start = html.indexOf(‘<’);

if(start===0){

//处理注释

var commentMatch = parseCommentsTag();

if(commentMatch){

if(options.comment){

options.comment(commentMatch);

}

continue;

}

// 匹配起始标签

var startTagMatch = parseStartTag(); //处理后得到match

if(startTagMatch){

handleStartTag(startTagMatch);

continue;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

React

  • 介绍一下react

  • React单项数据流

  • react生命周期函数和react组件的生命周期

  • react和Vue的原理,区别,亮点,作用

  • reactJs的组件交流

  • 有了解过react的虚拟DOM吗,虚拟DOM是怎么对比的呢

  • 项目里用到了react,为什么要选择react,react有哪些好处

  • 怎么获取真正的dom

  • 选择react的原因

  • react的生命周期函数

  • setState之后的流程

  • react高阶组件知道吗?

  • React的jsx,函数式编程

  • react的组件是通过什么去判断是否刷新的

  • 如何配置React-Router

  • 路由的动态加载模块

  • Redux中间件是什么东西,接受几个参数

  • redux请求中间件如何处理并发

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

x中间件是什么东西,接受几个参数

  • redux请求中间件如何处理并发

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-uDI3BqiP-1712563197555)]

转载请注明出处或者链接地址:https://www.qianduange.cn//article/5525.html
标签
评论
发布的文章

CSS(8)空间转换 动画

2024-04-29 12:04:29

CSS介绍(4)--背景属性

2024-04-29 12:04:26

Web学习记录---CSS(1)

2024-04-29 12:04:17

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!