IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 从无到有浅聊Vue3的进步 -> 正文阅读

[JavaScript知识库]从无到有浅聊Vue3的进步

从无到有浅聊Vue3的进步

重点:

  • vue.js是什么
  • vue的优点
  • vue3的进步

- vue.js是什么

? 官网描述:vue是一套用于构建用户界面的渐进式框架,可以自底向上逐层应用,Vue 的核心库只关注视图层,数据和 DOM 已经被建立了关联,所有东西都是响应式的,几乎任意类型的应用界面都可以抽象为一个组件树。

- vue的优点

个人在查阅资料收集分为7点

1. 轻量级框架

概括一句话来描述:只关注视图层,是一个构建数据的视图集合,大小只有几十kb,

2. 简单易学

上手快,文档易懂

3. 数据双向绑定

? 通过MVVM思想实现数据的双向绑定,让开发者不用再操作dom对象。MVVM分别代表M(model),V(view),VM(View-Model)即模型-视图-视图模型。老生常谈,**模型(Model)**指的是后端传递的数据。**视图(View)**指的是所看到的页面。**视图模型(ViewModel)**是mvvm模式的核心,它是连接view和model的桥梁。它的两个方向:一是将模型(Model)转化成视图(View),即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将视图(View)转化成模型(Model),即将所看到的页面转化成后端的数据。

4. 组件化

? 一句话概括:先在父级应用中写好各种组件标签(占坑),并且在组件标签中写好要传入组件的参数(就像给函数传入参数一样,这个参数叫做组件的属性),然后再分别写好各种组件的实现(填坑)。

5. 视图,数据,结构分离

分为两部,1.建立组建 2.消费组建 体现的效果为: 同一套逻辑,不同的展示方式。高效的复用组件

下面有篇博客代码实现

Vue开发组件如何将数据和视图分离

6.虚拟DOM

? 虚拟dom,首先了解其由来:假如我们的DOM操作不涉及到通信的话,我们大可以把DOM全部去除然后渲染一份完整的DOM树。总的来说,虚拟DOM就是为了提高页面渲染性能,是随着时代发展而诞生的产物。

? 解决方式是:通过状态生成一个虚拟节点树,然后使用虚拟节点树进行渲染。

? 引入虚拟DOM:只能监听到组件的变化,而组件的内部就使用虚拟DOM进行状态比对,也就是DIFF算法

总结:

  • 获取监听变化后生成的虚拟节点树
  • 与上一次虚拟DOM节点树进行比较
  • 找到差异的部分,渲染到真实的DOM节点上面
  • 更新试图
7. 运行速度更快

- vue3的进步

1. 更好的支持TS类型推导

? 类型推导:通过已知的类型来推断另一个类型

2. Tree-shaking友好

? Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术.它依赖于 ES2015 模块系统中的静态结构特性,即进出口.例如 importexport

es6之前require动态按照条件引入

举个例子登入和注册

//a函数登入
a(){
.....
}
export a


//b函数注册
b(){
.....
}
export b
//动态引入,如果用户的cookies过期我们就使用a函数,执行a函数之后有获取cookies,应该需要用b函数登入,
//且确定何时过期有无其它的交互,所以我们tree shaking无法不断是否清除
if(condition){
   const a = require('a')
}else{
   const b = require('b')
}

import完全静态,我们只能通过导入所有的包后再进行条件获取。如下:

export module ...
//import的话是完全静态,即不运行,很容易知道哪些代码需要清理.
import aaa from "aaa";
import bbb from "bbb";

if (condition) {
   aaa.xxxx
} else {
   bbb.xxx
}

专业总结:因为tree shaking只能在静态modules下工作。ECMAScript 6 模块加载是静态的,因此整个依赖树可以被静态地推导出解析语法树。所以在 ES6 中使用 tree shaking 是非常容易的。对于vue3来说大部分引入model的形式

tree shaking比较经典的面试题下面这篇文章较详细的介绍了tree shaking及其工作原理小红书面试官:介绍一下 tree shaking 及其工作原理 - SegmentFault 思否

3. 代码更容易被压缩
  1. 路由懒加载:分割代码块
  2. 压缩请求资源

给大家拓展下面有vue项目的打包压缩实现

[Vue项目打包压缩的实现(让页面更快响应)](Vue项目打包压缩的实现(让页面更快响应)_vue.js_脚本之家 (jb51.net))

4.逻辑复用

逻辑复用有很多种方案

举例:

  1. mixins混入
  2. 高级组件的搭配
  3. 插槽

? 面试官一般谈到vue3哪些进步时之前会你会vue吗,此时的你说会或者精通,如果会问优点的这种简单的问题就一定要答上,不然真的org,大概率会问vue3哪些进步,重点在tree shaking,不仅要知道有这玩意,还需要知道怎么实现,这样才算是比较**认真**看了vue。

- 好文推荐

vue2基础总结和vue3新特性推荐:

vue基础总结2 - DAVENEE - 博客园 (cnblogs.com)

一文学会Vue3的新特性 - 知乎 (zhihu.com)

Vue3新特性一篇搞懂 (juejin.cn)

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:07:20  更:2021-07-27 16:07:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 15:17:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码