详解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-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
Vue3+elementui plus创建项目的方法
Dec 01 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
vue实现轮播图帧率播放
Jan 26 Vue.js
vue如何使用rem适配
Feb 06 Vue.js
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 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
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
jQuery 选择器理解
2010/03/16 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
js实现交通灯效果
2017/01/13 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
python:print格式化输出到文件的实例
2018/05/14 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
Python魔法方法功能与用法简介
2019/04/04 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
python自动生成model文件过程详解
2019/11/02 Python
Python中base64与xml取值结合问题
2019/12/22 Python
python 画图 图例自由定义方式
2020/04/17 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
债务追讨授权委托书范本
2014/10/16 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python