首页 > 其他分享 >Vue3.0学习(一)

Vue3.0学习(一)

时间:2024-01-31 12:02:19浏览次数:32  
标签:status filter name todoList 学习 Vue3.0 let todo

1.Vue脚手架创建

通过npm命令可以创建Vue3的脚手架工程:

## 创建工程
npm init vite-app <project-name>
## 进入工程目录
cd <project-name>
## 安装依赖
npm install
## 运行
npm run dev

2.关于setup

Vue中支持两种Api风格:选项式、组合式。官网中解释:
使用选项式 API,我们可以用包含多个选项的对象来描述组件的逻辑,例如 data、methods 和 mounted。选项所定义的属性都会暴露在函数内部的 this 上,它会指向当前的组件实例。

<script>
export default {
  // data() 返回的属性将会成为响应式的状态
  // 并且暴露在 `this` 上
  data() {
    return {
      count: 0
    }
  },

  // methods 是一些用来更改状态与触发更新的函数
  // 它们可以在模板中作为事件处理器绑定
  methods: {
    increment() {
      this.count++
    }
  },

  // 生命周期钩子会在组件生命周期的各个不同阶段被调用
  // 例如这个函数就会在组件挂载完成后被调用
  mounted() {
    console.log(`The initial count is ${this.count}.`)
  }
}
</script>

使用组合式 API,我们可以使用导入的 API 函数来描述组件逻辑。在单文件组件中,组合式 API 通常会与 setup 搭配使用。本质是增加了一个前置生命周期setup,通过语法糖使操作更加方便。不使用语法糖本质就是:

//未使用setup attribute 
<script>
export default {
   setup(){
      let a = 1;
      return{
            a
      }
   }
}
</script>

//使用了setup attribute 
<script setup>
let a = 1;
</script>


3、关于响应式编程 ref、reactive

一旦使用的setup,哪些数据支持响应式编程就需要开发手动操作下。使用的具体函数分别是ref和reactive。

3.1 ref 函数

ref函数支持创建任何类型,但是在脚本中使用要加value。可以使用插件来简化这部分的操作。

3.2 reactive 函数

reactive函数支持创建一个响应式对象或数组,使用时不需要使用value来操作值。

<template>
  <div class ="card">
    {{ count }}
    <button class="btn" @click="addCount">点击数字增加</button>
  </div>

  <div class="card">
    {{ person.firstName }}
    <button class="btn" @click="changeFirstname">修改firstName</button>
    {{fullName}}
  </div>

  <div class="card">
    {{ car.name }} {{car.cost}} 万
    <button class="btn" @click="changeCardStatus">修改汽车状态</button>
  </div>

</template>

<script setup lang="ts">
import {ref,computed,watch, reactive, watchEffect} from 'vue'

let count = ref(0)

let person = ref({ 
  firstName: "ajie",
  secondName:"ae"
})

let car = reactive({
  name:"奔驰",
  cost:17
})

function addCount() {
  count.value++;
}

function changeFirstname() {
  person.value.firstName = person.value.firstName + "~";
}

function changeCardStatus(){
  car.name = "宝马";
}


let fullName = computed(()=>{
 return person.value.firstName +"-"+ person.value.secondName;
});

watch(count,(oldValue,newValue)=>{
  console.log("监听到了" + oldValue);
  console.log("监听到了" + newValue);
});

watchEffect(()=>{
  console.log("监听到了" + car.name);
});

</script>

<style scoped>
.card{
  width: 100%;
  height:fit-content;
  padding: 5px 5px;
  margin: 5px auto;
  background-color: #c9c9c9;
  border-radius: 5px;
  font-size: 20px;
  display: flex;
  flex-direction: column;
}

.btn{
  width: fit-content;
  height: fit-content;
  padding: 3px,3px;
}

</style>

4.关于computed函数

computed是计算属性,它的好处是当依赖数据不变时,它调用的是之前缓存下来的数据,这能大大提高程序的性能(methods没有缓存的概念)。

<template>
<div class="card">
      <ui v-for="item in filteredTodos" :key="item.index">
            <li>{{item.index}} - {{item.name}} - {{item.status}}</li>
      </ui>
      {{v}}
      <div class="btns-div">
            <button class="btn" @click="selectAll">All</button>
            <button class="btn" @click="selectDoing">doing</button>
            <button class="btn" @click="selectDone">done</button>
            <button class="btn" @click="selectTodo">todo</button>
            <button class="btn" @click="addOne">addOne</button>
      </div>
</div>
</template>

<script setup lang="ts">
import { ref,computed, reactive } from 'vue';

let todoList = reactive({
      "todos":[
            {"index":1,"name":"A","status":"doing"},
            {"index":2,"name":"B","status":"done"},
            {"index":3,"name":"C","status":"done"},
            {"index":4,"name":"D","status":"todo"},
            {"index":5,"name":"E","status":"todo"},
            {"index":6,"name":"F","status":"doing"},
            {"index":7,"name":"G","status":"doing"}
      ],
      filter: 'all'
});

let v = ref(0);

const filteredTodos = computed(() => {
      console.log("exec computed")
  if (todoList.filter === 'all') {
    return todoList.todos
  } else if (todoList.filter === 'doing') {
    return todoList.todos.filter(todo => todo.status === 'doing')
  } else if (todoList.filter === 'done') {
    return todoList.todos.filter(todo => todo.status === 'done')
  }else if (todoList.filter === 'todo') {
    return todoList.todos.filter(todo => todo.status === 'todo')
  }
})

let selectDoing = function(){
      todoList.filter = "doing";
}

let selectDone = function(){
      todoList.filter = "done";
}

let selectTodo = function(){
      todoList.filter = "todo";
}
let selectAll = function(){
      todoList.filter = "all";
}
let addOne = function(){
      v.value += 1;
}

</script>

<style scoped>
.card{
  width: 100%;
  height:fit-content;
  padding: 5px 5px;
  margin: 5px auto;
  background-color: #c9c9c9;
  border-radius: 5px;
  font-size: 20px;
  display: flex;
  flex-direction: column;
}
.btn{
  width: fit-content;
  height: fit-content;
  padding: 3px,3px;
  margin: 5px;
}

.btns-div{
      height: fit-content;
      width: 100%;
      display: flex;
}
</style>

5.关于路由rounter

1.页面导航区、展示区
2.创建路由器
3.制定路由的具体规则,路由表 (什么路径,对应着什么组件)
4.形成一个一个的[???.vue] class.vueSubject .vue

标签:status,filter,name,todoList,学习,Vue3.0,let,todo
From: https://www.cnblogs.com/chenjie0949/p/17998979

相关文章

  • 轻松学习SQL外键约束的核心原理和实用技巧
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。SQL约束-外键约束测试管理......
  • 轻松学习SQL外键约束的核心原理和实用技巧
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。SQL约束-外键约束......
  • 算法学习Day44完全背包
    Day44完全背包ByHQWQF2024/01/29笔记完全背包有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。和01背包的区别在每件物品都可以放入背包无......
  • 数据库新手必知!轻松学习SQL外键约束的核心原理和实用技巧
    SQL约束-外键约束简介外键约束(FOREIGNKEY,缩写FK)是用来实现数据库表的参照完整性的。它是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须且有主键约束或者唯一约束。被依赖的表通常称之为父表或者主表,设置外键约束的表称为子表或从表。相关概念主键:可以唯一......
  • 字库的简单学习
    字库的简单学习什么是字库字库就是字型库(FONTLIBRARY),其实计算机上显示的每个字符(不管它是哪种语言的),都是一个小的图案。字库就是把这些小的图案以图片的某种形式保存起来,需要显示的时候还原出来就可以了。在WINDOWS操作系统里的字库存放在系统盘windows/fonts文件夹下,在......
  • Golang学习(三)基本语法[变量、常量、类型、类型转换]
    变量声明Go语言中有四类标记:标识符(identifiers)、关键字(keywords)、运算符(operators)标点符号(punctuation)以及字面量(literals)。Go语言变量标识符由字母、数字、下画线组成,其中首字符不能为数字,同一字母的大小写在Go语言中代表不同标识。在Go语言中,命名标识符时,通常选择英文的52个大......
  • 算法学习Day43最后石头的重量、目标和、一和零
    Day43最后石头的重量、目标和、一和零ByHQWQF2024/01/31笔记1049.最后一块石头的重量II有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x和 y,且 x<=y。那么粉碎的可能结果如下:如果 x==y,那么两块石......
  • Kali学习笔记-03-部署OWASP靶机
    Kali学习笔记-03-部署OWASP靶机KaliLinux网络安防一、下载安装下载地址是https://sourceforge.net/projects/owaspbwa/files/。下载之后得到一个叫OWASP_Broken_Web_Apps_VM_1.2.7z的压缩文件。解压,然后在VMWare中打开解压后得到的虚拟机即可。二、登录在虚拟机的描述......
  • 【学习笔记】根号算法
    1.分块【模板】线段树1我们把整个序列割成\(s\)个块,则块长为\(\frac{n}{s}\),对于一个跨越区间\([l,r]\)的修改/询问,很容易看出它最多包含两个散块,然后中间有一堆整块。考虑对于整块我们类似线段树的维护方法打tag,然后对于散块直接暴力。分析复杂度,最多有\(s\)个块,散......
  • SAM & 广义 SAM & SA 学习笔记
    SAM定理SAM由parent树与一张DAG构成,他们共用点集。\(endpos(s)\)表示\(s\)出现的所有位置上最后一个字符所处位置的集合。SAM中DAG上每条路径对应原串上的一个子串,一个子串也与其对应。在SAM的DAG上到达一个点的所有子串的endpos相同。一个节点上储存的最......