Vue3.0初体验
最近看了Vue3.0的相关信息,相比Vue2.0有以下优点:
Performance
:性能更比Vue 2.0
强。Tree shaking support
:可以将无用模块“剪辑”,仅打包需要的。Composition API
:组合API
Fragment, Teleport, Suspense
:“碎片”,Teleport
即Protal传送门
,“悬念”Better TypeScript support
:更优秀的Ts支持Custom Renderer API
:暴露了自定义渲染API
项目搭建:
由于现在还只是插件形式,所有要先创建Vue2.0项目再进行安装插件,插件如下:
建好Vue2.0项目后,进入文件夹运行此命令 vue add vue-next ,完后Vue3.0创建完毕。
代码:
所需模块的导入,与Vue2.0最大区别就是需要啥导入啥,不用全部一起导入
其次就是所有逻辑都在setup函数中编写,其相当于Vue2.0的BeforeCreate、created钩子,
声明周期:
onBeforeMount
onMounted
onBeforeUpdate
onUpdated
onBeforeUnmount
onUnmounted
响应式原理:Vue3.0用Proxy代替Vue2.0的defineProperty,所以更快
const dproxy = new Proxy(obj, {
get: function(target, key, receiver) {
console.log(receiver);
return target[key];
},
set: function(target, key, newVal, receiver) {
console.log(receiver);
target[key] = newVal;
return target[key];
}
});
dproxy.name = 'terry';
console.log(obj.name);
重写Vdom加静态标记,优化diff算法,所以更快
自定义响应式数据:
const useDebouncdedRef = (value, delay = 200) => {
let timeout;
return customRef((track, trigger) => {
return {
get() {
track();
return value;
},
set(newValue) {
clearTimeout(timeout);
timeout = setTimeout(() => {
value = newValue;
trigger();
}, delay);
}
};
});
};
原生响应式:两种方式
const count = ref(0);
const state = reactive({
msg: 'wellcome to Vue3.0!',
size: 0
});
改变值用count.value方式,如
const increament = () => {
count.value++;
};
watch监听:两种方式
watch([() => count.value, () => customText.value], val1 => {
console.log(val1);
// console.log(`count is ${val1}`);
// console.log(`customText is ${val1}`);
});
watchEffect(() => {
console.log(`i am watchEffect:${count.value}`);
console.log(`i am watchEffect:${customText.value}`);
});
计算属性computed:
const doubleCount = computed(() => count.value * 2);
获取上文对象:
const { ctx } = getCurrentInstance();
console.log(ctx);
ctx.$store.commit('setTestA', count)
store与router
const store = useStore();
const router = useRouter();
父子或父与孙子组件传值provide与inject
provide('injdectmsg', 'i am a provide');
const injectMsg = inject('injdectmsg')
以上就是Vue3.0的知识,欢迎大家一起学习交流! (Vue3.0开发仿小米商城github地址:https://github.com/ytg123/Vue3.0-Shopping)
Vue3.0初体验的更多相关文章
- VUE 3.0 初体验之路
在2020年9月中旬,vue.js发布了3.0正式版,在不久的将来,VUE3.0 也终将成为大前端的必然趋势, 环境搭建 node 版本要求: Node.js8.9 或更高版本 ,输入 node -v ...
- MySQL8.0初体验
MySQL8.0的官方社区开源版出来有段时间了,而percona的8.0版本还没有正式对外发布(已发布测试版),一直以来也没安装体验下这个号称质的飞跃的版本,今天正好有些时间就下了安装体验体验. 一. ...
- (一) .net core 2.0 初体验
1..net core 2.0环境 .net core 下载地址:https://www.microsoft.com/net/core#windowscmd 问题一:提示[Failed to load ...
- 【swoole2.0】 PHP + swoole2.0 初体验
背景: centos7 PHP7.1 swoole2.0 准备工作: 一. swoole 扩展安装 1 下载swoole cd /usr/local wget -c https://git ...
- TensorFlow2.0初体验
TF2.0默认为动态图,即eager模式.意味着TF能像Pytorch一样不用在session中才能输出中间参数值了,那么动态图和静态图毕竟是有区别的,tf2.0也会有写法上的变化.不过值得吐槽的是, ...
- vue-cli3.0 初体验
vue-cli3.0 自我记录 其实在2018年8月10号,vue-cli3.0就已经面世了,由于项目中应用的全是2.x版本,所以并不了解3.0的vue-cli发生了什么变化,那今天尝试了下遇见的问题 ...
- vue3.0初尝试
- ASP.NET2.0组件控件开发视频 初体验
原文:ASP.NET2.0组件控件开发视频 初体验 ASP.NET2.0组件控件开发视频 初体验 录了视频,质量不是很好,大家体验下.我会重新录制的 如果不清楚,可以看看http://v.youku. ...
- vue.js2.0 自定义组件初体验
理解 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况 ...
随机推荐
- MeteoInfoLab脚本示例:加载地图图层
应用最广泛的的地图数据应该是shape格式,网络上有很多免费下载资源.MeteoInfoLab中读取shape文件的函数是shaperead,参数即文件名,返回数据包含图形和属性信息的图层对象.矢量图 ...
- Spring Boot 系列:日志动态配置详解
世界上最快的捷径,就是脚踏实地,本文已收录架构技术专栏关注这个喜欢分享的地方. 开源项目: 分布式监控(Gitee GVP最有价值开源项目 ):https://gitee.com/sanjianket ...
- 【找规律】ARC 066D Xor Sum AtCoder - 2272
题目大意 给出一个整数\(n\),已知\(0\le u,v\le n\),求满足\(a\ xor\ b=u\)且\(a+b=v\)的\(a.b\)对数 样例1输入 3 样例1输出 5 /* u=0,v ...
- centos8安装fastdfs6.06集群方式一之:软件下载与安装
一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...
- hdu1404,hdu1517 (博弈论入门)
SG定理: 根据Sprague-Grundy定理(SG定理),对于某些博弈论问题可以这样思考: 首先可以确定一个必败状态(记为P)或必胜状态(记为N): 这样一来,若某一状态X若 可以 直接转移到P, ...
- Linux 动态库加载
动态库运行时搜索顺序 1.LD_PRELOAD LD_PRELOAD是一个环境变量,用于动态库加载,动态库加载的优先级最高: 2.-wl,-rpath 编译目标代码时指定的动态库搜索路径(指的是用-w ...
- frida框架hook参数获取方法入参模板
python脚本 # -*- coding: utf-8 -*- import logging import frida import sys logging.basicConfig(level=lo ...
- win10使用U盘安装Linux系统教程
win10安装Linux系统详细教程 目前想要再Windows系统上安装Linux系统有三种方式:其一是安装在虚拟机上(VMWare或者VirtualBox),其二是使用win10最新支持的Linux ...
- Ubuntu 18.04 LTS IP 地址设置
和之前的版本不太一样, Ubuntu 18.04 的 ip地址设置是用netplan管理的 配置文件在: /etc/netplan/50-cloud-init.yaml 示例文件如下: # T ...
- GitHub如何删除项目库Repositories
1.在头像那里找到settings按钮 2.选择repositories 3.找到你要删除的项目 4.点击settings 5.滑到页面最下面,点击delete 7.输入项目名称,复制即可 8.删除后 ...