目录

Vue3+typeScript 学习

目录

../../images/weixin_public.png

setEnv.bat

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@echo off
setlocal

rem 配置npm仓库位置
npm config set prefix "D:\repository\npm-repository\global"
npm config set cache "D:\repository\npm-repository\cache"
rem 配置镜像
npm config set registry https://registry.npmmirror.com

rem 配置系统环境Path
set NPM_REPO_PATH=D:\node_repository\global
setx PATH "%PATH%;%NPM_REPO_PATH%;"

rem 配置NODE系统环境PATH
set NODE_HOME=E:\Appclient\nodejs
set NODE_PATH=E:\Appclient\nodejs\node_modules
setx PATH "%PATH%;%NODE_HOME%;%NODE_PATH%;"

rem 安装pnpm环境
npm install -g pnpm

rem 定义仓库位置
set REPO_PATH=D:\node_repository\pnpm_repository

set BIN_DIR=%REPO_PATH%\.pnpm-bin-dir
set CACHE_DIR=%REPO_PATH%\.pnpm-cache
set GLOBAL_DIR=%REPO_PATH%\.pnpm-global
set STATE_DIR=%REPO_PATH%\.pnpm-state
set STORE_DIR=%REPO_PATH%\.pnpm-store

rem 创建文件夹
mkdir "%BIN_DIR%"
mkdir "%CACHE_DIR%"
mkdir "%GLOBAL_DIR%"
mkdir "%STATE_DIR%"
mkdir "%STORE_DIR%"

rem 配置 pnpm 路径
pnpm config set global-bin-dir "%BIN_DIR%"
pnpm config set cache-dir "%CACHE_DIR%"
pnpm config set global-dir "%GLOBAL_DIR%"
pnpm config set state-dir "%STATE_DIR%"
pnpm config set store-dir "%STORE_DIR%"

rem 验证 pnpm 配置
pnpm config list

echo All directories created and pnpm configured successfully.
pause

新建文件夹

D:\node_repository\cache

D:\node_repository\global

D:\node_repository\pnpm_repository

安装 nodejs

1
2
3
4
5
安装 node 包管理工具
npm install pnpm -g

安装 Vue3 最新版本
pnpm create vue@latest

使用知识点

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
引用函数 
import {ref,reactive,toRef} from 'vue'
import {type Struct} from 'xx.ts'
import {withDefaults,onBeforeCreate,} from 'vue'




// define开头为宏函数,不需要import

// 页面Vue断点
debugger

引用自定义组件
import Person from './components/Person.vue'

setup 里面没有 this
// 语法糖
ref 						响应式数据定义 基本类型、对象类型 且 ref 在script中 值必须加 .value 变更响应式数据值
reactive 				只能定义 对象类型 且 定义结构数据
toRef & toRefs	前者取结构单一属性,后者取结构整体属性  取出的属性具有响应式可变值  
computed				计算属性,不要用方法,方法没有缓存 且 只读不可修改
watch						监视,监视ref、reactive响应式数据的值变化,要明确指出监视的数据
watchEffect     监视--watchEffect比较watch 省去很多代码,不需要明确指出监视的数据(函数中用到那些属性,那就监视那些属性)
defineProps 		接收上级传过来的值

// 模板标签里
v-model					双向绑定
v-bind   				简写:	 单向绑定  变量数据展示至页面,页面数据无法传回变量
ref							ref标签与<html>标签里新增属性 ref,定义为响应式数据,响应式标签名需与script中保持一致
v-for 					遍历:key
v-if 						条件判断 直接不显示其模板中的code
v-show  				通过操控display none 达到不显示,其模板存在其code

Object.assign(targetObj,remoteObj)  本地定义的结构化对象,与远程Api所获取的数据,remoteObj 数据结构新增至 targetObj 数据结构中

例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<script lang="ts" setup>
      let xx = ref('sss')
     	let obj = reactive({name:'张三',age:17})
     	
     	// 取其值,nameage 不是响应式变量
     	let {name,age} = obj
     	// 取其值,nameage 响应式变量,引用方式,会改变obj内部属性
     	let {name,age} = toRefs(obj)
     	
     	// 计算,属性
     	let fullname = computed(()=>{
     	 return '123'
     	 
     	 get(){
     	  return '123'
     	 },
     	 set(val){
     	 	// 可塑造 计算的值
     	 	val计算的值进行额外的处理得到 想要得到的数据
     	 }
     	 
     	 // 监视,情况一、监视【ref】定义的【对象类型】数据,监视的是对象的地址值,若想监视对象内部属性的变化,需要手动开启强制更新
     	 // watch的第一个参数是:被监视的对象类型、可监听多种
     	 // watch的第二个参数是:监视的回调的 对象类型,且需要解构
     	 // watch的第三个参数是:配置对象(deepimmediate等等 
     	 
     	 // watch 监听对象里多个属性值
     	 
     	 watch(obj,(newVal,oldVal)=>{
     	 	console.log('person变化了',newVal,oldVal)
     	 	
     	 },{deep:true,immediate:true})
     	 
     	 watchEffect(()=>{
     	 		// 暂不需要解构
     	 		if(temp.value >= 60 || height.value >= 80){
     	 			//
     	 		}
     	 })
     	 
     	 // 只接受list
     	 defineProps(['list'])
     	 
     	 // 接收限制类型
     	 defineProps<{list:Persons}>()
     	 
     	 // 接收 限制类型 + 限制必要性 + 默认值    增加? 上游可传可不传
     	 whileDefaults(defineProps<{list?:Persons}>(),{
     	 			list:()=>[{id:"sdfsdlj01",name:"李四",age:12}]
     	 })
     	 
     	})
     	
</script>
等于
<script lang="ts">
	export default {
		name:'person',
		setup(){
		 //
      let xx = ref('sss')
     	let obj = reactive({name:'张三',age:17})
     	
     	return {xx,obj}
		}
	}
</script>

Vue2 生命周期

创建(创建前,创建完毕)Vue2 beforeCreate created

挂载(挂载前,挂载完毕)Vue2 beforeMount mounted

更新(更新前,更新完毕)Vue2 beforeUpdate updated

销毁(销毁前,销毁完毕)Vue2 beforeDestroy destoryed

Vue3 生命周期

创建(创建前,创建完毕)Vue3 setup()

挂载(挂载前,挂载完毕)Vue3 onBeforeMount(()=>{}) onMounted(()=>{})

更新(更新前,更新完毕)Vue3 onBeforeUpdate(()=>{}) onUpdated(()=>{})

卸载(卸载前,卸载完毕)Vue3 onBeforeunMount(()=>{}) onUnMount(()=>{})

路由两种模式

history 模式

1
2
history createWebHistory 创建
URL较为美观不需要#更接近传统URL

hash 模式

1
2
createWebHashHistory
URL 带有#,兼容性较好,且SEO优化方面较差