当前位置:首页 > 技术文章 > 正文内容

基于 Vue3.0 知乎专栏示例项目Vue3-Zhihu

zonemu2个月前 (07-12)技术文章19

今天给小伙伴们分享一个vue3.0知乎实战项目示例Vue3Zhihu

vue3-zhihu 基于vue3.x+vuex+vue-router4构建的知乎专栏示例。汇集了vue3相关技术知识点,旨在让大家更快入手vue3项目开发。

快速安装

# 克隆项目
git clone https://github.com/huanggengzhong/zhihu-vue3.0.git

# 进入目录
cd zhihu-vue3.0

# 安装依赖
npm install

# 本地开发
npm run serve

# 打包项目
npm run build

vue3整体下来有些类似React Hook的感觉。只要是能简化代码,提升性能都有必要去学习下。

知识点

setup(props, this(上下文对象))

vue2.x中data、methods、watch等全部都用对应的新增api写在setup()函数中。

  • 执行时机在beforecreate与created之间。vue3也是取消了这两个钩子,统一用setup代替;
  • 所有方法函数都得调用api写在setup中;
  • return出去的数据,类似vue2.x中data(){return{...}};

ref()函数

ref也是创建响应式数据,区别在于要用xxx.value才能访问到数据值,推荐用ref,然后配合reactive一起使用。

<template>
  <div>
    <!-- setup的使用 -->
    <h1>{{count}}</h1>
    <button @click="increase">加</button>
  </div>
</template>
<script lang="ts">
import { ref } from "vue";
export default {
  setup() {
    const count = ref(0);
    const increase = () => {
      count.value++; //注意这里要用value
    };
    return {
      count,
      increase
    };
  }
};
</script>

reactive({})函数

该函数传入一个对象,里面的数据会变成响应式的数据,类似于react中的state。

<template>
  <!-- reactive函数的使用 -->
  <div>
    <h1>{{data.count}}</h1>
    <h1>{{data.double}}</h1>
    <button @click="data.increase">加</button>
  </div>
</template>
<script lang="ts">
import { ref, computed, reactive } from "vue";
interface DataProps {
  count: number;
  double: number;
  increase: () => void;
}
export default {
  setup() {
    const data: DataProps = reactive({
      //这里传入的是对象
      count: 0,
      increase: () => {
        data.count++;
      },
      double: computed(() => data.count * 2)
    });
    return {
      data
    };
  }
};
</script>

toRefs()函数

用 toRefs 函数来包裹 reactive 数据,用来添加响应式。

<template>
  <!-- 使用toRefs来去除多余的data -->
  <div>
    <h1>{{count}}</h1>
    <h1>{{double}}</h1>
    <button @click="increase">加(使用toRefs)</button>
  </div>
</template>
<script lang="ts">
import { ref, computed, reactive, toRefs } from "vue";
interface DataProps {
  count: number;
  double: number;
  increase: () => void;
}
export default {
  setup() {
    const data: DataProps = reactive({
      count: 0,
      increase: () => {
        data.count++;
      },
      double: computed(() => data.count * 2)
    });
    // 这里用toRefs来包裹,使它变为响应式数据
    const refData = toRefs(data);
    return {
      // 这里解构
      ...refData
    };
  }
};
</script>

computed() 函数

该函数用来创造计算属性,和过去一样,它返回的值是一个ref对象。

vue3全新生命周期(只能在setup中使用)

  • beforeCreate -> use setup()
  • created -> use setup()
  • beforeMount -> onBeforeMount
  • mounted -> onMounted
  • beforeUpdate -> onBeforeUpdate
  • updated -> onUpdated
  • beforeDestroy -> onBeforeUnmount
  • destroyed -> onUnmounted
  • errorCaptured -> onErrorCaptured

好了,以上是vue3的一些简单分享,后续会使用vue3开发一个实例项目,届时也会分享出来。

相关文章

「图解」父子组件通过 props 进行数据交互的方法

1.组件化开发,经常有这样的一个场景,就是父组件通过 Ajax 获取数据,传递给子组件,如何通过 props 进行数据交互来实现,便是本图解的重点。2.代码的结构3.具体代码 ①在父组件 data 中...

Vue3,父组件子组件传值,provide(提供)和inject(注入)传值

父组件向子组件传值父子组件传递数据时,通常使用的是props和emit,父向子传递使用props,子向父传递使用emit。子组件接收3种方式// 1、简单接收 props:["title...

Python 实现 | 通过 Gitlab API 获取项目工程、分支、commit 提交记录

前提在 gitlab 中你的工程创建 Access Token然后你会得到一个 21 位 access token,代码中需要用到。代码''' 说明: 1.登录gitlab的r...

程序员开发必会之git常用命令,git配置、拉取、提交、分支管理

整理日常开发过程中经常使用的git命令!git配置SSH刚进入项目开发中,我们首先需要配置git的config、配置SSH方式拉取代码,以后就免输入账号密码了!# 按顺序执行 git config -...

高效使用 Vim 编辑器的 10 个技巧

在 Reverb,我们使用 MacVim 来标准化开发环境,使配对更容易,并提高效率。当我开始使用 Reverb 时,我以前从未使用过 Vim。我花了几个星期才开始感到舒服,但如果没有这样的提示,可能...

全屋定制板材怎么选不出错?6 种板材深度对比,3 套方案闭眼选

装修选板材头疼吧?刚装完的柜子变形发霉,说好的环保结果甲醛超标,这种翻车现场见太多了。厨房卫生间千万别用密度板,这玩意儿遇水就膨胀,半年准完蛋。颗粒板性价比确实高,但小厂出的真心不敢用。环保等级至少得...