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

Vue template到render过程,以及render的调用时机

Vue template到render过程

  • vue的模版编译过程主要如下:template -> ast -> render函数
  • (1)调用parse方法将template转化为ast(抽象语法树)
  • (2)对静态节点做优化
  • (3)生成代码
  • render函数的调用时机

vue的模版编译过程主要如下:template -> ast -> render函数

vue 在模版编译版本的码中会执行 compileToFunctions 将template转化为render函数:

// 将模板编译为render函数
const { render, staticRenderFns } = compileToFunctions(template,options, this)

CompileToFunctions中的主要逻辑如下∶

(1)调用parse方法将template转化为ast(抽象语法树)

constast = parse(template.trim(), options)

parse的目标:把tamplate转换为AST树,它是一种用 JavaScript对象的形式来描述整个模板。
解析过程:利用正则表达式顺序解析模板,当解析到开始标签、闭合标签、文本的时候都会分别执行对应的 回调函数,来达到构造AST树的目的。
AST元素节点总共三种类型:type为1表示普通元素、2为表达式、3为纯文本

(2)对静态节点做优化

optimize(ast,options)

这个过程主要分析出哪些是静态节点,给其打一个标记,为后续更新渲染可以直接跳过静态节点做优化

深度遍历AST,查看每个子树的节点元素是否为静态节点或者静态节点根。如果为静态节点,他们生成的DOM永远不会改变,这对运行时模板更新起到了极大的优化作用。

(3)生成代码

const code = generate(ast, options)

generate将ast抽象语法树编译成 render字符串并将静态部分放到 staticRenderFns 中,最后通过 new Function(“render”) 生成render函数。

render函数的调用时机

在beforeMount生命周期钩子期间调用,因为此时,模板编译已完成,但是为渲染成真实DOM

相关文章:

Vue template到render过程,以及render的调用时机

Vue template到render过程 vue的模版编译过程主要如下:template -> ast -> render函数(1)调用parse方法将template转化为ast(抽象语法树)(2)对静态节点做优化(3)生…...

阿里云服务器Ngnix配置SSL证书开启HTTPS访问

文章目录 前言一、SSL证书是什么?二、如何获取免费SSL证书三、Ngnix配置SSL证书总结 前言 很多童鞋的网站默认访问都是通过80端口的Http服务进行访问,往往都会提示不安全,很多人以为Https有多么高大上,实际不然,他只是…...

12 list的使用

文档介绍 文档介绍 1.list是可以在常数范围内的任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代 2.list的底层是带头双向链表循环结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和…...

控件交互与视图交互的区别

在实际应用中,控件交互和视图交互的区别主要体现在以下几个方面: (1)关注的对象不同:控件交互更关注于界面中的单个控件如何响应用户的操作,例如按钮的点击、列表项的滑动等。而视图交互则更关注于整个界面的布局、导航和交互设计…...

打包 加載AB包 webGl TextMeshPro 變紫色的原因

1.打包 加載AB包 webGl TextMeshPro 變紫色的原因 編輯器命令行https://docs.unity3d.com/cn/2019.4/Manual/CommandLineArguments.html 1.UnityHub 切換命令行參數 -force-gles 2.-force-gles(仅限 Windows)| 使 Editor 使用 OpenGL for Embedded Sys…...

美易官方:去年全球企业派息1.66万亿美元创新高

去年全球企业派息总额达到了1.66万亿美元,创下了历史新高。这一数字不仅彰显了全球企业的盈利能力和财务稳健性,也反映了它们对股东的责任感和对未来发展的信心。在这一背景下,微软和苹果这两家科技巨头在派息方面的表现尤为引人注目。 微软是…...

基于Springboot的面向智慧教育的实习实践系统设计与实现(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的面向智慧教育的实习实践系统设计与实现(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller&…...

【数据库-黑马笔记】基础-SQL

本文参考b站黑马数据库视频,总结详细全面的笔记 ,可结合视频观看1~26集 MYSQL 的基础知识框架如下 目录 一、MYSQL概述 1、数据库相关概念 2、MYSQL的安装及启动 二、SQL 1、DDL【Data Defination】 2、DML【Data Manipulation】 ①、插入 ②、更新和删除 3、 DQL【Data…...

MySQL性能分析:性能模式和慢查询日志的使用

目录 一、性能模式 步骤1. 启用性能模式 步骤2. 查询性能数据 步骤3. 分析性能数据 步骤4. 优化与调整 注意事项 二、慢查询日志 步骤1. 启用慢查询日志...

【哈希表算法题记录】15. 三数之和,18. 四数之和——双指针法

题目链接 15. 三数之和 思路 这题虽然放在哈希表的分类里面,但是用双指针法会更高效。 之前的双指针我们要么是一头left一尾right,要么是快fast慢slow指针。这里是要计算三个数的和,我们首先对数组进行从小到大的排序,先固定一…...

代码随想录算法训练营Day44 ||leetCode 完全背包 || 518. 零钱兑换 II || 377. 组合总和 Ⅳ

完全背包 518. 零钱兑换 II 遍历硬币和金额&#xff0c;累加所有可能 class Solution { public:int change(int amount, vector<int>& coins) {vector<int> dp(amount1,0);dp[0]1;for (int i 0; i < coins.size();i){for(int j coins[i]; j < amount;…...

RabbitMQ发布确认高级版

1.前言 在生产环境中由于一些不明原因&#xff0c;导致 RabbitMQ 重启&#xff0c;在 RabbitMQ 重启期间生产者消息投递失败&#xff0c; 导致消息丢失&#xff0c;需要手动处理和恢复。于是&#xff0c;我们开始思考&#xff0c;如何才能进行 RabbitMQ 的消息可靠投递呢&…...

【阿里云系列】-基于云效构建部署Springboot项目到ACK

介绍 为了提高项目迭代的速度加速交付产品给客户&#xff0c;我们通常会选择CICD工具来减少人力投入产生的成本&#xff0c;开源的工具比如有成熟的Jenkins&#xff0c;但是本文讲的是阿里云提高的解决方案云效平台&#xff0c;通过配置流水线的形式实现项目的快速部署到服务器…...

PyTorch搭建LeNet训练集详细实现

一、下载训练集 导包 import torch import torchvision import torch.nn as nn from model import LeNet import torch.optim as optim import torchvision.transforms as transforms import matplotlib.pyplot as plt import numpy as npToTensor()函数&#xff1a; 把图像…...

R语言复现:中国Charls数据库一篇现况调查论文的缺失数据填补方法

编者 在临床研究中&#xff0c;数据缺失是不可避免的&#xff0c;甚至没有缺失&#xff0c;数据的真实性都会受到质疑。 那我们该如何应对缺失的数据&#xff1f;放着不管&#xff1f;还是重新开始?不妨试着对缺失值进行填补&#xff0c;简单又高效。毕竟对于统计师来说&#…...

解决Git:Author identity unknown Please tell me who you are.

报错信息&#xff1a; 意思&#xff1a; 作者身份未知 ***请告诉我你是谁。 解决办法&#xff1a; git config --global user.name "你的名字"git config --global user.email "你的邮箱"...

Flink StreamTask启动和执行源码分析

文章目录 前言StreamTask 部署启动Task 线程启动StreamTask 初始化StreamTask 执行 前言 Flink的StreamTask的启动和执行是一个复杂的过程&#xff0c;涉及多个关键步骤。以下是StreamTask启动和执行的主要流程&#xff1a; 初始化&#xff1a;StreamTask的初始化阶段涉及多个…...

【MySQL 系列】MySQL 语句篇_DCL 语句

DCL&#xff08; Data Control Language&#xff0c;数据控制语言&#xff09;用于对数据访问权限进行控制&#xff0c;定义数据库、表、字段、用户的访问权限和安全级别。主要关键字包括 GRANT、 REVOKE 等。 文章目录 1、MySQL 中的 DCL 语句1.1、数据控制语言--DCL1.2、MySQ…...

什么是序列化?为什么需要序列化?

1、典型回答 序列化(Serialization)序列化是将对象转换为可存储或传输的形式的过程(例如: 将对象转换为字节流) 反序列化(Deserialization) 是将序列化后的数据(例如: 二进制文件)转换回原始对象的过程。通过反序列化&#xff0c;可以从存储介质 (如磁盘、数据库) 或通过网络…...

Linux本地搭建FastDFS系统

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…...

提升电路设计效率:用快马AI自动化multisim中的参数扫描与仿真调试

最近在做一个运算放大器电路设计项目时&#xff0c;发现手动调试参数实在太费时间了。每次修改电阻值都要重新连线、设置仿真&#xff0c;效率特别低。于是我开始寻找能提升multisim仿真效率的方法&#xff0c;最终在InsCode(快马)平台上找到了解决方案。 传统调试的痛点 以前设…...

用eNSP模拟校园网:从零开始配置OSPF、VRRP和MSTP(附完整配置命令)

eNSP实战&#xff1a;手把手教你构建高可靠校园网络架构 第一次打开eNSP时&#xff0c;面对空白的拓扑画布和琳琅满目的设备图标&#xff0c;大多数网络初学者都会感到既兴奋又忐忑。校园网络作为融合多种协议的典型场景&#xff0c;其设计过程就像搭建一座精密的立交桥系统——…...

feishu2md:让飞书文档自由流转的格式转换解决方案

feishu2md&#xff1a;让飞书文档自由流转的格式转换解决方案 【免费下载链接】feishu2md 一键命令下载飞书文档为 Markdown&#xff08;寻找维护者&#xff09; 项目地址: https://gitcode.com/gh_mirrors/fe/feishu2md 问题发现&#xff1a;当飞书文档遇见格式壁垒 在…...

JamTools:一款免费开源的跨平台聚合工具软件,一站式解决多种办公需求

在数字化办公日益普及的今天&#xff0c;我们每天都需要使用各种工具来完成不同的任务。 从截图识字到视频转换&#xff0c;从鼠标录制到文件传输&#xff0c;每一项功能都可能需要单独安装一款软件。 这不仅会占用大量的系统资源&#xff0c;还会增加我们的学习成本和操作复杂…...

西门子S7-200 SMART PLC与SMART 700触摸屏在追剪定长切割系统中的稳定应用

追剪&#xff0c;定长切割&#xff0c;跟随切割&#xff0c;PLC用的是西门子smart200&#xff0c;屏用的是smart700&#xff0c;是实际项目运行非常稳定&#xff0c;带堆放功能&#xff0c;报警功能&#xff0c;可提供CAD电气图&#xff0c;程序源代码&#xff0c;屏程序源代码…...

HY-MT1.5-1.8B优化技巧:量化后<1GB显存,边缘设备流畅运行方案

HY-MT1.5-1.8B优化技巧&#xff1a;量化后<1GB显存&#xff0c;边缘设备流畅运行方案 1. 引言 在边缘计算和移动设备上部署大语言模型一直面临显存占用高、推理速度慢的挑战。腾讯混元开源的HY-MT1.5-1.8B模型通过创新的量化技术和架构优化&#xff0c;成功实现了在1GB显存…...

RePKG工具完全指南:Wallpaper Engine资源处理全流程解析

RePKG工具完全指南&#xff1a;Wallpaper Engine资源处理全流程解析 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 核心能力解析&#xff1a;从文件解析到格式转换 解析PKG文件结…...

OpenClaw硬件配置指南:千问3.5-35B-A3B-FP8本地运行最佳实践

OpenClaw硬件配置指南&#xff1a;千问3.5-35B-A3B-FP8本地运行最佳实践 1. 为什么需要硬件优化&#xff1f; 当我第一次尝试在MacBook Pro M1 Max上运行千问3.5-35B-A3B-FP8模型时&#xff0c;系统几乎立即触发了内存压力警告。风扇开始狂转&#xff0c;而模型响应速度慢得令…...

BGE-Large-Zh部署案例:边缘设备(Jetson Orin)上INT4量化轻量运行

BGE-Large-Zh部署案例&#xff1a;边缘设备&#xff08;Jetson Orin&#xff09;上INT4量化轻量运行 1. 项目背景与价值 在边缘计算场景中部署大型语言模型一直是个技术挑战&#xff0c;特别是像BGE-Large-Zh这样的中文语义向量化模型。传统的部署方式往往需要强大的GPU服务器…...

OpenClaw+Phi-3-vision-128k-instruct家庭应用:老照片修复与故事生成

OpenClawPhi-3-vision-128k-instruct家庭应用&#xff1a;老照片修复与故事生成 1. 为什么选择这个组合&#xff1f; 去年整理老家相册时&#xff0c;我发现许多珍贵的老照片已经泛黄褪色&#xff0c;边角还有折痕。更遗憾的是&#xff0c;照片背后的故事随着长辈的记忆模糊而…...