前端小白学习Vue3框架(一)

一. Vue3是什么?

Vue 3是Vue.js的最新版本,相对于Vue 2,Vue 3在性能、开发体验和组件化等方面有了显著提升。在性能方面,Vue 3进行了大量优化,包括虚拟DOM、Diff算法和Reactive API等

二.区别vue2以及vue3响应式原理

<!-- vue@2 响应式原理  只能针对对象观察变化 -->
<script>
let  data={}
// 如果在此定义了message,不能通过this去使用,否则会出现死循环
// 定义变量 (储存器变量)
let _message = ''
// 在vue2里面放的是属性
Object.defineProperty(data,'message',{
  set(value){
    console.log('1.0观察数据修改了');
    _message=value
    // 也可以写成这种情况
    this._message=value
   
    // 不能这样写,会死循环
    // this.message=value
  },
  get(){
    console.log('2.0观察数据读取了');
    return this._message
  }
})



// 在vue@3中放置的是对象
let obj={}
let pobj=new Proxy(obj,{
  set(target,key,value){
    console.log('1.0观察修改');
   if(key == 'color'){
    return false
   }
   target[key]=value
  },
  get(target,key){
    console.log('2.0观察读取');
   return target[key];
  }
})
// 修改的是响应式对象
pobj.color='#ff5500'
pobj.width=1000
pobj.height=500
console.log(pobj);
console.log(obj);

三.学习vue3知识点

1.先创建一个vue3项目来学习吧!

跟先前学习vue2一样也是通过vue-cli创建vue3项目,通过vue ui 或者vue create 项目名创建

只不过在功能上选择时要有所不同咯

 babel  ts  router  css linter  功能

 less  linter      设置公共路径  ./

在vscode代码编辑器里下载vue3插件(也要把vue2的禁用噢)

2.vue3语法的写法种类

写法1:setup 作初始化,通过export default以及ref来创建响应式数据的方法,需要retrun 数据才能在template(组合式+选项式)

中使用该响应式数据

写法2:写成vue2的语法形式,引入组件 ,通过data,reutrn 数据属性(选项式)

写法3(推荐):引入ref创建响应式数据,通过setup做初始化,直接通过ref创建响应式数据,通过value修改(组合式)

<template>
  <div>
    <div class="home">
    <h2>首页</h2>
    <!-- <img alt="Vue logo" src="../assets/logo.png"> -->
     <h3>{{message}}</h3>
  </div>
  </div>
</template>

<!-- 写法1 -->
<script lang="ts">
import { defineComponent ,ref} from 'vue';
// ref 创建响应式数据的方法
export default defineComponent({
  // setup表示初始化
  setup(){
     let message=ref('hello world')
    //  返回相应式数据
     return {
      message
     }
  }
})
</script>

<!-- 写法2 选项式加组合式-->
<script lang="ts">
// 导入defineComponent函数
import { defineComponent } from 'vue';
//定义组件
export default defineComponent({
  name: 'HomeView',
  data(){
    return {
      message:'hello Vue'
    }
  }

});
</script>

<!-- 写法3   setup写在script里面 -->
<!-- 组合式 -->
<script lang="ts" setup>
import { ref} from 'vue';
// ref 创建响应式数据的方法
let message=ref('hello today')
// message 是一个相应式对象
console.log(message);

// 修改赋值通过value修改
message.value='你好啊兄弟'

</script>

3.侦听器、属性计算、过滤器

在vue3中,需要用到什么就把需要用到的功能引入进来

// 导入api,创建响应式数据的方法
import {ref,watch, computed} from "vue"

// 定义数据,此处写法无响应式
// let user_name='aaa'
// 定义数据写变量
// 这样的是有响应的,要通过ref去创建响应式数据
let user_name =ref("admin")

属性侦听 

//侦听器
//1.引入侦听器
import {ref,watch} from "vue"
//2创建响应式数据
let user_name =ref("admin")
//3.侦听改变
watch(user_name,(n,o)=>{
    
   console.log(n,o)

},{

deep:true,//深度侦听
immediate:true,//立即侦听
}


)

 属性计算

<template>

<div>
  <input v-model="fisrt_name" type="text" placeholder="姓">+
      <input v-model="last_name" type="text" placeholder="名">=
      <span>{{ full_name }}</span>

</div>
</template>


<script  lang="ts" setup>
//引入
import {ref,computed} from 'vue'
//通过ref创建响应式数据
let first_name=ref("");
let last_name=ref("大锤");

//通过value获取值

let full_name=computed()=>{

return first_name.value+last_name.value
}


</script>

过滤器

//在vue3中没有过滤器,改用工具函数代替
<template>

 <div>
      <p>{{ datetime }}</p>
      <p>{{ formatime(datetime) }}</p>
 </div>
</template>



<script>
import {ref} from "vue"
let date=new Date()
let datetime=ref("")
datetime.value=date.toString()


//vue3中没有过滤器,使用工具函数

const formatime=(datetimestr:string)=>{
    let dt=new Date(datetimerstr);
    return dt.toLocaleDateString()+ " " +(dt.toLocaleTimeString())



}

</script>

4.生命周期及钩子函数

-->创建阶段beforeCreate  created ---->挂载阶段  beforeMount mounted --->更新阶段  beforeupdate updated -->销毁阶段 beforeUnmount unmounted(改变)

//在挂载阶段操作dom做canvas
<template>
  <div>
    <p>绘画</p>
    <p>{{ res }}</p>
    <div>
      <canvas ref="pcanvas"></canvas>
    </div>
  </div>
</template>

<script  lang="ts" setup>
import {ref,onMounted} from 'vue'
const pcanvas=ref()
onMounted(()=>{
const canvas=pcanvas.value
if(canvas){
   canvas.width=600;
   canvas.height=800;
   const pen=canvas.getContext("2d")
   pen.beginPath();
   pen.fillStyle="red"
   pen.fillRect(0,0,600,100)


}

})


</script>

相关推荐

  1. 前端学习Vue3框架

    2024-04-28 15:18:04       30 阅读
  2. 前端学习Vue2框架

    2024-04-28 15:18:04       36 阅读
  3. 前端学习vue3框架(二)

    2024-04-28 15:18:04       32 阅读
  4. 前端学习Vue框架(二)

    2024-04-28 15:18:04       41 阅读
  5. 前端学习之路(Vue2 )

    2024-04-28 15:18:04       29 阅读
  6. 前端学习之路(CSS3 )

    2024-04-28 15:18:04       64 阅读
  7. 前端学习之路(Vue2 二)

    2024-04-28 15:18:04       42 阅读
  8. 前端学习之路(HTML5 )

    2024-04-28 15:18:04       39 阅读
  9. 前端学习之路(ES6 )

    2024-04-28 15:18:04       34 阅读
  10. 前端学习之路(CSS3 二)

    2024-04-28 15:18:04       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 15:18:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 15:18:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 15:18:04       87 阅读
  4. Python语言-面向对象

    2024-04-28 15:18:04       96 阅读

热门阅读

  1. 裸金属服务器的优势有哪些?

    2024-04-28 15:18:04       36 阅读
  2. CentOS yum安装jdk8

    2024-04-28 15:18:04       31 阅读
  3. 【SQL函数:TO_CHAR】

    2024-04-28 15:18:04       34 阅读
  4. 怎么检查ubuntu22.04服务器机器被挖矿了

    2024-04-28 15:18:04       31 阅读
  5. 树莓派 ubuntu22.04 meta安装 ros2-humble

    2024-04-28 15:18:04       31 阅读
  6. 代码随想录算法训练营day39

    2024-04-28 15:18:04       26 阅读
  7. 基于机器学习的安全检测 网络入侵检测概述

    2024-04-28 15:18:04       34 阅读
  8. 华企盾的面试流程,华企盾招聘流程

    2024-04-28 15:18:04       33 阅读
  9. 2024.4.27每日一题

    2024-04-28 15:18:04       34 阅读