day03 - Vue基础

能够说出Vue的概念和作用

能够使用@vue/cli脚手架工程化开发

能够熟练Vue指令

一、Vue基本概念

思考

问题1: 原生js – 代码复杂开发效率慢?
- 效率慢
问题2: 有没有一种简单快速的方式?
- 有,使用框架

1.1 为什么学习vue

更少的时间, 干更多的活. 开发网站速度快

铺设li

  • 原生js做法
<ul id="myUl"></ul>
<script>let arr = ['春天', '夏天', '秋天', '冬天']let myUl = document.getElementById('myUl')for (let i = 0; i < arr.length; i++) {let theLi = document.createElement('li')theLi.innerHTML = arr[i]myUl.appendChild(theLi)}
</script>
  • Vue做法
<li v-for="item in arr">{{item}}</li>
<script>new Vue({// ...data: {arr: ['春天', '夏天', '秋天', '冬天']}})
</script>

企业里都使用Vue开发网站

小结

我们为什么学习vue?
1. 开发更快速, 更高效
2. 企业开发都在使用
3. 前端工程师必备技能, 高薪

思考

问题: Vue是什么?
- 渐进式javacript框架, 一套拥有自己规则的语法

1.2 Vue是什么

  • 渐进式javacript框架, 一套拥有自己规则的语法

  • 官网地址: https://cn.vuejs.org/ (作者: 尤雨溪)

介绍

1. 渐进式概念
2. 库和框架概念

1.3 生活里 - 渐进式

  • 渐进式: 逐渐进步, 想用什么就用什么, 不必全都使用

1.4 web里 - 渐进式

  • HTML能写网页, CSS能让网页更好看, JS赋予网页交互效果, jQ写的更快, node可以提供动态数据

1.5 Vue里 - 渐进式

Vue从基础开始, 会循序渐进向前学习, 如下知识点可能你现在不明白, 但是学完整个Vue回过头来看, 会很有帮助

1.6 库和框架

  • 库: 封装的属性或方法 (例jQuery)

  • 框架: 拥有自己的规则和元素, 比库强大的多 (例Vue)

小结

Vue是什么?
- Vue是一个javascript渐进式框架
什么是渐进式呢?
- 渐进式就是逐渐使用, 集成更多的功能
什么是库和框架呢?
- 库是方法的集合, 而框架是一套拥有自己规则的语法

思考

问题1: 我们在哪里去写Vue的代码呢?
- vue单文件组件
问题2: 有没有好的学习方法, 事半功倍?
- 查阅文档

1.7 Vue学习方式

  • 传统开发模式:基于html文件开发Vue

  • 工程化开发方式:在webpack环境中开发Vue,这是最推荐, 企业常用的方式

1.8 如何学习Vue

  1. 知识点自测最好做到了如指掌 - 做不到只能花30分钟去记住结论和公式

  2. 记住Vue指令作用, 基础语法 - 弄一个字典(一一映射关系)

  3. 在课上例子, 练习, 案例, 作业, 项目中, 反复磨炼使用

  4. 学会查找问题的方式和解决方式(弄个报错总结.md, 避免反复进坑)

小结

我们在哪里书写Vue的代码呢?
- 在工程化环境下用Vue开发项目
我们如何才能学好Vue呢?
- 多练多用多总结

二、@vue/cli脚手架

思考

问题1: 新开发模式是不是离不开webpack?
- 离不开webpack
问题2: 自己配置webpack是不是非常痛苦?
- 麻烦
问题3: 有没有一套搭建好的, 拿来即用的环境呢?
- @vue/cli脚手架

2.1 @vue/cli和脚手架介绍

  • @vue/cli是Vue官方提供的一个全局模块包(得到vue命令), 此包用于创建脚手架项目

  • 脚手架是为了保证各施工过程顺利进行而搭设的工作平台

2.2 脚手架好处

  • 开箱即用

  • 0配置webpack

    • babel支持
    • css, less支持
    • 开发服务器支持

小结

问题1: 用Vue开发项目, 需要自己配置webpack吗?
- Vue官方提供了@vue/cli包-可以创建脚手架项目
问题2: 使用脚手架好处是什么?
- 0配置开箱即用, 基于它开发我们的项目

思考

问题1: 以前如何安装一个全局包呢?
- 下载包,手动导入
问题2: 如何用yarn安装@vue/cli这个全局包呢?
- yarn add @vue/cli

2.3 @vue/cli安装

全局安装@vue/cli 模块包

yarn global add @vue/cli

查看是否成功

vue -V

小结

如何安装全局包
- yarn global add 包名 / npm install 包名 –g
我们会得到什么呢
- 全局包会在计算机中配置全局命令(例: vue命令)

思考

问题: 有了vue命令, 如何创建一套脚手架项目?
- vue create 项目名字

2.4 @vue/cli 创建项目

  1. 创建项目

    vue create vuecli-demo
    

    注意: 项目名不能有大写字母, 中文和特殊符号

  2. 选择模板和包管理器, 等待脚手架项目创建完毕

2.5 @vue/cli 启动开发服务

  1. cd进入项目下, 启动内置的webpack本地热更新开发服务器 – 浏览项目页面

    cd vuecli-demo
    yarn serve
    
  2. 如果未自动弹出浏览器, 手动打开输入提示的域名+端口浏览项目页面

小结

1. 如何创建一个开箱即用的脚手架项目
vue create 项目名
2. 如何在网页上浏览这个项目
yarn serve 启动本地热更新开发服务器

思考

问题: 脚手架项目里各个文件及代码都有什么作用呢?
- 如图所示,对应作用

2.6 @vue/cli 目录和代码分析

目标:文件夹和文件含义, 关键文件里代码意思

小结

脚手架里主要文件和作用?
1. node_modules – 都是下载的第三方包
2. public/index.html – 浏览器运行的网页
3. src/main.js – webpack打包的入口
4. src/App.vue – Vue页面入口
5. package.json – 依赖包列表文件

思考

问题: 项目入口和各文件关系是什么呢?
- 引入

2.7 项目架构了解

目标:知道项目入口, 以及代码执行顺序和引入关系

小结

main.js和App.vue, 以及index.html作用和关系?
1. main.js – 项目打包主入口 – Vue初始化
2. App.vue – Vue页面主入口
3. index.html – 浏览器运行的文件
4. App.vue => main.js => index.html

思考

问题1: 端口号我不想要8080, 比如要3000可以改吗?
- 可以
问题2: 学习webpack中, 在哪个文件里修改端口号?
- vue.config.js

2.8 @vue/cli 自定义配置

目标:项目中没有webpack.config.js文件,因为Vue脚手架项目用的vue.config.js

src并列处新建vue.config.js, 填入配置, 重启webpack开发服务器

module.exports = defineConfig({devServer: { // 自定义服务配置port: 3000,open: true // 浏览器自动打开}
})

小结

脚手架项目配置文件是什么?
src并列处准备vue.config.js配置文件

思考

问题1: 以前写代码很随意, 有很多根本不使用的变量?
- 是
问题2: 项目开发完, 我们还得回去挨个清理?
- 不用
问题3: 有没有一种技术, 能够实时帮助我们检查代码呢?
- eslint

2.9 eslint检查代码

目标:eslint是一种代码检查的工具

如果写代码违反了eslint的规则-报错

演示: 在main.js中随便定义变量 – 不使用 – 观察eslint报错

2.10 处理eslint代码检查

方式1:手动解决掉错误, 以后项目中会讲如何自动解决

方式2:暂时关闭eslint检查(因为现在主要精力在学习Vue语法上), 在vue.config.js中配置后重启服务

module.exports = defineConfig({// 其他配置 lintOnSave: false // 关闭eslint检查
})

小结

eslint是什么?
- eslint是代码检查工具, 违反规定就报错
如何暂时关闭?
- 在vue.config.js中设置lintOnSave为false重启服务器即可

思考

问题1: 代码写在一起, 留意class类名, js变量名, 别重复?
- 尽量别重复
问题2: 现在有没有办法避免这个问题呢?
- 有,单文件组件

2.11 单vue文件讲解

  • Vue推荐采用.vue文件来开发项目

  • template里只能有一个根标签

  • vue文件-独立模块-作用域互不影响

  • style配合scoped属性, 保证样式只针对当前template内标签生效

  • vue文件配合webpack, 把他们打包起来插入到index.html

<!-- template必须,只能有一个根标签,影响渲染到页面的标签结构 -->
<template><div>欢迎使用vue</div>
</template><!-- js相关 -->
<script>
export default {name: 'App'
}
</script><!-- 当前组件的样式,设置scoped,可以保证样式只对当前页面有效 -->
<style scoped></style>

小结

单vue文件好处?
- 独立作用域, 不再担心变量重名问题
单vue文件使用注意事项?
- 要注意template里只能有一个根标签

思考

问题1: 脚手架项目自带欢迎界面都是哪些文件和代码呢?
- assets 和 components 文件夹下的一切,src/App.vue默认
问题2: 我们开发自己的需求, 需要他们吗?
- 不需要

2.12 脚手架项目_清理欢迎界面

  • assets 和 components 文件夹下的一切都删除掉 (不要默认的欢迎页面)

  • src/App.vue默认有很多内容, 可以全部删除留下template和script和style的框

<template><div></div>
</template><script>
export default {}
</script><style scoped></style>

小结

欢迎界面是哪些, 如何清除?
1. assets下的图片和components下的文件, App.vue初始代码
2. 删除即可, 但是要留下Vue项目入口页面App.vue文件

三、Vue指令

思考

问题1: 以前改变标签内容, 如何做?
- 操作dom
问题2: 用Vue有没有更简单的方式?
- 指令

3.1 Vue基础-插值表达式

目标:在dom标签中, 直接插入vue数据变量

  • 又叫: 声明式渲染/文本插值

  • 语法: {{ 表达式 }}

<template><div><!-- 2. 把值赋予到标签上 --><h1>{{ msg }}</h1><h2>{{ obj.name }}</h2><h3>{{ obj.age > 18 ? '成年' : '未成年' }}</h3></div>
</template>
  • msg和obj是vue数据变量

  • 要在js中data函数里声明

<script>
export default {// 1. 变量在data函数return的对象上data() { // 格式固定,定义vue数据之处return { // key相当于变量名msg: 'Hello Vue',obj: {name: 'Vue',age: 18}}}
}
</script>

小结

什么是插值表达式?
- 双大括号, 可以把vue数据变量直接显示在标签内
Vue中变量声明在哪里?
- data函数返回的对象上, 用key属性声明

思考

演示: 在上个代码基础上, 在devtool工具改变M层的变量, 观察V层(视图的自动同步)
问题: 为什么数据改变页面自动更新了?
- 数据驱动视图

3.2 vue基础-MVVM设计模式

目标:转变思维, 用数据驱动视图改变, 操作dom的事, vue源码内干了

设计模式: 是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结

小结

什么是设计模式?
- 设计模式是对代码分层, 引入一种架构的概念
MVVM是什么?
- MVVM(模型, 视图, 视图模型双向关联的一种设计模式)
MVVM好处?
- 减少DOM操作, 提高开发效率

Vue指令学习目标

以v-开头的标签属性, 叫指令, 给标签添加额外功能
1. v-bind
2. v-on和修饰符
3. v-model和修饰符
4. v-text和v-html
5. v-show和v-if以及v-else
6. v-for

思考

问题: 以前给a标签设置href如何做?
- 获取元素 元素.href = 'xxx'

3.3 Vue指令-v-bind

目标:给标签属性设置Vue变量的值

v-bind语法和简写

  • 语法:v-bind:属性名="vue变量"

  • 简写::属性名="vue变量"

    <!-- vue指令 - v-bind属性动态赋值 -->
    <a v-bind:href="url">点击去百度</a>
    <img :src="imgSrc" alt="百度" />
    
  • 补充:唯独js需要导入图片文件(css/标签里可以直接使用图片地址)

    import imgObj from './assets/customer_04.jpg' // 唯独js需要导入图片文件(css/标签里可以直接使用图片地址)
    

小结

如何给dom标签的属性, 设置Vue数据变量?
- :属性名=“Vue数据变量”

思考

问题: 以前如何给按钮绑定点击事件呢?
- 按钮.addEventListener('click',function(){})

3.4 Vue指令-v-on

目标:给标签绑定事件

语法

  • v-on:事件名=“要执行的少量代码"

  • v-on:事件名=“methods中的函数名"

  • v-on:事件名=“methods中的函数名(实参)"

    <p>你要购买商品的数量: {{count}}</p>
    <button v-on:click="count = count + 1">增加1</button>
    <button v-on:click="addFn">增加1</button>
    <button v-on:click="addCountFn(5)">一次加5件</button>
    

方法在methods选项定义

<script>
export default {// ...其它省略methods: {addFn() { // this代表export default后面的组件对象(下属有data里return出来的属性)this.count++},addCountFn(num) {this.count += num},subFn() {this.count--}}
}
</script>

目标:v-on: 可以简写成@

语法:

  • @事件名=“methods中的函数”

    <button @click="subFn">减少</button>
    

小结

如何给dom标签绑定事件?
- @事件名=“methods里的函数名”
如何给事件传值呢?
- @事件名=“methods里的函数名(实参)”

思考

问题1: js原生如何阻止标签默认行为?
- preventDefault()
问题2: vue事件处理函数如何获取事件对象呢?
- v-on

3.5 Vue指令-v-on事件对象

目标:Vue事件处理函数中, 拿到事件对象

语法

  • 无传参, 通过形参直接接收

  • 传参, 通过$event指代事件对象传给事件处理函数

    <template><div><a @click="skipBaidu" href="http://www.baidu.com">百度</a><hr /><a @click="skipTaobao(10, $event)" href="http://www.taobao.com">淘宝</a></div>
    </template><script>
    export default {methods: {// 1. 事件触发, 无传值, 可以直接获取事件对象skipBaidu(e) {e.preventDefault()},// 2. 事件触发, 传值, 需要手动传入$eventskipTaobao(num, e) {e.preventDefault()}}
    }
    </script>
    

小结

Vue事件处理函数, 如何拿到事件对象?
1. 无传参, 直接在形参接收
2. 有传参, 手动传入$event对象

思考

问题1: e.preventDefault()单词很长不好写吧?
- 是的
问题2: 有没有一种更简单的方式实现呢?
- 有

3.6 Vue指令-v-on修饰符

目标:在事件后面.修饰符名 - 给事件带来更强大的功能

语法

  • @事件名.修饰符="methods里函数"

修饰符列表

  • .stop - 阻止事件冒泡

  • .prevent - 阻止默认行为

  • .once - 程序运行期间, 只触发一次事件处理函数

    <template><div @click="fatherFn"><!-- vue对事件进行了修饰符设置,在事件后面.修饰符名即可使用更多的功能 --><button @click.stop="btn">.stop阻止事件冒泡</button><a href="http://www.baidu.com" @click.prevent="btn">.prevent阻止默认行为</a><button @click.once="btn">.once程序运行期间,只触发一次事件处理函数</button</div>
    </template>
    

小结

Vue有哪些主要修饰符, 都有什么功能?
1. .stop – 阻止事件冒泡
2. .prevent – 阻止默认行为
3. .once – 只执行一次事件处理函数

思考

问题1: 以前我想判断用户是否按下回车怎么做?
- 判断是否是回车键
问题2: 鼠标事件有修饰符, 那按键有修饰符吗?
- 有

3.7 Vue指令-v-on按键修饰符

目标:给键盘事件, 添加修饰符, 增强能力

语法:

  • @keyup.enter - 监测回车按键

  • @keyup.esc - 监测返回按键

    <template><div><input type="text" @keydown.enter="enterFn" /><hr /></div>
    </template>
    

更多修饰符: https://v2.vuejs.org/v2/guide/events.html

小结

按键修饰符如何使用?
- @键盘事件.按键修饰符=“methods里函数名”
有哪些主要按键修饰符?
1. .enter – 只要按下回车才能触发这个键盘事件函数
2. .esc – 只有按下取消键才能触发这个键盘事件函数

3.8 课上练习_翻转世界

需求:点击按钮 - 把文字取反显示 - 再点击取反显示(回来了)

提示: 点击事件里, 把Vue变量值挨个字母取反赋予回来 (提示跟数组有关系)

分析:先静后动

  1. 定义变量 message:‘HELLO, WORLD’

  2. 插值表达式赋予到dom上, 准备按钮和文字

  3. 按钮绑定点击事件和函数

  4. 对message值用split拆分, 返回数组

  5. 数组元素翻转用reverse方法

  6. 再把数组用join拼接成字符串赋予给message

  7. 因为Vue是MVVM设计模式, 数据驱动视图, 所以视图自动改变

    <template><div><!-- 1. 变量准备 - 静态页面铺设 --><h1>{{ msg }}</h1><!-- 2. 绑定点击事件 --><button @click="reverseStr">逆转世界</button></div>
    </template><script>
    export default {data() {return {msg: 'Hello, World!'}},methods: {reverseStr() {// 3. 截取字符串返回数组// const arr = this.msg.split('')// console.log(arr)// 4. 翻转// arr.reverse()// 5. 数组拼接起来// this.msg = arr.join('')this.msg = this.msg.split('').reverse().join('')}}
    }
    </script><style></style>
    

小结

点击翻转字符串你有什么收货?
1. 写需求要先静态标签, 再考虑动态效果, 找好第一步干什么
2. 记住方法的特点 – 可以自己总结字典和口诀
3. Vue是靠数据驱动视图, 只需要关心数据变化即可

思考

问题1: js中获取表单的值, 赋予给变量?
- 是
问题2: js变量改变, 同步显示到表单里?
- 重新赋值
问题3: Vue能否把他们互相关联起来呢?
- 能

3.9 Vue指令-v-model

目标:value属性和Vue数据变量, 双向绑定到一起

语法: v-model="Vue数据变量"

双向数据绑定

  • 变量变化 -> 视图自动同步

  • 视图变化 -> 变量自动同步

例子, 做个注册表单, 了解v-model在各种表单标签如何使用

<template><div><div><!-- - 1. v-model- 双向数据绑定- value属性 - vue变量--><span>用户名:</span><input type="text" v-model="username" /></div><div><span>密码:</span><input type="password" v-model="password" /></div></div>
</template><script>
export default {data() {return {username: '',password: ''}}
}
</script>

小结

v-model用在哪里?
- 暂时只能用在表单标签上
v-model有什么作用?
- 把vue的数据变量和表单的value属性双向绑定在一起

思考

问题: 下拉菜单, 复选框, 单选框如何绑定Vue变量呢?
- 在select, value在option上

例子如下:

<template><div><div><span>来自于</span><!-- 下拉菜单要绑定在select上 --><select v-model="city"><option value="北京市">北京</option><option value="天津市">天津</option><option value="上海市">上海</option></select></div><div><!-- - (重要)- 遇到复选框,v-model的变量值- 非数组 - 关联的是复选框的checked属性- 数组 - 关联的是复选框的value属性--><span>爱好: </span><input type="checkbox" value="抽烟" v-model="hobby" />抽烟<input type="checkbox" value="喝酒" v-model="hobby" />喝酒<input type="checkbox" value="写代码" v-model="hobby" />写代码</div><div><span>性别: </span><input type="radio" value="男" name="sex" v-model="gender" /><input type="radio" value="女" name="sex" v-model="gender" /></div><div><span>自我介绍: </span><textarea v-model="introduction"></textarea></div></div>
</template><script>
export default {data() {return {city: '',hobby: [],gender: '男',introduction: ''}}
}
</script>

小结

下拉菜单v-model写在哪里?
- 在select, value在option上
v-model用在复选框时, 需要注意什么?
- v-model的vue变量是
- 1. 非数组 – 关联的是checked属性
- 2. 数组 – 关联的是value属性
vue变量初始值会不会影响表单的默认状态?
- 会影响, 因为双向数据绑定-互相影响

思考

问题1: 表单同步到变量里的 数 是什么类型的呢?
- 字符串
问题2: 能否让v-model转成数值再赋予给变量呢?
- 能

3.10 Vue指令-v-model修饰符

目标:让v-model拥有更强大的功能

语法: v-model.修饰符="Vue数据变量"

  • .numberparseFloat转成数字类型

  • .trim 去除首尾空白字符

  • .lazychange时触发而非inupt

    <div><input type="number" v-model.number="age" />
    </div>
    <div><input type="text" v-model.trim="motto" />
    </div>
    <div><textarea v-model.lazy="introduction"></textarea>
    </div>
    

小结

v-model有哪些修饰符, 提高我们编程效率?
1. .number – 转成数值类型赋予给Vue数据变量
2. .trim – 去除左右两边空格后把值赋予给Vue数据变量
3. .lazy – 等表单失去焦点, 才把值赋予给Vue数据变量

思考

问题1: JS原生的innerText和innerHTML作用和区别?
- innerText不可解析标签,innerHTML可以
问题2: Vue有没有一种快速设置方式?
- 指令

3.11 Vue指令-v-text和v-html

目标:更新DOM对象的innerText/innerHTML

语法:

  • v-text="Vue数据变量"

  • v-html="Vue数据变量"

注意: 会覆盖插值表达式

<template><div><p v-text="str"></p><p v-html="str"></p></div>
</template>

小结

v-text和v-html有什么作用?
- 都可以设置标签显示的内容
区别是什么?
- v-text把值当成普通字符串显示
- v-html把值当成标签进行解析显示

思考

问题1: JS原生/CSS如何隐藏一个标签?
- display: none
问题2: 如何用一个变量来控制标签显示/隐藏呢?
- Vue变量

3.12 Vue指令-v-show和v-if

目标:控制标签的隐藏或出现

语法:

  • v-show="Vue变量"

  • v-if="Vue变量"

原理

  • v-show 用的display:none隐藏 (频繁切换使用)

  • v-if 直接从DOM树上移除

高级

  • v-else的使用

  • v-else-if的使用

    <template><div><h1 v-show="isOk">v-show的盒子</h1><h1 v-if="isOk">v-if的盒子</h1><div><p v-if="age > 18">我成年了</p><p v-else>还得多吃饭</p></div></div>
    </template>
    

小结

vue如何控制标签显示/隐藏
- v-show或v-if, 给变量赋予true/false, 显示/隐藏
区别是什么?
- v-show是用css方式隐藏标签
- v-if直接从DOM树上移除
- v-if 可以配合v-else或者v-else-if使用

3.13 案例_折叠面板

需求:点击展开或收起时,把内容区域显示或者隐藏

效果演示:

分析:

  1. 准备标签和样式, 下载less模块和less-loader@5.0.0模块

  2. 熟悉下标签结构和样式, 对应页面哪一部分

  3. 按钮绑定点击事件

  4. 声明变量isShow来控制下面标签是否显示/隐藏

  5. 点击时, 改变isShow的值, 来影响页面效果

    <template><div id="app"><h3>案例:折叠面板</h3><div><div class="title"><h4>芙蓉楼送辛渐</h4><!-- 1.绑定点击事件 --><span class="btn" @click="showText"><!-- 4. 根据isShow的值显示不同文字 -->{{ isShow ? '收起' : '展开' }}</span></div><!-- 2. v-show配合变量来控制标签隐藏出现 --><div class="container" v-show="isShow"><p>寒雨连江夜入吴,</p><p>平明送客楚山孤。</p><p>洛阳亲友如相问,</p><p>一片冰心在玉壶。</p></div></div></div>
    </template><script>
    export default {data() {return {isShow: false}},methods: {// 3. 点击时,把值改成falseshowText() {this.isShow = !this.isShow}}
    }
    </script><style lang="less">
    body {background-color: #ccc;#app {width: 400px;margin: 20px auto;background-color: #fff;border: 4px solid blueviolet;border-radius: 1em;box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.5);padding: 1em 2em 2em;h3 {text-align: center;}.title {display: flex;justify-content: space-between;align-items: center;border: 1px solid #ccc;padding: 0 1em;}.title h4 {line-height: 2;margin: 0;}.container {border: 1px solid #ccc;padding: 0 1em;}.btn {/* 鼠标改成手的形状 */cursor: pointer;}}
    }
    </style>
    

小结

折叠面板-案例思路是?
1. 还是先静态标签
2. 显示/隐藏用v-show和vue变量来控制(默认true)
3. 点击切换vue变量来达到目的

思考

问题1: JS原生把一个数组里学生姓名渲染到li上?
- 获取元素列表,for循环
问题2: vue使用2行代码能搞定吗?
- 能

3.14 Vue指令-v-for

目标:列表渲染, 所在标签结构, 按照数据数量, 循环生成

语法:

  • v-for="(值变量, 索引变量) in 目标结构"

  • v-for="值变量 in 目标结构"

目标结构:

  • 可以遍历数组 / 对象 / 数字 / 字符串 (可遍历结构)

注意:

  • v-for的临时变量名不能用到v-for范围外

    <template><div><!-- - 语法1:- v-for="(值变量名, 索引变量名) in 目标结构"- 口诀: 想要谁循环就放到谁身上--><ul><li v-for="(item, index) in arr" :key="index">{{ item }} ---- {{ index }}</li></ul><!-- - 语法2:- v-for="值变量名 in 目标结构"--><ul><li v-for="obj in stuArr" :key="obj.id"><span>{{ obj.name }}</span><span>{{ obj.sex }}</span><span>{{ obj.hobby }}</span></li></ul><!-- - 语法3:- v-for="(value, key) in 对象"--><div><p v-for="(value, key) in tObj" :key="value"><span>{{ value }}</span>==========<span>{{ key }}</span></p></div><!-- - 语法4: (了解)- v-for="变量名 in 固定数字"- 从1开始遍历--><div v-for="n in count" :key="n">{{ n }}</div></div>
    </template>
    

小结

v-for如何循环列表?
1. 谁想循环就把v-for写谁身上
2. v-for=“(值变量, 索引变量) in 目标结构”-一定注意in两
边必须有空格
3. 可以遍历数组 / 对象 / 固定数字
v-for注意事项?
- 值变量和索引变量不能用到v-for范围以外

四、今日总结

1. Vue是什么, 为什么快?

 - 渐进式javacript框架, 一套拥有自己规则的语法- 减少dom操作

2. @vue/cli和脚手架是什么?

- @vue/cli是Vue官方提供的一个全局模块包(得到vue命令), 此包用于创建脚手架项目
- 脚手架是为了保证各施工过程顺利进行而搭设的工作平台

3. Vue基础API(配置项data等)作用?

变量在data函数return的对象上,格式固定,定义vue数据之处

4. MVVM设计模式好处, 双向数据绑定是什么?

- 减少DOM操作, 提高开发效率
- value属性和Vue数据变量, 双向绑定到一起

5. 插值表达式作用?

可以把vue数据变量直接显示在标签内

6. Vue指令和修饰符的作用? 你都学了哪些?

1. v-bind
2. v-on和修饰符
3. v-model和修饰符
4. v-text和v-html
5. v-show和v-if以及v-else
6. v-for

day03 - vue基础相关推荐

  1. (vue基础试炼_05)简单组件之间的传值

    接上一篇:(vue基础试炼_04)使用组件改造TodoListhttps://gblfy.blog.csdn.net/article/details/103844256 文章目录 一.上篇回顾 ① 代 ...

  2. (vue基础试炼_04)使用组件改造TodoList

    接上一篇:(vue基础试炼_03)使用vue.js实现TodoListhttps://gblfy.blog.csdn.net/article/details/103842233 指令 说明 v-bin ...

  3. (vue基础试炼_03)使用vue.js实现TodoList

    接上一篇:(vue基础试炼_02)使用vue.js实现隔2秒显示不同内容https://gblfy.blog.csdn.net/article/details/103841818 指令 作用 v-fo ...

  4. (vue基础试炼_02)使用vue.js实现隔2秒显示不同内容

    接上一篇:(vue基础试炼_01)使用vue.js 快速入门hello worldhttps://gblfy.blog.csdn.net/article/details/103841156 文章目录 ...

  5. (vue基础试炼_01)使用vue.js 快速入门hello world

    文章目录 一.需求案例 二.案例实现 2.1. 原始js写法 2.2. 怎样使用vue.js ? 2.3. 使用vue.js 写法 三.案例vue简述? 四.案例趣味延伸 五.表达值作用及嘱咐语 一. ...

  6. vue基础知识之vue-resource/axios

    Vue基础知识之vue-resource和axios(三) vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必 ...

  7. Vue知识(一)Vue基础语法

    Vue知识 一.邂逅Vue.js 1.认识Vue.js 2.Vue.js安装方式 3.Vue初体验 4.Vue的MVVM框架 二.Vue基础语法 v-if指令 v-show指令 v-else指令 v- ...

  8. Vue基础语法知识(自用,完整版)

    Vue基础语法知识 1.想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象 2.root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法 3.root容器中里的代码被称为 ...

  9. vue基础1--脚手架的使用与vue基础指令

    脚手架的使用与vue基础指令 安装 vue-devtools 安装vscode插件 1. Vue基本概念 1.1 Vue是什么 1.2 Vue学习的方式 2. @vue/cli脚手架 2.1 @vue ...

最新文章

  1. 编写文档_如何通过编写优质文档来使自己的未来快乐
  2. mysql -- 预处理语句
  3. Java实现BASE64编解码
  4. 【独家】去哪儿网PRD兵法秘籍大公开,火爆课程精彩直击!
  5. Python 3 的 int 类型详解(为什么 int 不存在溢出问题?)
  6. C语言文本操作以及C语言小技巧
  7. Python 21 Django 实用小案例1
  8. P4233-射命丸文的笔记【NTT,多项式求逆】
  9. 项目alpha冲刺-总结
  10. Matlab--m代码转C与C++代码)2(详尽示例与描述)
  11. oracle hibernate 自动创建表,自动创建表时,多了一张表hibernate_sequence,为什么?
  12. ffmpeg-20160629-git-bin.7z
  13. Mac OS10.12 编译Android源码8.1
  14. Webshell和一句话木马
  15. psd2html 阿里,psd2html
  16. 浅析微信小程序的底层架构原理
  17. SQL 简介以及MySQL的优点
  18. 本地调试支付回调内网穿透工具
  19. 基于SSM框架的文章管理系统(增加留言回复功能)
  20. AutoJs学习-实现某音点赞自动回复

热门文章

  1. VS+openCV 之操作像素(下)实现简单的图像运算、图像重映射
  2. RTOS设备如何快速实现OTA升级--快速接入OTA平台
  3. 鲲鹏近3个月热门问题和解决方案整理
  4. MTSC 2018第四届中国移动互联网测试开发大会7月13号举办
  5. 湖北交通职业技术学院清考计算机,连专科院校都取消“清考”,近千名专科生只能拿结业证...
  6. 如何在两台远程服务器之间传输文件
  7. 排版标签(Typesetting label)
  8. Lenovo/联想A628T root教程_方法
  9. Windows程序多开一般处理
  10. 京东财报图解:年营收破万亿,员工数超55万人,派发10亿美元股利