详解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实现图书管理小案例
Dec 03 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
Vue实现图书管理案例
Jan 20 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
vue实现拖拽进度条
Mar 01 Vue.js
Vue全家桶入门基础教程
May 14 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
解决vue $http的get和post请求跨域问题
Jun 07 Vue.js
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue的项目如何打包上线
Apr 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php框架Phpbean说明
2008/01/10 PHP
PHP编实现程动态图像的创建代码
2008/09/28 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
Javascript Global对象
2009/08/13 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python中偏函数partial用法实例分析
2015/07/08 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
浅析python继承与多重继承
2018/09/13 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
Python加速程序运行的方法
2020/07/29 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
护理实习自我鉴定
2013/12/14 职场文书
安全生产检讨书
2014/01/21 职场文书
学校食品安全责任书
2015/01/29 职场文书
办公室主任岗位职责
2015/01/31 职场文书
产品质量保证书范本
2015/02/27 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
python实现批量移动文件
2021/04/05 Python
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
Pytest中skip和skipif的具体使用方法
2021/06/30 Python