前端小白学习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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/580219.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊测评的目的是什么?

测评的目的&#xff1a;店铺销量、留评 特别是新品&#xff0c;一个产品销量很低也没什么评价的产品&#xff0c;很难说服真实买家们&#xff0c;因为同类目还有其他的选择&#xff0c;不管是谁都不愿意当小白鼠的&#xff0c;而且打造爆款&#xff0c;提升产品权重这些都离不…

【华为】SVI接口实验配置

【华为】SVI接口实验配置 拓扑实验要求设备核心交换机PCPC1PC2 查看VLAN验证 配置文档 拓扑 实验要求 一台三层交换机&#xff0c;两台PC PC1 和 PC2 静态获取地址&#xff0c;并处于不同VLAN 然后PC的网关是处在三层交换机LSW1身上&#xff0c;不同VLAN就是处在不同网段&…

Jenkins - macOS 上安装

文章目录 关于 JenkinsmacOS 上安装 Jenkins方式一&#xff1a;brew方式二&#xff1a;tomcat Jenkins war 关于 Jenkins 官网上下载Jenkins并将其安装到持续集成服务器 https://jenkins.io/download/ macOS 上安装 Jenkins 现在本 macOS 上测试 https://www.jenkins.io/do…

HarmonyOS 应用开发——入门

首先当然是华为的官方文档了&#xff0c;要认真学习: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-overview-0000001478061421-V2 不想花时间看&#xff0c;可以看我下面总结的干货&#xff0c;哈哈 第一个问题&#xff1a;stage架构和fa架构的区…

MySql 导出导入(备份还原)

1&#xff0c;导出备份 要导出MySQL数据库中的数据&#xff0c;使用mysqldump命令。假设要导出名为mydatabase的数据库到名为backup.sql的文件中&#xff1a; mysqldump -u 用户名 -p 数据库名 > backup.sql 参数说明&#xff1a; -u mysql用户名称 -p 执行后会要求输入…

文献阅读:全皮层原位测序揭示了输入依赖区域的身份

文献介绍 「文献题目」 Whole-cortex in situ sequencing reveals input-dependent area identity 「研究团队」 Anthony M. Zador&#xff08;美国冷泉港实验室&#xff09; 「发表时间」 2024-04-24 「发表期刊」 Nature 「影响因子」 64.8 「DOI」 10.1038/s41586-024-0…

LeetCode39题: 组合总和(原创)

【题目描述】 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复…

回归预测 | Matlab实现NGO-ESN北方苍鹰算法优化回声状态网络多输入单输出回归预测

回归预测 | Matlab实现NGO-ESN北方苍鹰算法优化回声状态网络多输入单输出回归预测 目录 回归预测 | Matlab实现NGO-ESN北方苍鹰算法优化回声状态网络多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现NGO-ESN北方苍鹰算法优化回声状态网络…

C++(Qt)软件调试---crashpad捕获崩溃(19)

C(Qt)软件调试—crashpad捕获崩溃&#xff08;19&#xff09; 文章目录 C(Qt)软件调试---crashpad捕获崩溃&#xff08;19&#xff09;1、概述2、资源地址3、配置环境4、解决报错5、测试代码6、测试结果7、Qt中使用crashpad 更多精彩内容&#x1f449;个人内容分类汇总 &#x…

mysql 开启远程连接

登录到mysql mysql -uroot -p 打开mysql数据库并查询user表 use mysql; select user, host from user;更改需要远程连接数据库为任何ip 可以连接&#xff0c; 并刷新系统权限相关的表 update user set host% where hostlocalhost and userroot; flush privileges;

测评与广告双管齐下:敦煌网卖家如何结合自养号实现快速出单

敦煌网作为中国领先的B2B跨境电商平台&#xff0c;为卖家提供了广阔的市场和丰富的资源&#xff0c;但为何有些卖家却难以获得订单呢?下面的内容中&#xff0c;帮助卖家快速出单。 一、如何快速出单? 1、优化产品详情页&#xff1a;产品详情页是吸引买家下单的关键页面。卖…

Shell脚本编写-猜测当前系统是哪个发行版

1、编写脚本 该脚本会确定当前系统中可用的包管理器。同时还以已安装的软件包管理器为指导&#xff0c;猜测当前系统是基于哪个 Linux 发行版。 #!/bin/bash #检查当前系统的可用包管理器&#xff0c;以安装的软件包管理器为指导&#xff0c;猜测当前的系统是基于哪个Linux发行…

顺序表常用操作实现算法

查找操作 插入操作 删除操作 小结 参考附录模拟代码&#xff1a; #include <iostream> const int maxn200; //顺序表 typedef struct{//定义静态类型 int num[maxn];// 装数数组 int len;//记录长度 }sqlist; typedef struct{//定义动态类型 int *num;int len; }sqlist…

XYCTF 2024

本博客仅为记录解题的过程&#xff01; MISC game google识图 XYCTF{Papers Please} 熊博士 XYCTF{liu_ye_mei_you_xiao_jj} 疯狂大杂烩&#xff01;九转功成 在远古时期&#xff0c;修仙过程被分为&#xff1a;炼气、筑基、结丹、元婴、化神、炼虚、合体、大乘、渡劫等九…

MOM是什么?

数字化时代&#xff0c;制造企业纷纷引入信息化系统工具来实现数字化转型升级&#xff0c;你可能对OA、CRM、ERP、MES耳熟能详&#xff0c;说起MOM&#xff0c;你了解吗&#xff1f;今天小编跟你一起认识下它。 MOM是什么&#xff1f; MOM&#xff08;制造运营管理&#xff09…

泰迪智能科技受邀参加2024年粤港澳大湾区产教融合技能人才培养联盟理事会会议

4月24日下午&#xff0c;2024年粤港澳大湾区产教融合技能人才培养联盟&#xff08;以下简称联盟&#xff09;理事会会议在白云区成功举办。 会议由广州市人力资源和社会保障局、广州市发展和改革委员会、广州市教育局、广州市工业和信息化局、广州市总工会等单位指导&#xff…

面经总结(二)(数据库)

数据库常识&#xff1a; 1、数据库系统包含什么&#xff1f; 包含了数据库、数据库管理系统、数据库管理员和应用程序。 数据库&#xff08;DB)&#xff1a;顾名思义是存放数据的仓库&#xff0c;实现数据的持久化。 数据库管理系统&#xff08;DBMS)&#xff1a;类似于操作系…

winrar压缩时排除指定目录排除所有子目录下的目录名称排除所有不需要的目录减小备份体积移除中间目录惊喜

winrar排除指定目录所有指定目录 说明(废话)解决方1. 打开 WinRAR。2. 导航到你要压缩的目录&#xff0c;然后选择该目录中的文件或文件夹。3. 点击“添加”按钮。4. 在弹出的“压缩文件名和参数”窗口中&#xff0c;切换到“文件”标签页。5. 在“文件”标签页中&#xff0c;找…

Topaz Gigapixel AI v7.1.2激活版:智能图像增强与放大

Topaz Gigapixel AI&#xff0c;这款基于人工智能技术的图像处理软件&#xff0c;以其卓越的功能和高效的性能&#xff0c;为图像处理领域注入了新的活力。 Topaz Gigapixel AI v7.1.2激活版下载 作为一款专注于图像增强与放大的软件&#xff0c;Topaz Gigapixel AI利用深度学习…

数据结构11:二叉树的链式结构

文章目录 快速创建链式二叉树二叉树的遍历前序、中序、后序层序 二叉树的基本操作二叉树的节点个数二叉树叶节点的个数二叉树第k层结点个数二叉树查找值为x的结点 二叉树基础oj练习单值二叉树检查两颗树是否相同对称二叉树二叉树的前序遍历另一颗树的子树 二叉树的创建和销毁二…
最新文章