vue2 和 vue3 区别理解

一、vue3 的理解和区别

1、性能优化

双向响应原理由Object.defineProperty改为基于ES6的Proxy,使其颗粒度更大,速度更快,且消除了之前存在的警告、重写了 Vdom ,使其突破了 Vdom 的性能瓶颈、进行了模板编译的优化、进行了更加高效的组件初始化

Tree-Shaking 的支持

支持了tree-shaking(剪枝):像修剪树叶一样把不需要的东西给修剪掉,使 Vue3 的体积更小。

需要的模块才会打入到包里,优化后的 Vue3.0 的打包体积只有原来的一半(13kb)。哪怕把所有的功能都引入进来也只有23kb,依然比 Vue2.x 更小。像keep-alive、transition甚至v-for等功能都可以按需引入。

Composition API

composition-api是一个 Vue3 中新增的功能,它的灵感来自于React Hooks,是比mixin更强大的存在。

composition-api可以提高代码逻辑的可复用性,从而实现与模板的无关性;同时使代码的可压缩性更强。另外,把Reactivity模块独立开来,意味着 Vue3.0 的响应式模块可以与其他框架相组合。composition-api把复杂组件的逻辑抽地更紧凑,而且可以将公共逻辑进行抽取。

Fragments

不再限制template只有一个根节点。

render函数也可以返回数组了,有点像React.Fragments

Better TypeScript Support

更好的类型推导,使得 Vue3 把TypeScript支持得非常好

Custom Renderer API

实现用DOM的方式进行WebGL编程

二、vue2 和3 的区别

1、默认进行懒观察(lazy observation)

在 2.x 版本里,不管数据多大,都会在一开始就为其创建观察者。当数据很大时,这可能会在页面载入时造成明显的性能压力。3.x 版本,只会对「被用于渲染初始可见部分的数据」创建观察者,而且 3.x 的观察者更高效。

2、更精准的变更通知。

举例来说:2.x 版本中,使用 Vue.set 来给对象新增一个属性时,这个对象的所有 watcher 都会重新运行;3.x 版本中,只有依赖那个属性的 watcher 才会重新运行。3.、新加入了 TypeScript 以及 PWA 的支持

3、vue2和vue3双向数据绑定原理发生了改变

vue2 的双向数据绑定是利用ES5 的一个 API Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的。

vue3 中使用了 es6 的 ProxyAPI 对数据代理。

相比于vue2.x,使用proxy的优势如下

defineProperty只能监听某个属性,不能对全对象监听

可以省去for in、闭包等内容来提升效率(直接绑定整个对象即可)

可以监听数组,不用再去单独的对数组做特异性操作 vue3.x可以检测到数组内部数据的变化

4、LifeCycle(Hooks) 3.0当中的生命周期与2.0的生命周期出现了很大的不同:

  beforeCreate -> 请使用 setup()

  created -> 请使用 setup()

  beforeMount -> onBeforeMount

  mounted -> onMounted

  beforeUpdate -> onBeforeUpdate

  updated -> onUpdated

  beforeDestroy -> onBeforeUnmount

  destroyed -> onUnmounted

  errorCaptured -> onErrorCaptured

5、Composition API

Vue2与Vue3 最大的区别 — Vue2使用选项类型API(Options API)对比Vue3合成型API(Composition API)

vue2


export default {
  props: {
    title: String
  },
  data () {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    login () {
      // 登陆方法
    }
  },
  components:{
            "buttonComponent":btnComponent
        },
  computed:{
	  fullName(){
	    return this.firstName+" "+this.lastName;     
	  }
}
 
}

vue3

export default {
  props: {
    title: String
  },
  
  setup () {
    const state = reactive({ //数据
      username: '',
      password: '',
      lowerCaseUsername: computed(() => state.username.toLowerCase()) //计算属性
    })
     //方法
    const login = () => {
      // 登陆方法
    }
    return { 
      login,
      state
    }
  }
}

 6、vue3 cli的变化

vue-cli 3 的 github 仓库由原有独立的 github 仓库迁移到了 vue 项目下
vue-cli 3 的项目架构完全抛弃了 vue-cli 2 的原有架构,3的设计更加抽象和简洁
vue-cli 3 是基于 webpack 4 打造,vue-cli 2 还是 webapck 3
vue-cli 3 的设计原则是“0配置”
vue-cli 3 提供了 vue ui 命令,提供了可视化配置,更加人性化
总结由于 vue-cli 3 也学习了 rollup 的零配置思路,所以项目初始化后,没有了以前熟悉的 build 目录,也就没有了 webpack.base.config.js、webpack.dev.config.js 、webpack.prod.config.js 等配置文件。

Vue-cli3 创建的项目的目录结构

vue_project
    -- node_modules  # 安装的库依赖
    -- public  # 相当于vue-cli2中的static,打包后原封不动的放在dist中
    -- src  # 源代码
    -- .browserslistrc  # 配置浏览器相关的东西
    -- .gitignore  # 配置git相关的东西,可以配置忽略一些文件
    -- .babel.config.js  # 配置 babel
    -- package.json
    -- package-lock.json  # 显示的真实的安装版本(package.json中可能有~或者 ^ 后面加版本号,因此可能会安装不同版本的依赖)
    -- readme.md  # markdown 文档

详情查看vue3目录简介链接 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3相对于Vue 2有一些写法上的区别。以下是一些主要的区别: 1. Composition API:Vue 3引入了Composition API,这是一种新的方式来组织和复用Vue组件的逻辑。它允许开发者使用函数式的方式组织代码,而不是依赖于Options API。这使得逻辑可以更好地组织和重用,并且使得代码更易于理解和维护。 2. 更好的TypeScript支持:Vue 3对TypeScript的支持得到了改进,使用TypeScript编写Vue应用更加方便。Vue 3中引入了一些新的类型定义,使得类型检查更加准确和强大。 3. 更快的渲染性能:Vue 3在内部进行了一些优化,使得渲染性能更高。Vue 3使用了Proxy代理对象来进行响应式更新,这比Vue 2中的Object.defineProperty更高效。此外,Vue 3还引入了静态模板编译优化,可以在构建时进行一些静态分析和优化,从而提高渲染性能。 4. 更小的包体积:Vue 3对包体积进行了优化,尤其是对Tree-shaking支持的改进。这意味着在使用Vue 3时,你只会打包所使用的功能,而不会打包整个框架。 5. 更好的逻辑复用:Composition API的引入使得逻辑复用更加灵活和强大。你可以使用自定义的Hook来组织和复用逻辑,这样可以更好地解耦和复用代码。 需要注意的是,虽然Vue 3在写法上有一些变化,但它仍然保持了与Vue 2相似的核心概念和理念,因此Vue 2的开发者可以相对轻松地迁移到Vue 3。另外,Vue 3也提供了一些工具来帮助开发者进行迁移,例如vue-migration-helper插件可以帮助检测代码中的迁移问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值