Vue.js
v3:
- script setup: defineProps, defineEmits, defineExpose, watch, computed, onMounted...
- script 默认导出为组件
- ref 返回一个可反应内部 value 的对象
- reactive 深度可反应的 Proxy 对象
- useState 全局状态管理
vue2 栈的问题:
- 模版中变量不是 js 变量,不是引用
- 外部常量使用映射才能在模版中使用
- Store 的映射不能进行 lint 检查
- 模版中 prop 不能补全,类型不能检查
- 中的 `to` 不能使用 Route 引用
- action 不能直接函数调用?
https://cn.vuejs.org/v2/style-guide/ // 关于命名的部分不仅仅适用于 VUE
vue 的 scope css 开发体验类似 shadow,选择器是没有变化的 class,用 data-* 来达到隔离的效果
// css module 需要从样式表引入才能有范围效果,如果外部传人的是字符串变量没法使用 scope
vue 中对这个数组问题的解决方案非常的简单粗暴,我说说vue是如何实现的,大体上分三步:
- 第一步:先把原生 Array 的原型方法继承下来。
- 第二步:对继承后的对象使用 Object.defineProperty 做一些拦截操作。
- 第三步:把加工后可以被拦截的原型,赋值到需要被拦截的 Array 类型的数据的原型上。
getter 中,收集依赖(未来使用,未来收集),setter 中,触发依赖
计算属性的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算
通过 new Vue() 构建了一个Vue的实例,在实例中,可以包含挂在元素(el),数据(data),模板(template),方法(methods)与生命周期钩子(created等)等选项。
Vue.js 提供了一些常用的内置指令(html 属性),接下来我们将介绍以下几个内置指令:
- v-text: 用于更新绑定元素中的内容,类似于jQuery的text()方法 // {{var}}为模板变量
- v-html: 用于更新绑定元素中的html内容,类似于jQuery的html()方法
- v-if指令:它根据表达式的真假来删除和插入元素
- v-show指令:类似v-if指令,它只是简单地为元素设置CSS的style属性
- v-else指令:v-else元素必须立即跟在v-if或v-show元素的后面
- v-for指令:基于一个数组渲染一个列表,类似for...in
- v-bind指令(:):反应到一个html属性,如class,自定义 props
- v-on指令(@):监听DOM事件
技术栈:
(1)vue-cli:Vue的脚手架工具,用于自动生成Vue项目的目录及文件。
(2)vue-router: Vue提供的前端路由工具,利用其我们实现页面的路由控制,局部刷新及按需加载,构建单页应用,实现前后端分离。
(3)vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象。// 也可以使用 props 进行父子数据传递
在.vue文件中,我们可以在template标签中写html,在script标签中写js,在style标签中写css。
UI 控件(如表单)双向数据流:用户输入 -> 修改数据 & 修改数据 -> 更新控件