详解Vue3.0 + TypeScript + Vite初体验


Posted in Vue.js onFebruary 22, 2021

项目创建

npm:

$ npm init vite-app <project-name>
$ cd <project-name>
$ npm install
$ npm run dev

or yarn:

$ yarn create vite-app <project-name>
$ cd <project-name>
$ yarn
$ yarn dev

项目结构

详解Vue3.0 + TypeScript + Vite初体验

main.js

详解Vue3.0 + TypeScript + Vite初体验

在个人想法上,我觉得createApp()是vue应用的实例,createApp支持链式调用

App.vue:

详解Vue3.0 + TypeScript + Vite初体验

这是兼容vue2.0的语法,下面是vue3.0 rfc写法(还处于实验性阶段)。
rfc官方说明

setup

data

详解Vue3.0 + TypeScript + Vite初体验

setup是结合了vue2.0的created生命周期函数和data还有methods(后面会提到)

可直接 export 属性(data)和方法(methods)

详解Vue3.0 + TypeScript + Vite初体验

可以看出现在的name不是响应式的,后面会介绍响应式

methods

详解Vue3.0 + TypeScript + Vite初体验

methods也是跟data一样,直接export

效果:

详解Vue3.0 + TypeScript + Vite初体验

Composition API

ref

声明:

详解Vue3.0 + TypeScript + Vite初体验

Ref可将一些基本属性变成响应式

详解Vue3.0 + TypeScript + Vite初体验

reactive

详解Vue3.0 + TypeScript + Vite初体验

上图是reactive和ref混合使用,至于效果,请各自复制下方代码体验

<template>
 <div id="app">
 <div v-for="(item, index) in state.persons" :key="index">
  {{ item.name }}是{{ item.age }}岁
 </div>
 <div>
  <h3>修改zhangsan的年龄</h3>
  <input type="text" v-model="zAge" />
 </div>
 </div>
</template>

<script lang="ts" setup="props, {emit}">
import { reactive, ref } from 'vue'
export const zAge = ref(12)
export const state = reactive({
 persons: [
 {
  name: 'zhangsan',
  age: zAge
 },
 {
  name: 'lisi',
  age: 20
 }
 ]
})
</script>

computed

声明:

详解Vue3.0 + TypeScript + Vite初体验

效果:

详解Vue3.0 + TypeScript + Vite初体验

watchEffect

声明:

详解Vue3.0 + TypeScript + Vite初体验

效果:

详解Vue3.0 + TypeScript + Vite初体验

组件系统

全局注册

App.vue

详解Vue3.0 + TypeScript + Vite初体验

main.js

详解Vue3.0 + TypeScript + Vite初体验

局部注册

App.vue

详解Vue3.0 + TypeScript + Vite初体验

setup

props

详解Vue3.0 + TypeScript + Vite初体验

声明props对象,在watchEffect中,console.log(props.msg)是可以看到父组件传的值。props的默认值和过滤在研究中。具体作用参考vue2.0 props作用

context

详解Vue3.0 + TypeScript + Vite初体验

组件上下文

emit

详解Vue3.0 + TypeScript + Vite初体验

声明emit函数,在setup="props, { emit }"要写上emit,不然会报错,具体作用参考vue2.0 emit作用。

详解Vue3.0 + TypeScript + Vite初体验

详解Vue3.0 + TypeScript + Vite初体验

这是使用emit函数的一些例子。

attrs

研究ing…

slots

研究ing…

vue指令

重点讲v-model,其他vue指令与2.0一样

v-model

详解Vue3.0 + TypeScript + Vite初体验

vue3.0开始支持多个双向绑定的参数,这是vue2.0没有的,v-model后面没有跟其他属性的话,那么在这个组件内部它的默认值是modelValue,如果想更新v-model,那么就需要emit('update:modelValue', data)去更新v-model的默认值modelValue。那么v-model后面有属性的话(dragValue),那么在这个组件内部它的值就是这个属性名(dragValue),如果想更新v-model:dragValue的值,就需要emit('update:dragValue', data)去更新v-model自定义的值。

更多的用法参考官方的文档:https://github.com/vuejs/rfcs/blob/sfc-improvements/active-rfcs/0000-sfc-script-setup.md

到此这篇关于详解Vue3.0 + TypeScript + Vite初体验的文章就介绍到这了,更多相关Vue3.0 TypeScript Vite内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
vue实现树状表格效果
Dec 29 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
详解vue3中组件的非兼容变更
Mar 03 Vue.js
原生JS封装vue Tab切换效果
Apr 28 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 #Vue.js
Vue实现todo应用的示例
Feb 20 #Vue.js
基于vue的video播放器的实现示例
Feb 19 #Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 #Vue.js
Vue包大小优化的实现(从1.72M到94K)
Feb 18 #Vue.js
Vue如何实现变量表达式选择器
Feb 18 #Vue.js
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 #Vue.js
You might like
PHP函数引用返回的实例详解
2016/09/11 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
Python中动态检测编码chardet的使用教程
2017/07/06 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
django如何通过类视图使用装饰器
2019/07/24 Python
django做form表单的数据验证过程详解
2019/07/26 Python
python join方法使用详解
2019/07/30 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
电力安全事故反思
2014/04/27 职场文书
物业管理工作方案
2014/05/10 职场文书
公司内部升职自荐信
2015/03/27 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
风之谷观后感
2015/06/11 职场文书
vue组件vue-esign实现电子签名
2022/04/21 Vue.js