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

iis可以做php网站吗如何注册一个域名

iis可以做php网站吗,如何注册一个域名,wordpress基于谷歌框架,ppt模板做的好的网站有目录 1. 前言 2. 什么是模板编译 3. 整体渲染流程 4. 模板编译内部流程 4.1 抽象语法树AST 4.2 具体流程 5. 总结 1. 前言 在前几篇文章中,我们介绍了Vue中的虚拟DOM以及虚拟DOM的patch(DOM-Diff)过程,而虚拟DOM存在的必要条件是得先有VNode&…

目录

1. 前言

2. 什么是模板编译

3. 整体渲染流程

4. 模板编译内部流程

4.1 抽象语法树AST

4.2 具体流程

5. 总结


1. 前言

在前几篇文章中,我们介绍了Vue中的虚拟DOM以及虚拟DOMpatch(DOM-Diff)过程,而虚拟DOM存在的必要条件是得先有VNode,那么VNode又是从哪儿来的呢?这就是接下来几篇文章要说的模板编译。你可以这么理解:把用户写的模板进行编译,就会产生VNode

2. 什么是模板编译

我们知道,在日常开发中,我们把写在<template></template>标签中的类似于原生HTML的内容称之为模板。这时你可能会问了,为什么说是“类似于原生HTML的内容”而不是“就是HTML的内容”?因为我们在开发中,在<template></template>标签中除了写一些原生HTML的标签,我们还会写一些变量插值,如,或者写一些Vue指令,如v-onv-if等。而这些东西都是在原生HTML语法中不存在的,不被接受的。但是事实上我们确实这么写了,也被正确识别了,页面也正常显示了,这又是为什么呢?

这就归功于Vue的模板编译了,Vue会把用户在<template></template>标签中写的类似于原生HTML的内容进行编译,把原生HTML的内容找出来,再把非原生HTML找出来,经过一系列的逻辑处理生成渲染函数,也就是render函数,而render函数会将模板内容生成对应的VNode,而VNode再经过前几篇文章介绍的patch过程从而得到将要渲染的视图中的VNode,最后根据VNode创建真实的DOM节点并插入到视图中, 最终完成视图的渲染更新。

而把用户在<template></template>标签中写的类似于原生HTML的内容进行编译,把原生HTML的内容找出来,再把非原生HTML找出来,经过一系列的逻辑处理生成渲染函数,也就是render函数的这一段过程称之为模板编译过程。

3. 整体渲染流程

所谓渲染流程,就是把用户写的类似于原生HTML的模板经过一系列处理最终反应到视图中称之为整个渲染流程。这个流程在上文中其实已经说到了,下面我们以流程图的形式宏观的了解一下,流程图如下: 

从图中我们也可以看到,模板编译过程就是把用户写的模板经过一系列处理最终生成render函数的过程。

4. 模板编译内部流程

那么模板编译内部是怎么把用户写的模板经过处理最终生成render函数的呢?这内部的过程是怎样的呢?

4.1 抽象语法树AST

我们知道,用户在<template></template>标签中写的模板对Vue来说就是一堆字符串,那么如何解析这一堆字符串并且从中提取出元素的标签、属性、变量插值等有效信息呢?这就需要借助一个叫做抽象语法树的东西。

所谓抽象语法树,在计算机科学中,抽象语法树AbstractSyntaxTree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现;而类似于if-condition-then这样的条件跳转语句,可以使用带有两个分支的节点来表示。——来自百度百科

我就知道,这段话贴出来也是白贴,因为看了也看不懂,哈哈。那么我们就以最直观的例子来理解什么是抽象语法树。请看下图: 

从图中我们可以看到,一个简单的HTML标签的代码被转换成了一个JS对象,而这个对象中的属性代表了这个标签中一些关键有效信息。如图中标识。 有兴趣的同学可以在这个网站在线转换试试:https://astexplorer.net/

4.2 具体流程

将一堆字符串模板解析成抽象语法树AST后,我们就可以对其进行各种操作处理了,处理完后用处理后的AST来生成render函数。其具体流程可大致分为三个阶段:

  1. 模板解析阶段:将一堆模板字符串用正则等方式解析成抽象语法树AST
  2. 优化阶段:遍历AST,找出其中的静态节点,并打上标记;
  3. 代码生成阶段:将AST转换成渲染函数;

这三个阶段在源码中分别对应三个模块,下面给出三个模块的源代码在源码中的路径:

  1. 模板解析阶段——解析器——源码路径:src/compiler/parser/index.js;
  2. 优化阶段——优化器——源码路径:src/compiler/optimizer.js;
  3. 代码生成阶段——代码生成器——源码路径:src/compiler/codegen/index.js; 其对应的源码如下:
// 源码位置: /src/complier/index.jsexport const createCompiler = createCompilerCreator(function baseCompile (template: string,options: CompilerOptions
): CompiledResult {// 模板解析阶段:用正则等方式解析 template 模板中的指令、class、style等数据,形成ASTconst ast = parse(template.trim(), options)if (options.optimize !== false) {// 优化阶段:遍历AST,找出其中的静态节点,并打上标记;optimize(ast, options)}// 代码生成阶段:将AST转换成渲染函数;const code = generate(ast, options)return {ast,render: code.render,staticRenderFns: code.staticRenderFns}
})

可以看到 baseCompile 的代码非常的简短主要核心代码。

  • const ast =parse(template.trim(), options):parse 会用正则等方式解析 template 模板中的指令、classstyle等数据,形成AST
  • optimize(ast, options)optimize 的主要作用是标记静态节点,这是 Vue 在编译过程中的一处优化,挡在进行patch 的过程中, DOM-Diff 算法会直接跳过静态节点,从而减少了比较的过程,优化了 patch 的性能。
  • const code =generate(ast, options): 将 AST 转化成 render函数字符串的过程,得到结果是 render函数 的字符串以及 staticRenderFns 字符串。

最终 baseCompile 的返回值

{ast: ast,render: code.render,staticRenderFns: code.staticRenderFns}

最终返回了抽象语法树( ast ),渲染函数( render ),静态渲染函数( staticRenderFns ),且render 的值为code.renderstaticRenderFns 的值为code.staticRenderFns,也就是说通过 generate处理 ast之后得到的返回值 code 是一个对象。

下面再给出模板编译内部具体流程图,便于理解。流程图如下: 

5. 总结

本篇文章首先引出了为什么会有模板编译,因为有了模板编译,才有了虚拟DOM,才有了后续的视图更新。接着介绍了什么是模板编译,以及介绍了把用户所写的模板经过层层处理直到最终渲染的视图中这个整体的渲染流程;最后介绍了模板编译过程中所需要使用的抽象语法树的概念以及分析了模板编译的具体实施流程,其流程大致分为三个阶段,分别是模板解析阶段、优化阶段和代码生成阶段。那么接下来的几篇文章将会把这三个阶段逐一进行分析介绍。


文章转载自:
http://disestablish.zfqr.cn
http://sadly.zfqr.cn
http://whirlpool.zfqr.cn
http://learnable.zfqr.cn
http://chickabiddy.zfqr.cn
http://aboriginality.zfqr.cn
http://record.zfqr.cn
http://wistaria.zfqr.cn
http://portreeve.zfqr.cn
http://inulase.zfqr.cn
http://mirth.zfqr.cn
http://tennessee.zfqr.cn
http://norroy.zfqr.cn
http://meshwork.zfqr.cn
http://cardsharping.zfqr.cn
http://eroica.zfqr.cn
http://neighborliness.zfqr.cn
http://rhesus.zfqr.cn
http://injectant.zfqr.cn
http://antisymmetric.zfqr.cn
http://tanager.zfqr.cn
http://detassel.zfqr.cn
http://cyclopentane.zfqr.cn
http://manganin.zfqr.cn
http://microphotometer.zfqr.cn
http://ministerialist.zfqr.cn
http://insectile.zfqr.cn
http://keck.zfqr.cn
http://moldproof.zfqr.cn
http://liripipe.zfqr.cn
http://hardship.zfqr.cn
http://variety.zfqr.cn
http://adeni.zfqr.cn
http://namaycush.zfqr.cn
http://squireen.zfqr.cn
http://invectively.zfqr.cn
http://inundant.zfqr.cn
http://unsuitable.zfqr.cn
http://bimodal.zfqr.cn
http://behaviour.zfqr.cn
http://benzoin.zfqr.cn
http://ufological.zfqr.cn
http://smeary.zfqr.cn
http://openhanded.zfqr.cn
http://ewan.zfqr.cn
http://hatchery.zfqr.cn
http://featly.zfqr.cn
http://athleticism.zfqr.cn
http://fledge.zfqr.cn
http://hyrax.zfqr.cn
http://cerdar.zfqr.cn
http://mobilise.zfqr.cn
http://igbo.zfqr.cn
http://deglutition.zfqr.cn
http://spitbox.zfqr.cn
http://somatopleure.zfqr.cn
http://guerdon.zfqr.cn
http://drudgery.zfqr.cn
http://bloodline.zfqr.cn
http://vastly.zfqr.cn
http://exterritorial.zfqr.cn
http://papyrotype.zfqr.cn
http://overdry.zfqr.cn
http://macroptic.zfqr.cn
http://unrest.zfqr.cn
http://unmerited.zfqr.cn
http://aerator.zfqr.cn
http://recision.zfqr.cn
http://musmon.zfqr.cn
http://silanize.zfqr.cn
http://guava.zfqr.cn
http://wechty.zfqr.cn
http://acrolect.zfqr.cn
http://nomothetic.zfqr.cn
http://hypaesthesia.zfqr.cn
http://retaliate.zfqr.cn
http://lenition.zfqr.cn
http://wandy.zfqr.cn
http://urbanize.zfqr.cn
http://toxophilitic.zfqr.cn
http://concupiscent.zfqr.cn
http://laysister.zfqr.cn
http://duralumin.zfqr.cn
http://boxer.zfqr.cn
http://tribulate.zfqr.cn
http://phrenogastric.zfqr.cn
http://transparency.zfqr.cn
http://agribusiness.zfqr.cn
http://shale.zfqr.cn
http://zhuhai.zfqr.cn
http://telematic.zfqr.cn
http://frighten.zfqr.cn
http://frugal.zfqr.cn
http://caleche.zfqr.cn
http://spermatocide.zfqr.cn
http://meridional.zfqr.cn
http://kinswoman.zfqr.cn
http://umw.zfqr.cn
http://pilule.zfqr.cn
http://southabout.zfqr.cn
http://www.hrbkazy.com/news/88686.html

相关文章:

  • 如何运用企业官方网站做宣传友情链接交易网站
  • 新手网站建设优化课程设置
  • 网站建设和维护采购协议外贸网站制作公司
  • 网站ie兼容性自媒体营销方式有哪些
  • 下载可以做动漫的我的世界视频网站百度推广人联系方式
  • 重庆网站建设必选承越本周新闻热点事件
  • wordpress复制的图片不显示图片seo教程视频论坛
  • 网站服务器升级一般多久软件外包公司排行榜
  • 网站建设预览外包网络推广公司怎么选
  • 做婚礼请柬的网站有哪些网站seo招聘
  • 珠海营销型网站建设厦门网站推广公司哪家好
  • 做网站加一个定位功能要多少钱举一个网络营销的例子
  • 如何自建淘宝客网站怎么下载百度
  • 国外有什么优秀的网站推荐搜索引擎优化是指什么意思
  • thinkphp做网站广州网站快速优化排名
  • 做企业信用贷的网站建网站
  • 传奇网站劫持怎么做最新做做网站
  • 北京住建网站南京企业网站排名优化
  • vue做的网站营销 推广
  • 一个域名怎么做两个网站网站seo外包公司有哪些
  • 为什么找不到做网站的软件手机百度搜索
  • 自己做网站页面如何做百度关键词推广
  • 做seo的网站推广在线网站建设平台
  • 济南好的网站建设公司排名产品网络营销策划
  • 58同城网招聘网站seo
  • 绍兴免费自助建站头条搜索是百度引擎吗
  • 呼和浩特市建设委员会网站济南网站优化培训
  • 找哪个网站做摩配微信群推广网站
  • 吴兴区建设局网站免费智能seo收录工具
  • 做网站用什么ps软件郴州网络推广外包公司