zoukankan      html  css  js  c++  java
  • 什么是VUE?

     


     一、什么是VUE?

     1.是一个前端框架,让前端的业务逻辑和赋值分离。关注点就着落在了逻辑代码编写上。

    2.为什么我们要使用vue?

    其实跟jquery差不多,都是简化我们的开发。例如我们可以用vue实现像后端模板渲染的功能,可以更加便捷的绑定dom事件,可以把一些页面的组件打包重复使用。

    3.Vue的MVVM设计模式是什么?导致了和jQuery的那些区别?

    如果你对前端有过了解的话一定知道MVVM和MVC这两种设计模式,而且很有可能对mvp也有一些了解。
    MVC即model,view,control,jQuery就是采用的这种设计模式,熟悉jQuery的同学恐怕早就对$()深通恶绝

     

    MVVM即model,view,viewmodel,它是数据驱动模式,即所有的一切通过操作数据来进行,而尽量避免操作dom树。

    换句话说,我们不关注dom的结构,而是考虑数据该如何储存,用户的操作在view通过viewmodel进行数据处理,分情况是否通过ajax与model层进行交互,再返回到view层,在这个过程中view和viewmodel的数据双向绑定使得我们完全的摆脱了对dom的繁琐操作,而是专心于对用户的操作进行处理,避免了MVC中control层过厚的问题。

    二、语法

    1.使用步骤

    1. 引入vue.js

    2. 定义html的区域,该区域一定需要有id

    3. 书写vue的代码

      • el:表示被vue接管的区域,写法 #id

      • data:表示数据集合,是一个JSON形式的数据

    <!-- 引入vue库 -->
    <script src="js/vuejs-2.5.16.js"></script>
    
    <!-- 定义被Vue接管的区域,必须要定义id属性 -->
    <div id="app">
        <!-- 定义插值表达式,从Vue对象中获取数据 -->
        {{message}}
    </div>
    
    <!-- Vue代码 -->
    <script>
        //view model
        new Vue({
            el:"#app",
            data:{
                message: "Hello Vue!" 
            }
        });
    </script>

    2.语法

    插值表达式

    格式:{{ 表达式 }}

    位置:在html的标签体部分书写

    三、vue 指令基本使用

    1、v-on

    作用:用于绑定事件

     1 <div id="app">
     2     <button v-on:click="fun('这是使用vue绑定的点击事件')">vue的onclick</button><br/>
     3     {{message}}
     4 </div>
     5 <script>
     6     new Vue({
     7         el:"#app",
     8         data:{
     9             message:"hello world"
    10         },
    11         methods:{//所有方法都被定义在该json数据中
    12             fun:function(msg){
    13                 //this:代表该Vue对象, 修改message的值
    14                 this.message = msg;
    15             }
    16         }
    17     });
    18 </script>

    注意:v-on可以简化书写为 @,例如

     1 <div id="app">
     2     <button @click="fun('这是使用vue绑定的点击事件')">vue的onclick</button><br/>
     3     {{message}}
     4 </div>
     5 <script>
     6     new Vue({
     7         el:"#app",
     8         data:{
     9             message:"hello world"
    10         },
    11         methods:{//所有方法都被定义在该json数据中
    12             fun:function(msg){
    13                 //this:代表该Vue对象, 修改message的值
    14                 this.message = msg;
    15             }
    16         }
    17     });
    18 </script>

    事件修饰符:

    作用:阻止事件的默认行为和传播行为

     1 <div id="app">
     2     <!-- .prevent :阻止事件的默认行为  -->
     3     <form  v-on:submit.prevent action="http://www.itcast.cn" >
     4         <input type="submit" value="Go"> 
     5     </form>
     6     <!-- .stop :阻止事件的传播行为 -->
     7     <div v-on:click="fun">
     8         <a v-on:click.stop href="http://www.itcast.cn">itcast</a>
     9     </div>
    10 </div>
    11 12 <script>
    13     new Vue({
    14         el:"#app",
    15         methods:{
    16             fun:function(){
    17                 alert("haha");
    18             }
    19         }
    20     });
    21 </script>

    按键修饰符

    作用:替代一些特定的键值

     1 <div id="app">
     2     <!-- .enter:表示keydown事件中按下的时回车键 触发事件 -->
     3     <input type="text" @keydown.enter="fun"/>
     4 </div>
     5  6 <script>
     7     new Vue({
     8         el:"#app",
     9         methods:{
    10             fun:function(){
    11                 alert("aaa");
    12             }
    13         }
    14     });
    15 </script>

    2、v-text/v-html

    作用:将Vue中的数据显示到标签体中,即修改元素的标签体内容

     1 <div id="app">
     2     <div v-text="message"></div>
     3     <div v-html="message"></div>
     4 </div>
     5 <script>
     6     new Vue({
     7         el:"#app",
     8         data:{
     9             message:"<h1>Hello Vue!</h1>"
    10         }
    11     });
    12 </script>

    3、v-bind

    作用:将Vue中的数据显示到属性的值上,即修改元素的属性

     1 <div id="app">
     2     <font v-bind:color="rs1">hello world</font>
     3     <font :color="rs2">hello itcast</font>              
     4 </div>
     5 <script>
     6     new Vue({
     7         el:"#app",
     8         data:{
     9             rs1:"red",
    10             rs2:"green"
    11         }
    12     });
    13 </script>

    4、v-model

    作用:将Vue中的数据更新到表单项value属性上

     1 <div id="app">
     2     用户名:<input type="text" v-model="user.username"><br/>
     3     密码:<input type="text" v-model="user.password"><br/>
     4     <input type="button" v-on:click="fun" value="按钮">
     5 </div>
     6  7 <script>
     8     new Vue({
     9         el:"#app",
    10         data:{
    11             user:{
    12                 username:"test",
    13                 password:"123"
    14             }
    15         },
    16         methods:{
    17             fun:function(){
    18                 this.user.username="haha";
    19                 this.user.password="1234";
    20             }
    21         }
    22     });
    23 </script>

    5、v-for

    作用:遍历Vue中定义的集合数据

     1 <div id="app">
     2     <ul>
     3         <!-- index表示索引,可以有,可以没有,从0开始,value表示元素 -->
     4         <li v-for="(value,index) in arr">{{value}} and {{index}}</li>
     5     </ul>
     6 </div>
     7 <script>
     8     //view model
     9     new Vue({
    10         el:"#app",
    11         data:{
    12             arr:['a','b','c','d']
    13         }
    14     });
    15 </script>
    16 <div id="app">
    17     <ul>
    18         <li v-for="(value,key) in product">{{key}} and {{value}}</li>
    19     </ul>
    20 </div>
    21 <script>
    22     //view model
    23     new Vue({
    24         el:"#app",
    25         data:{
    26             product:{id:1,name:"手机",price:1000}
    27         }
    28     });
    29 </script>
    30 <div id="app">
    31     <table border="1">
    32         <tr>
    33             <td>序号号</td>
    34             <td>编号</td>
    35             <td>名称</td>
    36             <td>价格</td>
    37         </tr>
    38         <tr v-for="(p,index) in products">
    39             <td>{{index+1}}</td>
    40             <td>{{p.id}}</td>
    41             <td>{{p.name}}</td>
    42             <td>{{p.price}}</td>
    43         </tr>
    44     </table>
    45 </div>
    46 <script>
    47     new Vue({
    48         el: "#app",
    49         data: {
    50             products: [{
    51                 id: 'itcast001',
    52                 name: "电视机",
    53                 price: 1000
    54             }, {
    55                 id: "itcast002",
    56                 name: "洗衣机",
    57                 price: 2000
    58             }]
    59         }
    60     });
    61 </script>
    62             
    63 3.2.6、v-show/v-if
    64 作用:控制元素的显示和隐藏
    65 
    66 <div id="app">
    67     <!-- flag 为true渲染,flag为false时,v-if不渲染,v-show将元素的display属性修改为none -->
    68     <span v-if="flag">hello itcast</span>           
    69     <span v-show="flag">hello ithemai</span>
    70     <button @click="fun">切换</button>
    71 </div>
    72 73 <script>
    74     new Vue({
    75         el:"#app",
    76         data:{
    77             flag:true 
    78         },
    79         methods:{
    80             fun:function(){
    81                 this.flag=!this.flag;
    82             }
    83         }
    84     });
    85 </script>

    四、Vue生命周期

     1 <!DOCTYPE html>
     2 <html>
     3 
     4     <head>
     5         <meta charset="utf-8" />
     6         <title>vuejs生命周期</title>
     7         <script src="js/vuejs-2.5.16.js"></script>
     8     </head>
     9 
    10     <body>
    11         <div id="app">
    12             {{message}}
    13         </div>
    14     </body>
    15     <script>
    16         var vm = new Vue({
    17             el: "#app",
    18             data: {
    19                 message: 'hello world'
    20             },
    21             beforeCreate: function() {
    22                 console.log(this);
    23                 showData('创建vue实例前', this);
    24             },
    25             created: function() {
    26                 showData('创建vue实例后', this);
    27             },
    28             beforeMount: function() {
    29                 showData('挂载到dom前', this);
    30             },
    31             mounted: function() {
    32                 showData('挂载到dom后', this);
    33             },
    34             beforeUpdate: function() {
    35                 showData('数据变化更新前', this);
    36             },
    37             updated: function() {
    38                 showData('数据变化更新后', this);
    39             },
    40             beforeDestroy: function() {
    41                 vm.test = "3333";
    42                 showData('vue实例销毁前', this);
    43             },
    44             destroyed: function() {
    45                 showData('vue实例销毁后', this);
    46             }
    47         });
    48 
    49         function realDom() {
    50             console.log('真实dom结构:' + document.getElementById('app').innerHTML);
    51         }
    52 
    53         function showData(process, obj) {
    54             console.log(process);
    55             console.log('data 数据:' + obj.message)
    56             console.log('挂载的对象:')
    57             console.log(obj.$el)
    58             realDom();
    59             console.log('------------------')
    60             console.log('------------------')
    61         }
    62         //vm.message = "good...";
    63         vm.$destroy(); 
    64     </script>
    65 
    66 </html>

    五 、axios

    GET请求:

    //参数直接拼接到url后面
    axios.get("/user/findById.do?id=1").then(function(response){
        //请求成功后的回调函数
        //response.data :controller方法响应的json数据
    });
    ​
    //参数是独立的 {params:{}} 是固定的写法
    axios.get("/user/findById.do", {params:{id: 1}}).then(function(response){
        //请求成功后的回调函数
        //response.data :controller方法响应的json数据
    });

    POST请求:

    1 //{id:1, username: "张三"} :代表参数
    2 axios.post("/user/findById.do", {id:1, username: "张三"}).then(function(response){
    3     //请求成功后的回调函数
    4     //response.data :controller方法响应的json数据
    5 });
  • 相关阅读:
    C++ 练习02 魔术师发牌问题
    C++ 入门2 类型转换
    C++ 入门1 C++简介
    一个简单计算器的实现
    C++练习01 打印杨辉三角
    数据结构01数据结构基础01
    Lesson_7 作业_1 Driver 和 Car
    Caterl Java寒假基础练习题(一) 循环相加
    Lesson_9 上课笔记 多态
    Lesson_10 作业计算工资
  • 原文地址:https://www.cnblogs.com/aaaazzzz/p/12793072.html
Copyright © 2011-2022 走看看