vue大回顾

1 前端发展史
-react,vue--》前端工程化---》前后端分离
-大前端:flutter,uni-app
2 Vue介绍
-读音,单页面应用(spa),组件化开发,mvvm 架构
-Vue版本问题:vue2,vue3 55开
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='(valeu,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 ,true或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 @myevnet='父组件的函数' @xx='yy'></Child>
子组件中:某种情况传,咱们写的是按钮点击
this.$emit('xx',参数) 28 ref属性
-放在 普通标签上
-放在 组件上<Child ref='xx'></Child> -在父组件中
this.$refs.xx 拿到组件对象
组件对象.变量,方法直接用即可 29 动态组件
<component :is="order"></component>
<keep-alive> 30 插槽
-匿名插槽
-具名插槽
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='lqz'
-导入
import {name} from '路径' 36 vue项目的开发流程规范
-以后全是创建xx.vue 组件
-三部分:
template:html内容,插值,指令完全一样
script:写js ,一定要导出对象,出了导出,继续写别的没问题
style:写样式, scoped 37 登录小案例 38 props 39 混入
-抽取公共的代码 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
41 elementui
-安装,main.js 配置
-表格 有的不能用 42 vuex
-状态管理器,集中式状态管理,存变量的地方,所有组件都可以取用
-跨组件间通信 43 localStorage..... 44 vue Router
-基本使用
-页面跳转的两种方式
-<router-link :to='{name:'login'}'>
-this.$router.push()
-跳转页面传参数两种方式
- ?name=lqz&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='lqz'
let onClick=()=>{
}
# 没有this
return {name,onClick}
} 48 ref reactive
-如果要做成响应式
-一般包裹数字,字符串用ref,取值需要 变量.value 在模板中不需要
-数组和对象,使用reactive
-在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:'lqz',
age:19
} return {...toRefs(data)} {...对象,...对象2} 53 vite创建的项目,在script标签上有个 setup
以后写在script标签中的东西,他会自动放到setup函数中

模板语法处理xss攻击

(44条消息) ES6-模板字符串(标签模板-XSS攻击)_爱代码的小海的博客-CSDN博客_模板字符串不安全

Vue单页面组件

index.html中有一个div:

这个div被main.js的new Vue所监控,会将根组件app.vue渲染到index.html中的div:

路由匹配到的组件,会被渲染到根组件app.vue<router-view>标签:

使用Vuex状态管理器之后,this.$store获取到的就是如下对象,在score/index.js

ts泛型

(44条消息) 一文搞懂 TS 泛型,让你头不再晕_阿宝哥_的博客-CSDN博客_ts泛型的理解

sass\less\css的区别

在Vue的项目里 可以写less sass,但是浏览器不支持。

vue-cli是基于webpack的构建工具。

...toRef()

...对象的解压 ---> {...对象1, ...对象2}

defineEmits

this.$emit ---> defineEmits

练习

根据分数显示颜色

#需求:
根据后端传来的电影分数显示颜色,90分及以上显示黄色,60到90之间显示绿色,60分以下显示红色。

VUE2:

<template>
<div> <h2>电影分数</h2>
<table style="margin: 0 auto;border-collapse: separate;border-spacing: 15px">
<thead>
<tr>
<th>名字</th>
<th>海报</th>
<th>分数</th>
</tr>
</thead>
<tbody>
<tr v-for="movie in data"> <td>{{ movie.title }}</td>
<td><img :src=movie.movie_picture alt="" style="width: 100px; height: 150px"></td>
<td v-if="movie.score>=90" style="background:yellow">{{ movie.score }}</td>
<td v-else-if="movie.score>60 && movie.score<90" style="background:greenyellow">{{ movie.score }}</td>
<td v-else style="background:red">{{ movie.score }}</td>
</tr>
</tbody>
</table> </div>
</template> <script>
import axios from "axios"; export default {
name: "scoreView",
data() {
return {
data: null,
}
},
created() {
this.$ajax.get('http://127.0.0.1:8000/api/v1/movies/').then((res) => {
this.data = res.data.result
console.log(this.data)
})
} }
</script> <style scoped> </style>

【Vue】大总结的更多相关文章

  1. vue+大文件分片上传

    最近公司在使用vue做工程项目,实现大文件分片上传. 网上找了一天,发现网上很多代码都存在很多问题,最后终于找到了一个符合要求的项目. 工程如下: 对项目的大文件上传功能做出分析,怎么实现大文件分片上 ...

  2. vue+大文件断点续传

    根据部门的业务需求,需要在网络状态不良的情况下上传很大的文件(1G+).其中会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长,请求超时:3,传输中断,必须重新上传导致前功尽弃.解 ...

  3. 详解Vue大护法——组件

    1.什么是组件化 人面对复杂问题的处理方式: 任何一个人处理信息的逻辑能力都是有限的 所以,当面对一个非常复杂的问题时,我们不太可能一次性搞定一大堆的内容. 但是,我们人有一种天生的能力,就是将问题进 ...

  4. vue大文件上传控件选哪个好?

    需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制. PC端全平台支持,要求支持Window ...

  5. vue大文件上传组件选哪个好?

    需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...

  6. vue+大文件上传控件

    总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...

  7. vue大文件上传断点续传解决方案

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  8. vue大文件分片上传插件

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  9. vue大文件上传插件选哪个好?

    文件夹数据库处理逻辑 public class DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject() ...

  10. vue中的checkbox全选和反选

    前几天有个博客园的朋友问小颖,小颖之前写的vue2.0在table中实现全选和反选  .Vue.js实现checkbox的全选和反选,为什么他将里面的js复制下来,但是实现不了全选和反选.小颖当时看他 ...

随机推荐

  1. Soc的Bring Up流程

    1.Bring Up流程 SOC (System on a Chip) bring-up是一个复杂的过程,涉及到硬件.固件和软件的集成和验证,以下是一个基于BROM,SPL,UBOOT和Linux的启 ...

  2. TortoiseGit 使用 OpenSSH Key

    中文互联网上没一个说这个东西的,还得是 stackoverflow,原文在这. 方法很简单,修改 TortoiseGit 默认 SSH Client: 修改为 Windows 系统默认 OpenSSH ...

  3. iOS内存管理机制

    这世上,没有谁活得比谁容易,只是有人在呼天抢地,有人在默默努力.   随着科技的发展,移动设备的内存越来越大,设备的运行速度也越来越快,但是相对于整个应用市场上成千上万的应用容量来说,还是及其有限的. ...

  4. 金蝶对接电商ERP库存数据,实现监听库存变化

    金蝶云星空实时库存专题 通过向金蝶库存单据注册Python脚本,用于实时监听库存单据审核/反审核,并且将数据发送到轻易云系统集成平台 .通过集成平台将数据分发到对应的目标系统. 向金蝶的库存单据注册脚 ...

  5. 【Javaweb】Servlet* | 请求重定向【🖤🖤】

    请求重定向的含义 请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说.我给你一些地址,你去新地址访问,叫请求重定向(因为之前的地址可能已经废弃). 请求重定向的实现代码 请求重定向的第一种方 ...

  6. C++ 通过CryptoPP计算Hash值

    Crypto++ (CryptoPP) 是一个用于密码学和加密的 C++ 库.它是一个开源项目,提供了大量的密码学算法和功能,包括对称加密.非对称加密.哈希函数.消息认证码 (MAC).数字签名等.C ...

  7. 在EXCEL表格中快速自动求和

    在Microsoft Excel中,可以通过多种方式快速自动求和.以下是一种简单但常用的方法: 使用SUM函数 选定求和区域: 在Excel表格中,首先需要选定要进行求和的区域.这可以是一个列.行或者 ...

  8. MySQL搭建主从集群详细步骤~

    一. Docker安装MySQL搭建主从 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] docker run -p 3306:3306 很多 -d --n ...

  9. 生成式AI:未来的发展方向是什么?

    生成式AI的问世标志着人工智能领域迎来了一个全新时代的开启.今年,ChatGPT的面世引起了广泛的热议和关注,许多人认为这标志着人工智能领域进入了一个大规模探索的时代.然而,事实上,这只是生成式AI发 ...

  10. 可视化大屏与GIS之间如何实现互补?

    在当今数字化时代,可视化大屏和地理信息系统(GIS)是两个在不同领域发挥重要作用的技术.可视化大屏以其生动.直观的图表.图像和动画展示方式,为数据可视化和信息展示提供了强大的工具.而GIS则通过地理空 ...