飞道的博客

Vue基本指令

317人阅读  评论(0)

一、什么是Vue

1、前端技术的发展(html、CSS、JavaScript)

​ (1)jQuery:是对JavaScript进行了封装,使得操作DOM、事件处理、动画处理、ajax交互变得非常简洁、方便。是JavaScript的库。

​ (2)Vue:通过虚拟的DOM来减少对真实DOM的操作,通过尽可能少的、简单的API实现数据的绑定。支持单向和双向的数据绑定

​ (3)Vue的基本概念:

        ​ a、是一个渐进式框架:可以实现自底向上的逐层开发。

        ​ b、可以用Vue开发全新的项目,也可以在现有的项目中引入Vue

2、MVVM架构:

​ (1)MVC架构:模型 — 视图 — 控制器

        ​ M:Model(模型),对数据进行操作

        ​ V:View(视图),用来展示数据

        ​ C:Controller(控制器),处理用户的请求

​ (2)MVVM架构:

        ​ M:Model(模型)

        ​ V:View(视图)

        ​ VM:ViewModel(视图模型) —- 实现数据的双向绑定

数据的双向绑定:Vue的特征之一,当视图发生改变时,模型能立即感知到;当模型中的数据发生改变时,视图也能立即反应出来。

二、Vue开发的方式

1、基本方式:在页面中引入vue.js文件。(vscode)

2、组件方式:利用Vue-cli(Vue脚手架)开发。(vscode、WebStorm、Vue Gui)

3、创建Vue实例:new Vue({})

​ (1)el:表示与vue实例绑定的唯一的根标签。是通过标签的id或class属性进行绑定

​ (2)data:初始化vue实例的属性的值。在底层会自动生成属性的setter和getter方法

​ 可以是用 vue对象名.$data.属性名 的方式来获取值

​ (3)methods:用来定义方法。这些方法vue的实例可以直接访问


  
  1. <body>
  2. <div id="root">
  3. <p>{{ msg }} </p>
  4. <button @click="changeMsg">请单击 </button>
  5. </div>
  6. <script>
  7. const vm = new Vue({
  8. el: '#root',
  9. data:{
  10. msg: '蜗牛学院'
  11. },
  12. methods:{
  13. changeMsg( ){
  14. this. msg = '马伟超' //this代表的是Vue实例 --- vm
  15. }
  16. }
  17. })
  18. console. log(vm. $data. msg);
  19. </script>
  20. </body>

三、Vue的基本指令(重点)

1、插值表达式:{ { 变量名 }}。将Vue实例的对应的属性值在页面中显示出来

2、内置指令:vue的内置指令都是以 v- 开头的 特殊属性,通过这些指令来操作属性的值

​ (1)v-show:可以根据表达式的值的真假,来决定是否显示数据


  
  1. <body>
  2. <div id="app">
  3. <p v-show="flag">蜗牛学院 </p>
  4. <p v-show="temp">大雁塔 </p>
  5. <!-- <button @click="show">变换</button> -->
  6. </div>
  7. <script>
  8. const vm = new Vue({
  9. el: '#app',
  10. data: {
  11. flag: false,
  12. temp: true
  13. }
  14. // methods:{
  15. // show(){
  16. // this.flag = !this.flag
  17. // this.temp = !this.temp
  18. // }
  19. // }
  20. })
  21. window. setInterval( function ( ) {
  22. vm. flag = !vm. flag
  23. vm. temp = !vm. temp
  24. }, 1000)
  25. </script>
  26. </body>

 ​ (2)v-html:插入标签


  
  1. <body>
  2. <div id="app">
  3. <form action="">
  4. <label for="">
  5. <input type="checkbox" name="" id="">苹果
  6. </label>
  7. <label for="">
  8. <input type="checkbox" name="" id="">香蕉
  9. </label>
  10. <label for="">
  11. <input type="checkbox" name="" id="">橘子
  12. </label>
  13. <label for="">
  14. <input type="checkbox" name="" id="" @click="show">其他
  15. </label>
  16. <br> <br>
  17. <div v-html="htmlStr" v-show="flag"> </div>
  18. </form>
  19. </div>
  20. <script>
  21. const vm = new Vue({
  22. el: '#app',
  23. data:{
  24. htmlStr: '<textarea></textarea>',
  25. flag: false
  26. },
  27. methods:{
  28. show( ){
  29. this. flag = ! this. flag
  30. }
  31. }
  32. })
  33. </script>
  34. </body>

 ​ (3)v-text:在元素中插入值。作用和插值表达式 { { }}相同


  
  1. <body>
  2. <div id="app">
  3. <p v-text="test"> </p>
  4. </div>
  5. <script>
  6. const vm = new Vue({
  7. el: '#app',
  8. data:{
  9. test: '蜗牛学院'
  10. }
  11. })
  12. </script>
  13. </body>

 ​ (4)v-if、v-else、v-else-if:类似于if-else 的功能


  
  1. <body>
  2. <div id="app">
  3. <div v-if="role==1">
  4. <h2>超级管理员 </h2>
  5. </div>
  6. <div v-else-if="role==2">
  7. <h2>管理员 </h2>
  8. </div>
  9. <div v-else>
  10. <h2>过客 </h2>
  11. </div>
  12. </div>
  13. <script>
  14. const vm = new Vue({
  15. el: '#app',
  16. data:{
  17. role: 5
  18. }
  19. })
  20. </script>
  21. </body>

强调:v-show和v-if的区别

A、实现方式:v-if底层采用appendChild方式实现,v-show是通过样式属性display来控制元素的显示和隐藏

B、加载性能:v-if的加载速度更快,v-show的加载速度慢

C、切换的开销:v-if开销大,v-show的开销小

v-if是条件渲染。将模型中的数据在视图中显示出来的过程称为渲染

​ (5)v-for:循环指令,用于遍历数组、集合、对象的属性


  
  1. <body>
  2. <div id="app">
  3. <ul>
  4. <li v-for="item in arr">
  5. {{ item }}
  6. </li>
  7. </ul>
  8. <ul>
  9. <li v-for="(item,index) in arr">
  10. {{ item }} === {{ index }}
  11. </li>
  12. </ul>
  13. <ul>
  14. <li v-for="(item,key,index) in obj">
  15. {{ item }} === {{ key }} === {{ index }}
  16. </li>
  17. </ul>
  18. <ul>
  19. <li v-for="item in objArr">
  20. {{ item.id }}
  21. {{ item.name }}
  22. {{ item.address }}
  23. {{ item }}
  24. </li>
  25. </ul>
  26. <table border="1">
  27. <thead>
  28. <tr>
  29. <th>编号 </th>
  30. <th>姓名 </th>
  31. <th>地址 </th>
  32. </tr>
  33. </thead>
  34. <tbody>
  35. <tr v-for="item in objArr">
  36. <td>{{ item.id }} </td>
  37. <td>{{ item.name }} </td>
  38. <td>{{ item.address }} </td>
  39. </tr>
  40. </tbody>
  41. </table>
  42. </div>
  43. <script>
  44. const vm = new Vue({
  45. el: '#app',
  46. data: {
  47. arr: [ 11, 22, 33, 44, 55],
  48. obj: { id: 1001, name: 'A1', address: '西安' },
  49. objArr: [
  50. { id: 1001, name: 'A1', address: '西安' },
  51. { id: 1002, name: 'A2', address: '西安' },
  52. { id: 1003, name: 'A3', address: '西安' },
  53. { id: 1004, name: 'A4', address: '西安' },
  54. { id: 1005, name: 'A5', address: '西安' }
  55. ]
  56. }
  57. })
  58. </script>
  59. </body>

 ​ (6)v-bind:绑定元素的属性,并执行相关操作。简写方式为( :属性名 )


  
  1. <style>
  2. .ok{
  3. font-size: 25px;
  4. color: red;
  5. }
  6. </style>
  7. <body>
  8. <div id="app">
  9. <a v-bind:href="link">超链接 </a>
  10. <!-- 简写 -->
  11. <!-- <a :href="link">超链接</a> -->
  12. <br> <br>
  13. <button @click="change">改变超链接 </button>
  14. <p :class="{ok:isok}">大唐芙蓉园 </p>
  15. </div>
  16. <script>
  17. const vm = new Vue({
  18. el: '#app',
  19. data:{
  20. link: 'http://www.baidu.com',
  21. isok: true
  22. },
  23. methods:{
  24. change( ){
  25. this. link = 'http://www.woniuxy.com',
  26. this. isok = ! this. isok
  27. }
  28. }
  29. })
  30. </script>
  31. </body>

 ​ (7)v-on:监听事件,并执行相应的操作。v-on的简写方式(@事件名)


  
  1. <body>
  2. <div id="app">
  3. <p>{{ msg }} </p>
  4. <button v-on:click="change">修改 </button>
  5. </div>
  6. <script>
  7. const vm = new Vue({
  8. el: '#app',
  9. data:{
  10. msg: '钟楼'
  11. },
  12. methods:{
  13. change( ){
  14. this. msg = '鼓楼'
  15. }
  16. }
  17. })
  18. </script>
  19. </body>

 ​ (8)v-model:将input标签的值和变量进行绑定,实现数据和视图的双向绑定


  
  1. <body>
  2. <div id="app">
  3. <input type="radio" name="sex" value="男" v-model="gender">
  4. <input type="radio" name="sex" value="女" v-model="gender">
  5. <p>你选择的性别是:{{ gender }} </p>
  6. <hr>
  7. <select name="" id="" v-model="book">
  8. <optgroup label="西北地区">
  9. <option value="陕西">陕西 </option>
  10. <option value="宁夏">宁夏 </option>
  11. <option value="甘肃">甘肃 </option>
  12. </optgroup>
  13. </select>
  14. <p>你选择的地区是:{{ book }} </p>
  15. <hr>
  16. <input type="checkbox" value="游戏" v-model="hobby">游戏
  17. <input type="checkbox" value="篮球" v-model="hobby">篮球
  18. <input type="checkbox" value="足球" v-model="hobby">足球
  19. <input type="checkbox" value="游泳" v-model="hobby">游泳
  20. <p>你的爱好是:{{ hobby }} </p>
  21. </div>
  22. <script>
  23. const vm = new Vue({
  24. el: '#app',
  25. data:{
  26. gender: '',
  27. book: '',
  28. hobby:[]
  29. }
  30. })
  31. </script>
  32. </body>

 ​ (9)v-once:可以让元素或组件只渲染一次,一旦绑定,数据就不会改变。


  
  1. <body>
  2. <div id="app">
  3. <input type="text" v-model="onceValue">
  4. <p>{{onceValue}} </p>
  5. <p v-once>{{onceValue}} </p>
  6. </div>
  7. <script>
  8. const vm = new Vue({
  9. el: '#app',
  10. data:{
  11. onceValue: 'onceValue'
  12. }
  13. })
  14. </script>
  15. </body>

转载:https://blog.csdn.net/m0_74331160/article/details/128456475
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场