初探Vue3

🌜本篇文章目录\textcolor{green}{本篇文章目录} 🌛

🐵 新构建工具Vite\textcolor{blue}{新构建工具Vite}Vite

🐵 CompositionAPI火爆来袭\textcolor{blue}{Composition API火爆来袭}CompositionAPI

🐵 CompositionAPI的基本使用\textcolor{blue}{Composition API的基本使用}CompositionAPI使

🐵 计算属性的使用\textcolor{blue}{计算属性的使用}使

🐵 事件处理\textcolor{blue}{事件处理}

🐵 侦听器\textcolor{blue}{侦听器}

🐵 引用对象:单个原始值响应化\textcolor{blue}{引用对象:单个原始值响应化}

🐵 体验逻辑组合\textcolor{blue}{体验逻辑组合}

vite

如今Vue3出现后,搭建Vue项目的方式有三种,除了可以通过 vue-cli 和 webpack 搭建脚手架外 官方还提供了一种新的脚手架搭建工具 vite,前面两种方式我们并不陌生,我们重点来看一下Vite
Vite 是 Vue 作者开发的一款意图取代 webpack 的工具,实现原理是利用 ES6 的 import 会发送请求去加载文件的特性,拦截这些请求,做一些预编译,省去 webpack 冗长的打包时间

使用vite快速创建一款Vue3项目

使用vite创建vue3的步骤
npm install -g create-vite-app
create-vite-app vue3-demo
cd vue3-demo
npm install

创建目录如下
在这里插入图片描述
还是老样子我们看一下项目中的package.json

在这里插入图片描述
确实我们的项目中的vue版本是3,并且我们的运行以及打包都是依赖Vite,现在我们npm run dev看一下
在这里插入图片描述
就一个字 贼快!!!!! 下面我们看一下main.js文件
在这里插入图片描述
我们就发现了陌生而又熟悉的地方:
Vue3是通过createApp创建vue实例的而不是new
Vue2中的所有内容都是挂载到new出来的vue构造函数(跟实例)上面的
现在vue3都是挂再到app上面
关于Vite的相关内容我们暂时就介绍这么多,更多的内容大家可以在网上找到更多的资料

Composition API火爆来袭

Composition API字面意思是组合API,它是为了实现基于函数的逻辑复用机制而产生的。是Vue的一大亮点,和Vue2的区别我们下面揭晓

下面两张图让您直白的看出差距
在这里插入图片描述
在vue2中使用的统称为选项api(optionApi) 比如我们需要定义数据需要我们在data选项去定义,如果我们定义方法我们就需要在methods的选项下

Vue2所运用的option api的缺点:例如我们抽离一个很简单的组件 组建功能就是一个累加的功能,而vue抽离出去后的代码是分散的 我们需要在data中去定义一个num 然后我们需要在methods中去创建一个add方法,功能代码比较分散,这仅仅是一个小功能组件,如果是更复杂的逻辑呢?

在这里插入图片描述
Vue3中运用的是compostion Api运用的是一个功能就是一块代码,阅读性可维护性会更高些

Composition API的基本使用

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="../dist/vue.global.js"></script>
</head><body><div id="app"><h1>Composition API</h1><div>count: {{ state.count }}</div></div><script>const {createApp,reactive} = Vue;// 声明组件const App = {// setup是一个新的组件选项,它是组件内使用Composition API的入口// 调用时刻是初始化属性确定后,beforeCreate之前setup() {// 响应化:接收一个对象,返回一个响应式的代理对象const state = reactive({ count: 0 })// 返回对象将和渲染函数上下文合并return { state }}}createApp(App).mount('#app')</script>
</body></html>

计算属性的使用

<div>doubleCount: {{doubleCount}}</div>
const { computed } = Vue;
const App = {setup () {const state = reactive({count: 0,// computed()返回一个不可变的响应式引用对象// 它封装了getter的返回值doubleCount: computed(() => state.count * 2)})}
}

事件处理

<div @click="add">count: {{ state.count }}</div>

const App = {setup () {// setup中声明一个add函数function add () {state.count++}// 传入渲染函数上下文return { state, add }}
}

侦听器

const { watch } = Vue;
const App = {setup () {// state.count变化cb会执行// 常用方式还有watch(()=>state.count, cb)watch(() => {console.log('count变了:' + state.count);})}
}

引用对象:单个原始值响应化

<div>counter: {{ counter }}</div>
const { ref } = Vue;
const App = {setup () {// 返回响应式的Ref对象const counter = ref(1)setTimeout(() => {// 要修改对象的valuecounter.value++}, 1000);// 添加counterreturn { state, add, counter }}
}

体验逻辑组合


const { createApp, reactive, onMounted, onUnmounted, toRefs } = Vue;
// 鼠标位置侦听
function useMouse () {// 数据响应化const state = reactive({ x: 0, y: 0 })const update = e => {state.x = e.pageXstate.y = e.pageY}onMounted(() => {window.addEventListener('mousemove', update)})onUnmounted(() => {window.removeEventListener('mousemove', update)})// 转换所有key为响应式数据return toRefs(state)
}
// 事件监测
function useTime () {const state = reactive({ time: new Date() })onMounted(() => {setInterval(() => {state.time = new Date()}, 1000)})return toRefs(state)
}
// 逻辑组合
const MyComp = {template: `
<div>x: {{ x }} y: {{ y }}</div>
<p>time: {{time}}</p>
`,setup () {// 使用鼠标逻辑const { x, y } = useMouse()// 使用时间逻辑const { time } = useTime()// 返回使用return { x, y, time }}
}
createApp().mount(MyComp, '#app')

想了解更多关注我,持续推送

原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}

👍 点赞,你的认可是我创作的动力!\textcolor{green}{点赞,你的认可是我创作的动力!}

⭐️ 收藏,你的青睐是我努力的方向!\textcolor{green}{收藏,你的青睐是我努力的方向!}

✏️ 评论,你的意见是我进步的财富!\textcolor{green}{评论,你的意见是我进步的财富!}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux执行python命令后permission denied

linux下执行python后显示被拒绝问题定位&#xff1a; 1、检查下要执行的文件的权限是否存在执行权限&#xff0c;否则执行chmod命令赋予权限&#xff1b; 2、若赋予权限后仍然显示没有权限&#xff0c;检查下执行的python文件是否有权限&#xff0c;否则执行chmod赋予执行权限。…

mysql zip 安装

第一步下载mysql.zip https://dev.mysql.com/downloads/mysql/5.7.html#downloads 第二步&#xff1a;解压文件后在其目录下&#xff0c; 新建 my.ini 注意编码为ansi&#xff0c;新建 data 空文件夹 my.ini内容为&#xff1a; [mysql]# 设置mysql客户端默认字符集default…

react Native 环境安装配置——图解版一目了然

✨原创不易&#xff0c;还希望各位大佬支持一下\textcolor{blue}{原创不易&#xff0c;还希望各位大佬支持一下}原创不易&#xff0c;还希望各位大佬支持一下 &#x1f525; Flutter和reactNative的区别\textcolor{green}{Flutter和react Native的区别}Flutter和reactNative的…

第七章 字典和集合[DDT书本学习 小甲鱼]【2】

7.1.2 字典的各种内置方法在序列里为不存在位置赋值&#xff0c;会出现错误&#xff1b;而在字典不存在得位置赋值&#xff0c;会创建。工厂函数&#xff08;类型&#xff09;以前学过 str(),int(),list(),tuple()....... 1.fromkeys() 用于创建和返回一个新的字典 不是修改 2…

Installing Node.js and Express on Ubuntu

Installing Node.js and Express on Ubuntu 1. 在nodejs官网上下载Linux Binaries(已经包含了npm):2. 安装Node.js下载后解压&#xff0c;并在解压的文件夹中启动Terminal后&#xff0c;输入命令&#xff1a; sudo cp * /usr/local/ -r再输入命令&#xff1a; node -v …

Chrome插件我只服你——10w人都在使用的浏览器插件

✨文章摘要导读\textcolor{blue}{文章摘要导读}文章摘要导读 &#x1f525; 为什么选择Chrome插件\textcolor{green}{为什么选择Chrome插件}为什么选择Chrome插件 &#x1f525; 插件具备的强大优势\textcolor{green}{插件具备的强大优势}插件具备的强大优势 &#x1f525; …

H3C通过端口ID决定端口角色

转载于:https://www.cnblogs.com/fanweisheng/p/11153312.html

特殊属性

转载于:https://www.cnblogs.com/mengbin0546/p/10338371.html

一款超强的手机屏幕投影工具

✨文章摘要导读\textcolor{blue}{文章摘要导读}文章摘要导读 &#x1f525; 前言\textcolor{green}{前言}前言 &#x1f525; 准备工作\textcolor{green}{准备工作}准备工作 &#x1f525; Scrcpy安装\textcolor{green}{Scrcpy安装}Scrcpy安装 &#x1f525; 工具调试\text…

JS一维数组转化为三维数组有这个方法就够了

今天在CSDN上问答区看到一个提问的小伙伴&#xff0c;是想要将一维数组转化为三位数组的需求&#xff0c;正好不是很忙&#xff0c;乐于助人的我立马给这位同学安排上 下面是后端同学返给我们的一维数组数据格式 [{品牌: xiaomi, 机型: 10, 配置: 512},{品牌: xiaomi, 机型: 10…

Day 21 20190205 老男孩python学习第21天 内容整理

今天写作业&#xff0c;明天后天要在外旅游 写作业写了7个小时。 1 def read_file_as_dict(where):2 staff_dict {}3 f open(%s % where, mode"r", encodingutf-8)4 data f.read()5 f.close()6 row data.strip().split(\n)7 for staff i…

SCOM 简单界面操作指南 [SCOM中文系列之三]

今天大概介绍下SCOM的管理界面&#xff0c;大概分三个重要的功能版块 Monitoring 监控版面 Authoring &#xff08;中文版不知道翻译成什么&#xff0c;主要编辑MP&#xff09; Administration 管理操作 首先说一下管理操作区&#xff0c;开始装好的SCOM都需要来这里配置一下的…

趁着对象泡脚的功夫,我把vueX吃透了

文章目录vueX&#x1f31f;Vuex的概述什么是vuexVuex管理数据的优点&#x1f31f;Vuex的基本使用步骤1.安装 npm i vuex --save2.在src文件目录下新建store>index.js文件3.口文件里面引入store&#xff0c;然后再全局注入4.使用&#x1f31f;Vuex中的核心特性State在组件中访…

【题解】FBI序列

题目描述 两伙外星人策划在未来的XXXX年侵略地球&#xff0c;侵略前自然要交换信息咯&#xff0c;现在&#xff0c;作为全球保卫队队长&#xff0c;你截获了外星人用来交换信息的一段仅由“F”&#xff0c;“B”&#xff0c;“I”&#xff0c;“O”组成的序列。为了保卫地球和平…

vue基础(上篇)

✨有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于vue的基础篇\textcolor{blue}{ 有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于 vue的基础篇}有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于vue的基础篇 ✨ 今天他来了…

depends用于测试程序运行所缺少的文件,可以帮我们很快找到问题

DEPENDS工具和DUMPBIN工具使用阅读目录(Content) 1.Depends2.DUMPBIN2.1 开启CMD2.2 移动目录到C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin2.3 运行命令:VCVARS32.BAT2.4 下面就可以调用dumpbin.exe命令了在系统部署运行时我们经常发现某个程序在开发机器中可以…

友联

欢迎来到小站友链区&#xff0c;欢迎━(&#xff40;∀)ノ亻!。 ljc20020730学长巨佬_WA自动机珂朵莉最可爱了BLUESKY007雷姆最可爱啦扬子曰他的代码是神奇的lukelin机房最强如果你想要成为chhokmah小站的朋友的话&#xff0c;请你先把小站加入为友链站哟(&#xff3e;&#xf…

vue基础(中篇)

✨有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于vue的基础篇\textcolor{blue}{ 有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于 vue的基础篇}有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于vue的基础篇 ✨ 今天他来了…

DR图像的畸变校正

DR图像容易产生S形、枕形和局部失真的情况&#xff0c;这给医生对图像的判断带来干扰。而且在医学图像的三维重建中&#xff0c;未经校正的图像进行重建&#xff0c;还会带来一定的重影等干扰。因此&#xff0c;畸变校正是DR图像进行后续处理&#xff0c;不得不对待的一个问题。…

vue基础(下篇)

介绍 对vue组件的介绍网上有很多大家可以自行查询 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素&#xff0c;封装可重用的代 组件注册 全局注册 Vue.component(‘组件名称’, { }) 第1个参数是标签名称&#xff0c;第2个参数是一个选项对象 全局组…