Vue框架

一.导读:

1.什么是Vue

Vue.js是一个渐进式JavaScript框架
渐进式:vue从小到控制页面中的一个变量到页面一块内容到整个页面,最终大到整个项目,都可以用vue框架来实现

2.vue可以做哪些事

将数据渲染到指定区域(数据可以是后台获取,也可以由前台自己产生)
可以与页面完成基于数据的交互方式

3.为什么学习Vue

  1.整合了Angular React框架的优点(第一手API文档是中文的)
  2.单页面应用(得益于vue的组件化开发 => 前台代码的复用),减少IO,提高效率
  3.虚拟DOM(提高操作DOM的效应)
  4.数据的双向绑定(如:两个输入框同步数据)

二.如何使用Vue:

 1 <body>
 2     <div id="box1">
 3         <!--{{ }} 会被vue解析为数据的渲染的指定语法-->
 4         {{ }}
 5     </div>
 6     <hr>
 7     <div class="box2">
 8         {{ }}
 9     </div>
10 </body>
11 <script src="js/vue.js"></script>
12 <script>
13     // 如何使用jq框架 <= 拿到jq框架的对象 $ | jQuery
14     // 类比:如何使用vue框架 <= 拿到vue框架的对象 new Vue()
15 
16     // vue对象需要手动创建, 原因:一个vue对象可以只控制页面中的某一部分, 如果一个页面有多个部分都需要被控制,那么就需要创建多个vue对象
17     // vue对象如何与控制的页面进行关联(绑定),采用的是vue对象中的挂载点(挂载点可以唯一标识页面中的某一个区域)
18     new Vue({
19         el: "#box1"
20         // 挂在在id为box1的div上,那么该div下的所有内容都由该vue对象来控制
21     })
22 
23     new Vue({
24         el: '.box2'
25         // 挂在在class为box2的div上,那么该div下的所有内容都由该vue对象来控制(尽量使用id,唯一标识)
26     })
27 </script>

三.挂载点(Vue实例):

 1 <body>
 2     <div id="app">
 3         {{ msg }}
 4     </div>
 5 </body>
 6 <script src="js/vue.js"></script>
 7 <script>
 8     // Vue实例会根据数据产生虚拟DOM,最终替换掉挂载点的真实DOM(不要挂在到body上)
 9     var app = new Vue({
10         el: '#app',
11         data: {
12             msg: "今晚嘿嘿"
13         }
14     });
15 
16     // 如果需要使用vue对象(实例), 那么久可以接受Vue创建的结果, 反之就不需要接收
17     console.log(app);
18     console.log(app.$attrs); // vue实例的变量都是以$开头
19     console.log(app.$el);
20     console.log(app.$data.msg);
21     console.log(app.msg);
22     // app对象 = new Vue()实例 = 标签div #app组件
23 
24 </script>

四.基础指令

1.文本指令

 1 <body>
 2     <div id="app">
 3         <p>{{ info }}</p>
 4         <!-- v-text 为vue的文本指令 ="info" , info为vue实例data中的一个变量 -->
 5         <p v-text="info"></p>
 6         <p v-text="msg"></p>
 7         <p v-html="res"></p>
 8     </div>
 9 </body>
10 <script src="js/vue.js"></script>
11 <script>
12     new Vue({
13         el: "#app",
14         data: {
15             info: "插值表达式",
16             msg: "文本指令",
17             res: "<b>加粗的文本</b>"
18         }
19     })
20 </script>

2.属性指令

 1 <body>
 2     <div id="app">
 3         <!-- v-bind:属性 = "变量" -->
 4         <!-- 如果abc自定义属性被v-bind:指令绑定了,后面的值也会成为vue变量, 如果就想是普通字符串, 再用''包裹 -->
 5         <!-- : 就是 v-bind: 的简写方式 (1.常用 2.一定且只操作属性)-->
 6         <p v-bind:abc="'abc'" v-bind:title="h_info" :def="hehe">abc</p>
 7 
 8         <!--最常用的两个属性 class | style-->
 9 
10         <!--class-->
11         <p :class="a"></p> <!-- 单类名 --> 
12         <p :class="[a, b]"></p> <!-- 多类名 -->
13         <p :class="{c: d}"></p> <!-- 了解: c为类名,是否起作用取决于d值为true|false 开关类名 -->
14         <!--style-->
15         <p :style="s1"></p> <!-- s1为一套样式 --> 
16         <p :style="[s1, s2, {textAlign: ta}]">12345</p><!-- 了解: s1,s2均为一套样式, ta是一个变量,专门赋值给textAlign("text-align") --> 
17 
18     </div>
19 </body>
20 <script src="js/vue.js"></script>
21 <script>
22     new Vue({
23         el: "#app",
24         data: {
25             h_info: "悬浮提示",
26             hehe: "呵呵",
27             a: 'active',
28             b: 'rule',
29             d: false,
30             s1: { // 样式1: 值1, ..., 样式n: 值n
31                 width: '200px',
32                 height: '200px',
33                 background: 'red'
34             },
35             s2: {
36                 borderRadius: '50%'
37             },
38             ta: 'center'
39         }
40     })
41 </script>

3.事件指令

 1 <body>
 2     <div id="app">
 3         <!-- v-on:事件 = "变量 简写 @ -->
 4         <!-- 事件绑定的变量可以在data中赋值,但建议在methods中赋值 -->
 5         <p v-on:click="fn1">11111111111111</p>
 6         <p @click="fn2">22222222222222</p>
 7         <!--vue事件的绑定可以传自定义参数-->
 8         <p @click="fn3(333)">3333333333333333</p>
 9         <!--vue事件的绑定不传自定义参数, 默认将事件对象传过去了-->
10         <p @click="fn4">4444444444444444</p>
11         <!--vue事件的绑定传自定义参数, 还要将事件对象传过去了, 要明确传$event-->
12         <p @click="fn5(555, $event)">5555555555555555</p>
13 
14     </div>
15 </body>
16 <script src="js/vue.js"></script>
17 <script>
18     new Vue({
19         el: "#app",
20         data: {
21             // 事件在data中提供一个函数地址,可以实现事件
22             fn1: function () {
23                 console.log("11111111111111")
24             }
25         },
26         // 事件尽量(要求)都放在vue实例的methods中
27         methods: {
28             fn2: function () {
29                 console.log("22222222222222")
30             },
31             fn3 (arg) {  // ES6语法
32                 console.log(arg)
33             },
34             fn4: function (ev) {
35                 console.log(ev)
36             },
37             fn5: function (arg, ev) {
38                 console.log(arg)
39                 console.log(ev)
40             },
41         }
42     })
43 </script>

4.表单指令

 1 <body>
 2     <div id="app">
 3         <!-- v-model = "变量" 本质操作的就是表单元素的value -->
 4         <!--v-model就是完成数据的双向绑定-->
 5         <form action="">
 6             <input type="text" v-model="info"> <!-- info变量就是代表输入框的value -->
 7             <input type="text" v-model="info">
 8 
 9         </form>
10         <p> {{ info }} </p>
11         <!--v-once只会被赋值一次,就不再改变,并且要结合插值表达式使用-->
12         <p v-once="info">{{ info }}</p>
13     </div>
14 </body>
15 <script src="js/vue.js"></script>
16 <script>
17     new Vue({
18         el: "#app",
19         data: {
20 //            info: "初始value",
21             info: ""
22         },
23     })
24 </script>

猜你喜欢

转载自www.cnblogs.com/xuechengeng/p/10376513.html