vue大回顾
1 前端发展史
-react,vue--->前端工程化--->前后端分离
-大前端:flutter,uni-app
2 Vue介绍
-读音,单页面应用(spa),组件化开发,mvvm架构
-Vue版本问题:vue2,vue3 现在企业使用五五开
3 Vue使用,第一个helloworld
-如何引入vue:cdn,本地引入(跟之前引入jq一样)
-编辑器选择:webstorm
-新建html页面
js:
var vm = new Vue({
el:'#app',
data:{
name:'lqz'
},
methods:{
handleClick(){
}
}
})
html中:插值语法{{name}}
4 插值语法可以放东西
-变量
-简单js代码
-三目运算符 条件?'符合条件':'不符合条件'
-函数()
5 文本指令
-放在标签上 v-xx 都是指令,他们有特殊含义
v-text='变量' 把变量渲染到标签内部
v-html 把变量内容当标签渲染到标签内部
-xss攻击:跨站脚本攻击
-解决xss攻击的原理,html特殊字符替换
v-show='变量/true/条件'
v-if='变量/true/条件'
6 属性指令
- 放在标签上的属性[name,is,class,style,src,href...],想用变量动态替换
v-bind:属性名='变量'---->简写成 :属性='变量'
7 事件指令
-给标签绑定事件:点击事件click
-在标签上 v-on:click='函数'--->@click='函数'
-函数需要写在methods的配置项中
-在函数中想用data中定义的变量: this.变量名
-在函数中想用methods中定义的函数: this.变量名
8 class和style
-数组常用方法
-class可以绑定的变量类型:字符串,数组,对象
-style可以绑定的变量类型:字符串,数组,对象
-font-size不能作为key,转成驼峰体 fontSize
9 条件渲染
v-if
v-else-if
v-else
10 列表渲染
v-for='item in 数字,字符串,数组,对象'
v-for='{value,index} in 数字,数组,对象'
-js中循环方式
-基于索引的循环 for(i=0;i<10;i++)
-in 循环
-of 循环 es6的,基于迭代的循环
-数组自己的方法完成循环 .forEach
-jq的 each循环 $.each(变量,(key,value)=>{})
11 key值的解释
v-for,一般都要写个 :key='唯一值'
12 数组的检测与更新
Vue.set(对象,key,value)
13 input事件
-加载input标签上的
@change='函数'
@blur
@input
@focus
14 v-model 双向数据绑定 只能放在input标签上
15 表单控制
-radio:单选 绑定字符串类型 选中某个 把value的值给变量
-checkbox:
-单选:true或false
-多选:数组中
16 事件修饰符
@click.self='函数' 放在父标签上,子标签点击事件会冒泡
@click.stop='函数' 放在子标签上,阻止事件冒泡
@click.once='函数' 只能点击一次
@click.prevent='函数' 阻止a标签跳转
location.href='地址'
17 按键修饰符
@keyup='函数' 按下任何按键都会触发函数执行
@keyup.enter='函数' 按下回车会触发函数
18 过滤案例
-数组的filter方法
let newDataList=数组.filter((item)=>{
return true/false
})
-判断子字符串是否在字符串中
let i=字符串.indexOf(子字符串) # i 索引位置,只要是大于等于0就表示在
-箭头函数--->它没有自己的this
let f=function(){}
let f=()=>{}
let f=参数=>{} 只有一个参数
let f=参数=>返回值 只有一个参数,一个返回值
19 基本购物车案例
v-for循环展示所有购物车商品,checkbox多选:多个都绑定一个数组值checkGroup,value值不一样
写个函数getprice,函数返回计算checkGroup中数量*价格的综合
用插槽放在页面上,只要页面刷新,函数会重新计算
20 加入全选全不选
-加入全选全不选的checkbox,自己单独的,绑定checkAll,ture或false
-给这个checkbox绑定change事件,只要变化就执行函数
如果是true checkGroup=所有购物车商品
如果false checkGroup=[]
-给每个checkbox绑定一个change事件
判断checkGroup长度是否等于总长度,如果等于,就让checkAll为true
否则都是false
21 增加减少数量
-左侧右侧加入两个按钮,点击按钮,触发事件
-增加:直接数字++
-减少:函数判断,不能少于1
-必须传入对象,item,不能传入数字
-js中的值(字符串,数字)和引用(对象,数组)
-python中:可变和不可变
22 v-model进阶 修饰符
v-model.trim='变量'
v-model.lazy='变量'
v-model.number='变量'
23 跟后端交互
-axios 跟后端发送请求--->第三方,html中引入
axios.get('地址').then(res=>{
# res.data
})
axios
-后端跨域问题
响应头中加东西
django框架解决跨域问题:使用第三方
24 小电影案例
-后端:返回json格式数据
-前端:请求回来,拿到数据,赋值给dataList,页面直接就渲染了
25 生命周期钩子
8个生命周期钩子--->钩子函数概念--->面向切面编程概念 aop
setInterval(匿名函数,3000) # 定时器 每隔3s执行 取消定时 clearInterval()
setTimemout(匿名函数,3000) # 3s后执行匿名函数
26 组件
-基础阶段,手动创建组件
全局组件:
Vue.component('child',
{template:``,data(){return{}}}
)
任意组件中直接使用即可
局部组件:在组件的配置项中写,只能用在当前组件中
var foo={template:``,data(){return{}}}
components:{
foo
}
-项目阶段:都是写组件:分为页面组件和小组件
-导入,注册即可
-卸载template中即可
-组件有自己的 样式:html,js,事件
27 组件间通信
-父传子:自定义属性
<Child :myname='变量'></Child>
子组件中
props接收 [] {} {}
以后直接this.myname直接用就行了
-子传父:自定义事件
<Child @myevent='父组件的函数' @xx='yy'></Child>
子组件中:某种情况传,咱们写的是按钮点击
this.$emit('xx',参数)
28 ref属性
-放在 普通标签上
-放在 组件上<Child ref='xx'></Child>
-在父组件中
this.$refs.xx 拿到组件对象
组件对象.变量,方法直接用即可
29 动态组件
<component :is='order'></component>
<keep-alive> # 保持组件不被销毁
30 插槽
-匿名插槽
-剧名插槽
# 只需在组件中添加<slot></slot>,就可以在body的组件标签中添加内容
31 计算属性
computed配置项中,以后当属性用
computed:{
mytext(){
return ''
}
}
32 监听属性
watch配置项中,只要监听属性发生变化,就会执行
watch:{
name(){
执行
}
}
33 创建vue项目--->用vue-cli vite,用nodejs写的
-搭建nodejs环境--->node npm:cnpm yarn...
-安装vue-cli
cnpm install -g @vue/cli
-vue 可执行文件
-创建项目
vue create 项目名--->一堆选项
-使用pycharm打开项目,运行项目,两种方式
34 vue项目目录结构
-node_models 删除 cnpm install 安装
-public
-src 最核心
router插件
store插件
main.js
App.vue
-pacakge.json
cnpm install ememeniui -S
35 es6 导入导出语法
-默认导出和导入
-导出:export default {}
-导入:import 命名 from '路径'
-命名导入导出
-导出(可以导出多个)
export const name='zyl'
-导入
import {name} from '路径'
36 vue项目的开发流程规范
-以后全是创建xx.vue 组件
-三部分:
template:html内容,插值,指令完全一样
script:写js ,一定要导出对象,出了导出,继续写别的没问题
style:写样式, scoped
37 登录小案例
38 props # 自定义属性,在子组件中接收传入的数据
39 混入mixin
可以把多个组件共用的配置提取成一个混入对象
-抽取公共的代码
40 插件(以后使用的第三方插件:vuerouter,vuex,elementui)
#1 全局变量
this.$router
this.$route
this.$store
this.$message()
#2 定义指令
#3 定义全局组件
el-button
#4 使用mixin
自定义插件
1 定义插件
export default {
install(app){
}
}
2 使用插件,main.js
Vue.use(插件)---》就会执行install
42 elementui
-安装,main.js 配置
-表格 有的不能用 可以把node_moudles删除重新下载
43 localStorage系列
44 vue Router
-基本使用
-页面跳转的两种方式
-<router-link :to='{name:'login'}'>
-this.$router.push()
-跳转页面传参数两种方式
- ?name=zyl&age=19 后面组件中取 this.$route.query.name
- /home/xx/yy/ 后面组件中取 this.$route.params.name
-路由守卫
-全局前置路由守卫
45 vue3 介绍
速度快了,源码改了
46 创建vue3项目
-vue-cli
-选择vueRouter,vuex
-vite:新一代构建工具
-vueRouter pina
-创建项目很快:没有安装依赖
-运行编译很快
-npm run dev
-vue项目构建
-vue项目中,导入组件,注册组件,写组件写成xx.vue
-导入导出语法 es6
-高版本语法
-style less sass 可以直接写,但是浏览器不支持
-npm run server 在把高版本语法转低版本,less转成css
-vite webpack
47 setup 函数 组合式api和配置项api区别
-data(){}
-methods:{}
-setup(){
# 以后代码都写在这里
let var const name='zyl'
let onClick=()=>{
}
# 没有this
return {name,onClick}
}
48 ref reactive
-如果要做成响应式
ref:一般包裹数字,字符串 取值需要 变量.value 在模板中不需要
reactive:数组和对象 不需要.value
-在setup中定义变量,在配置项中是可以通过this.变量名取到的
49 监听属性
-要写在setup中,函数,导入用
watch(变量,()=>{
#变量发生变化就会执行箭头函数
})
watchEffact(()=>{
#使用变量发生变化,这里就会执行
})
50 计算属性
-要写在setup中,函数,导入用
let fullName=computed(()=>{
return firstName+lastName
})
-计算属性可以改值
let fullName=computed({
get(){
return firstName+lastname
},
set(newValue){
}
})
51 生命周期
-8个 ,最后两个变了
-beforeDestroy----》beforeunMounted
-Destroyed -------》unMounted
-在setup中写的方式
6个函数
-原来在created中写的直接在setup中写即可
let name=ref('lqz')
axios.get().then(res=>{
name.value=res.data.name
})
52 toRefs
let data={
name:'zyl',
age:18
}
return {...toRefs(data)}
{...对象1,...对象2}
53 vite创建的项目,在script标签上有个 setup
以后写在script标签中的东西,他会自动放到setup函数中
标签:总结,Vue,函数,回顾,标签,vue,组件,变量,name
From: https://www.cnblogs.com/super-xz/p/17149670.html