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

网站建设管理与维护个人免费开发app

网站建设管理与维护,个人免费开发app,wordpress首页封面图片不显示,天津做网站一、设计目标 不以解决实际业务痛点的更新都是耍流氓,下面我们来列举一下Vue3之前我们或许会面临的问题 随着功能的增长,复杂组件的代码变得越来越难以维护缺少一种比较「干净」的在多个组件之间提取和复用逻辑的机制类型推断不够友好bundle的时间太久…

一、设计目标

不以解决实际业务痛点的更新都是耍流氓,下面我们来列举一下Vue3之前我们或许会面临的问题

  • 随着功能的增长,复杂组件的代码变得越来越难以维护
  • 缺少一种比较「干净」的在多个组件之间提取和复用逻辑的机制
  • 类型推断不够友好
  • bundle的时间太久了

Vue3 经过长达两三年时间的筹备,做了哪些事情?

我们从结果反推

  • 更小
  • 更快
  • TypeScript支持
  • API设计一致性
  • 提高自身可维护性
  • 开放更多底层功能

一句话概述,就是更小更快更友好了

更小

Vue3移除一些不常用的 API

引入tree-shaking,可以将无用模块“剪辑”,仅打包需要的,使打包的整体体积变小了

更快

主要体现在编译方面:

  • diff算法优化
  • 静态提升
  • 事件监听缓存
  • SSR优化

下篇文章我们会进一步介绍

更友好

vue3在兼顾vue2options API的同时还推出了composition API,大大增加了代码的逻辑组织和代码复用能力

这里代码简单演示下:

存在一个获取鼠标位置的函数

import { toRefs, reactive } from 'vue';
function useMouse(){const state = reactive({x:0,y:0});const update = e=>{state.x = e.pageX;state.y = e.pageY;}onMounted(()=>{window.addEventListener('mousemove',update);})onUnmounted(()=>{window.removeEventListener('mousemove',update);})return toRefs(state);
}

我们只需要调用这个函数,即可获取xy的坐标,完全不用关注实现过程

试想一下,如果很多类似的第三方库,我们只需要调用即可,不必关注实现过程,开发效率大大提高

同时,VUE3是基于typescipt编写的,可以享受到自动的类型定义提示

三、优化方案

vue3从很多层面都做了优化,可以分成三个方面:

  • 源码
  • 性能
  • 语法 API

源码

源码可以从两个层面展开:

  • 源码管理
  • TypeScript
源码管理

vue3整个源码是通过 monorepo 的方式维护的,根据功能将不同的模块拆分到packages 目录下面不同的子目录中

这样使得模块拆分更细化,职责划分更明确,模块之间的依赖关系也更加明确,开发人员也更容易阅读、理解和更改所有模块源码,提高代码的可维护性

另外一些 package(比如 reactivity 响应式库)是可以独立于 Vue 使用的,这样用户如果只想使用 Vue3 的响应式能力,可以单独依赖这个响应式库而不用去依赖整个 Vue

TypeScript

Vue3是基于typeScript编写的,提供了更好的类型检查,能支持复杂的类型推导

性能

vue3是从什么哪些方面对性能进行进一步优化呢?

  • 体积优化
  • 编译优化
  • 数据劫持优化

这里讲述数据劫持:

vue2中,数据劫持是通过Object.defineProperty ,这个 API 有一些缺陷,并不能检测对象属性的添加和删除

Object.defineProperty(data, 'a',{get(){// track},set(){// trigger}
})

尽管 Vue为了解决这个问题提供了 set delete 实例方法,但是对于用户来说,还是增加了一定的心智负担

同时在面对嵌套层级比较深的情况下,就存在性能问题

default {data: {a: {b: {c: {d: 1}}}}
}

相比之下,vue3是通过proxy监听整个对象,那么对于删除还是监听当然也能监听到

同时Proxy 并不能监听到内部深层次的对象变化,而 Vue3 的处理方式是在 getter 中去递归响应式,这样的好处是真正访问到的内部对象才会变成响应式,而不是无脑递归

语法 API

这里当然说的就是composition API,其两大显著的优化:

  • 优化逻辑组织
  • 优化逻辑复用
逻辑组织

一张图,我们可以很直观地感受到 Composition API 在逻辑组织方面的优势

相同功能的代码编写在一块,而不像options API那样,各个功能的代码混成一块

逻辑复用

vue2中,我们是通过mixin实现功能混合,如果多个mixin混合,会存在两个非常明显的问题:命名冲突和数据来源不清晰

而通过composition这种形式,可以将一些复用的代码抽离出来作为一个函数,只要的使用的地方直接进行调用即可

同样是上文的获取鼠标位置的例子

import { toRefs, reactive, onUnmounted, onMounted } from 'vue';
function useMouse(){const state = reactive({x:0,y:0});const update = e=>{state.x = e.pageX;state.y = e.pageY;}onMounted(()=>{window.addEventListener('mousemove',update);})onUnmounted(()=>{window.removeEventListener('mousemove',update);})return toRefs(state);
}

组件使用

import useMousePosition from './mouse'
export default {setup() {const { x, y } = useMousePosition()return { x, y }}
}

可以看到,整个数据来源清晰了,即使去编写更多的hook函数,也不会出现命名冲突的问题

参考文献

  • https://juejin.cn/post/6850418112878575629#heading-5
  • https://vue3js.cn/docs/zh
http://www.fameteam.cn/news/276.html

相关文章:

  • 长沙百度快速排名优化珠海百度关键字优化
  • 环境保护网站模板福州seo技巧培训
  • wordpress 换服务器seo助理
  • 免费元素素材网站龙岩seo
  • 注册了网站怎么建设国际婚恋网站排名
  • 网站开发结构班级优化大师功能介绍
  • 中国网站建设网站建设优化推广
  • 网站做推广 建设哪种类型合适b2b推广网站
  • 专门做湘菜的网站阿里云网站搭建
  • wordpress取消菜单站长工具seo综合查询降级
  • 商业网站和企业网站的区别百度商家平台登录
  • 网站302错误网站制作公司
  • 陕西省建设厅执业资格注册中心网站报名系统市场推广计划方案
  • 平顶山做网站公司抖音广告推广
  • 腾讯 网站建设湘潭网站制作
  • 企业网站维护报价seo学堂
  • 珠海网站建设技术托管少儿编程培训机构排名前十
  • 如何销售游戏网站建设百度指数官方网站
  • 免费做网站优化优秀软文范例800字
  • 手机网站和app的区别app优化方案
  • 奎屯市网站搜索引擎推广排名
  • 区块链网站怎么做上海站群优化
  • 二级域名做网站小企业广告投放平台
  • 建设银行小微企业网站进不了seo搜索引擎优化薪资
  • 怎样建设淘宝客导购网站百度电视剧风云榜
  • 怎样做网络兼职网站自己建网页
  • 网页设计工作室选址依据天津seo招聘
  • 建设银行行号查询网站湖北网络营销网站
  • 西宁市建设局官方网站东莞网
  • 百度网站建设推广百度seo排名工具