前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >petite-vue源码剖析-优化手段template详解

petite-vue源码剖析-优化手段template详解

作者头像
^_^肥仔John
发布于 2022-05-09 08:09:05
发布于 2022-05-09 08:09:05
28200
代码可运行
举报
运行总次数:0
代码可运行

什么是<template>元素?

<template>是2013年定稿用于提供一种更统一、功能更强大的模板本存放方式。具体表现为

更多信息请查看:《HTML语义化:HTML5新标签——template》

v-if搭配<template>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-scope="App"></div>

<script type="module">
  import { createApp } from 'https://unpkg.com/petite-vue?module'

  createApp({
    App: {
      $template: `
      <template v-if="status === 'offline'">
        <span> OFFLINE </span>
      </template>
      <template v-else>
        <span> ONLINE </span>
      </template>
      `,
    }
    status: 'online'
  }).mount('[v-scope]')
</script>

首次渲染过程如下:

小结

  1. 这里利用的是<template>元素本身的特性实现在线解析用户不可见(你看不到我,你看不到我:D),和避免如<img src="logo.png">发送无效请求的问题;
  2. 由于<template>是在block.ts中处理获取模板,因此v-for搭配<template>的原理和v-if是一致的。

错误使用

虽然<template>能帮助我们优化用户体验和性能,但有些时候也会让我们掉到坑里面,下面一起绕过这些坑吧!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-scope="App"></div>

<script type="module">
  import { createApp } from 'https://unpkg.com/petite-vue?module'

  createApp({
    App: {
      $template: `
      <template>
        <div>Hello</div>
      </template>
      `,
    }
    status: 'online'
  }).mount('[v-scope]')
</script>

根块对象对应的是<div v-scope="App"></div>,而<template>由于没有附加v-ifv-for,因此不会为其创建新的块对象进行处理,最后得到的UI就是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div v-scope="App">
  <template>
    <div>Hello</div>
  </template>
</div>

用于无法看到文字Hello。

总结

通过本篇内容的介绍,我们记得<template>必须搭配v-ifv-for使用哦!

后面我们将探索@vue/reactivity在petite-vue的使用,敬请期待。

尊重原创,转载请注明来自:https://cloud.tencent.com/developer/article/1997347 肥仔John

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
petite-vue源码剖析-为什么要读源码?
根据官方解释,petite-vue是专门为非前后端分离的历史项目提供和Vue相近的响应式开发模式。 与完整的Vue相比最大的特点是,面对数据的变化petite-vue采取直接操作DOM的方式重新渲染。
^_^肥仔John
2022/05/09
5150
petite-vue源码剖析-v-if和v-for的工作原理
我们看到在v-if和v-for的解析过程中都会生成块对象,而且是v-if的每个分支都对应一个块对象,而v-for则是每个子元素都对应一个块对象。其实块对象不单单是管控DOM操作的单元,而且它是用于表示树结构不稳定的部分。如节点的增加和删除,将导致树结构的不稳定,把这些不稳定的部分打包成独立的块对象,并封装各自构建和删除时执行资源回收等操作,这样不仅提高代码的可读性也提高程序的运行效率。
^_^肥仔John
2022/05/09
6280
petite-vue源码剖析-从静态视图开始
静态视图是指首次渲染后,不会因UI状态变化引发重新渲染。其中视图不包含任何UI状态,和根据UI状态首次渲染后状态不再更新两种情况,本篇将针对前者进行讲解。
^_^肥仔John
2022/05/09
4450
尤雨溪新作品功能尝鲜,据说仅5.8kb?
链接:https://juejin.cn/post/6983328034443132935
苏南
2021/07/29
5240
5kb 的 Vue:尤雨溪发布新作 petite-vue
前端程序员想必对尤雨溪及其开发的 Vue 框架不陌生。Vue 是一套用于构建用户界面的渐进式 JavaScript 框架,在 2014 年发布后获得了大量开发者的青睐,目前已更新至 3.0 版本。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。 最近,尤雨溪发布了一款针对渐进增强(progressive enhancement)进行优化的 Vue 发行版——petite-vue,大小仅有约 5kb。与标准 Vue 相比,petite-vue 具备相同的模板语法和响应式心理模型,而二者的差别在于 petite-vue 专门针对在服务器框架渲染的一个现有 HTML 页面上 “sprinkle” 少量交互进行了优化。
ConardLi
2021/07/16
3640
尤雨溪的5KB petite-vue源码解析
项目已经启动了,接下来我们先解析下项目入口,由于使用的构建工具是vite,从根目录下的index.html人口找起:
Peter谭金杰
2022/03/22
2470
尤雨溪的5KB petite-vue源码解析
petite-vue源码剖析-ref的工作原理
ref内部的工作原理十分简单,其实就是将指令ref、:ref或v-bind:ref标识的元素实例存储到当前作用域的refs对象中,那么我们就可以通过this.refs获取对应的元素实例。但由于作用域继承上有点小窍门,所以我们能从this.
^_^肥仔John
2022/05/09
4160
如何在不看源码情况下学petite-vue源码
周末没啥事,准备找个优秀且代码量不多的库学习下。最终选择了最近发布的petite-vue,原因如下:
公众号@魔术师卡颂
2021/07/30
5190
如何在不看源码情况下学petite-vue源码
Vue常用内置指令
v-show指令根据表达式的真假,显示或隐藏HTML元素。   使用v-show指令,元素本身是要被渲染的,至于是否显示是通过设置CSS样式属性display来控制的,如果表达式的值为false,则设置样式:"display:none"
别团等shy哥发育
2023/02/25
4510
Vue常用内置指令
VUE-局部使用
Vue 是一款用于构建用户界面的渐进式的JavaScript框架。 (官方:https://cn.vuejs.org/)
愷龍
2024/05/15
1510
VUE-局部使用
【Vue3 从入门到实战 进阶式掌握完整知识体系】007-Vue语法基础:列表循环渲染
訾博ZiBo
2025/01/06
910
【Vue3 从入门到实战 进阶式掌握完整知识体系】007-Vue语法基础:列表循环渲染
Vue3 | 动画专题
-- 使用@keyframes [关键帧实例名]配置好关键帧; -- 使用animation配置关键帧以及动画过程到完成的时延, 完成动画的定义【写在一个CSS类中(如下的myAnimation)】; -- 在data中定义一个以 上面定义的动画CSS类实例(如myAnimation) 为属性值的 数据字段(如myAnimateData); -- 在dom中使用:class=[以 动画CSS类实例 为属性的 数据字段], 引用这个数据字段(myAnimateData)即可,至此完成动画定义; -- 数据字段(如myAnimateData)中,可以通过对 属性值即动画CSS类实例的 布尔值的 改变, 去控制动画的开关,如下 配置false 为关:
凌川江雪
2021/04/09
1.4K0
Vue3 | 动画专题
Vue3 | 条件渲染 与 列表循环渲染
而v-show则通过style="display: none;"样式的配置 隐藏组件:
凌川江雪
2021/03/04
1.3K0
Vue3 | 条件渲染 与 列表循环渲染
Vue3快速入门教程「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。 学某个新技能时,大多数人倾向于:一开始就从头到尾完整学一遍;甚至有人翻来覆去重复学很多遍也达不到熟记于心, 我个人认为,这不是最好的办法~ 我的建议的是: 面向需求 or 面向问题来学习. 最开始你可能不了解你要实现的效果会涉及哪些技术知识点, 那么你可以像产品经理那样先列出PRD, 再根据PRD来一步一步地实现 当你最终完成了整个作品时, 你会发现, 你已经通过这些”点”逐步形成”面”, 对于Vue的学习就达到了事半功倍的效果~ ---- 从需求
全栈程序员站长
2022/08/22
4170
Vue3快速入门教程「建议收藏」
【Vue3 从入门到实战 进阶式掌握完整知识体系】001-Vue语法初探
以前我们要改变页面的内容需要使用 类似document.getElementById的代码来操作DOM,而现在我们不再关心DOM,而是更加关心数据,我们直接操作数据就可以了,剩下的交给Vue,我们就从“面向DOM编程”变成了“面向数据编程”!
訾博ZiBo
2025/01/06
1480
【Vue3 从入门到实战 进阶式掌握完整知识体系】001-Vue语法初探
Vue计算属性
  表达式的逻辑过于复杂的时候,应当考虑使用计算属性。计算属性是以函数形式,在选项对象的computed选项中定义。我们将字符串翻转的功能用计算属性实现,代码如下:
别团等shy哥发育
2023/02/25
1.1K0
Vue计算属性
Vue3 | 基本特性概念 与语法的 应用与案例
Vue3 特性升级 体积更小、速度更快 解决遗留问题 相对于原生的JS编程,Vue3是面向数据编程,直接操作数据, 少了通过 组件id 去get到组件 完了set值等面向DOM的编程,提高开发效率; 本文主要涉及的 语法糖 与 知识点: 文章内容将围绕这些 语法糖 与 知识点 展开 demo实现讲解 和 相关阐述; -Vue.createApp(),创建Vue实例,开始使用Vue; -.mount()指定在哪个组件上使用Vue; 注意没有被mount()指定的组件是不会生效的!
凌川江雪
2021/01/06
1.3K0
③Vue3---快速入门
v-show:(控制元素展示还是隐藏) 不满足条件,span标签还是会被渲染。只是通过CSS的display属性设置为none。代表隐藏。
用户11288958
2025/01/17
1370
③Vue3---快速入门
【Vue3 从入门到实战 进阶式掌握完整知识体系】016-探索组件的理念:使用插槽和具名插槽解决组件内容传递问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ldl29con-1624975950052)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a30b74979659449aba4144113323f866~tplv-k3u1fbpfcp-watermark.image)]
訾博ZiBo
2025/01/06
1330
【Vue3 从入门到实战 进阶式掌握完整知识体系】016-探索组件的理念:使用插槽和具名插槽解决组件内容传递问题
petite-vue源码剖析-逐行解读@vue-reactivity之effect
当我们通过effect将副函数向响应上下文注册后,副作用函数内访问响应式对象时即会自动收集依赖,并在相应的响应式属性发生变化后,自动触发副作用函数的执行。
^_^肥仔John
2022/05/09
7350
相关推荐
petite-vue源码剖析-为什么要读源码?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验