vue初级使用

vue初级使用,第1张

概述一、Vue是什么?   Vue(读音 /vju?/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架。采用自底向上增量开发的设计。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。     Vue渐进式的理解:http://www.bslxx.com/a/vue/2017/1205/1490.html     Vue只关注视图层。   Vue通过

一、Vue是什么?

  Vue(读音 /vju?/,类似于 vIEw)是一个构建数据驱动的 web 界面的渐进式框架。采用自底向上增量开发的设计。Vue.Js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

 

  Vue渐进式的理解:http://www.bslxx.com/a/vue/2017/1205/1490.HTML

 

  Vue只关注视图层。

  Vue通过新的属性(自定义)和{{表达式}}扩展了 HTML。

  Vue的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

  Vue学习起来非常简单。

  官网:https://cn.vuejs.org/

 

二、Vue特性

l  轻量

  Vue.Js库的体积非常小的,并且不依赖其他基础库。

l  数据绑定

  对于一些富交互、状态机类似的前端UI界面,数据绑定非常简单、方便。

l  指令

  内置指令统一为(v-*),也可以自定义指令,通过对应表达值的变化就可以修改对应的DOM。

l  插件化

  Vue.Js核心不包含Router、AJAX、表单验证等功能,但是可以非常方便地根据需要加载对应插件。

l  组件化

  组件可以扩展 HTML 元素,封装可重用的代码。允许我们使用小型、自包含和通常可复用的组件构建大型应用

l  兼容性

  Vue 不支持 ie8 及以下版本,因为 Vue 使用了 ie8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。

 

三、Vued的使用:

       它有两个版本:开发版本和生产版本(由于代码太多,具体的vue.Js文件需要到vue官网复制)。

 

<!-- 引入vue开发版文件 -->

 <script type="text/JavaScript" src="Js/vue/vue.Js"></script>

 

四、Vue实例讲解

  1、vue实例挂在(el)的标签

  每个Vue实例通过el配置挂载的标签,该标签可以通过ID或者是class挂载。  实例上的属性和方法只能够在当前实例挂载的标签中使用

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <h3> {{messge}}</h3>            姓名:{{user.name}};年龄:{{user.age}};性别:{{user.sex}}        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    messge:"变形金刚",user:{                        name:"张三",age:18,sex:""                    }                }            });            // 通过Vue实例可以直接修改data对象中的数据            app.messge="修改后的变形金刚";            app.user.name="王小二";        </script>    </body></HTML>

 

  2、Vue中的数据(data)

  1 、Vue实例的数据保存在配置属性data中,data自身也是一个对象.

  2、通过Vue实例直接访问和修改data对象中的数据,及时同步的页面上

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <h3> {{messge}}</h3>        </div>        <div class="cla">            <h3> {{messge}}</h3>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    messge:"变形金刚"                }            });                        var ha= new Vue({                el:".cla",data:{                    messge:"搬砖的程序员"                }            });        </script>    </body></HTML>

 

  3、Vue中的方法(methods)

  1、Vue实例的方法保存在配置属性methods中,methods自身也是一个对象. 该对象中值都是方法体

  2、方法都是被Vue对象调用,所以方法中的this代表Vue对象

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <h3> {{messge}}</h3>            {{haa()}}        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",explain:"过来啊!"                    }                },methods:{                    //方法写法一:                    haa:function(){                        return this.user.name+this.user.explain+"我请你吃糖果";                    },//方法写法二:                    yaa(){                        //跳出一个d窗                        alert(this.messge+"是钢铁直男");                    }                }            });            app.yaa();        </script>    </body></HTML>

 

  4、vue数据双向绑定

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <!--监听input中值的改变同步到data中的message上:                v-model:数据的绑定;                将app对象中的message值绑定到input中,同时输入input值后,也作用于app的message值。            -->            <h3> {{messge}}</h3>            <input type="text" v-model="messge" />        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",}            });                    </script>    </body></HTML>

 

五、Vue架构的认识:

  Vue是一款开源的JavaScript MV*(MVVM、MVC)框架。

  Vue引入了MVVM (Model-VIEw-viewmodel)模式,他不同于MVC架构.

 

  MVC模式:

  Model: 数据模型,一些JavaScript 对象,比如 {name : "小小强",age : 16};

  VIEw:   视图,网页中的内容,一般由HTML模板生成。

  Controller : 控制器(路由),视图和模型之间的胶水。

 

  MV VM模式:

  Model:它是与应用程序的业务逻辑相关的数据的封装载体,它是业务领域的对象,Model并不关心会被如何显示或 *** 作,所以模型也不会包含任何界面显示相关的逻辑。在web页面中,大部分Model都是来自AJAX的服务端返回数据或者是全局的配置对象。


       VIEw:它专注于界面的显示和渲染,在Vue中则是包含一堆声明式Directive和Component的视图模板。

 

  viewmodel:它是VIEw和Model的粘合体,负责VIEw和Model的交互和协作,它负责给VIEw提供显示的数据,以及提供了VIEw中Command事件 *** 作Model的途径;在vue中“Vue对象实例”充当了这个viewmodel的角色;

 

  VIEw不能直接与Model交互,而是通过Vue实例这个viewmodel来实现与Model的交互。对于界面表单的交互,通过v-model指令来实现VIEw和viewmodel的同步。对于VIEw而言,viewmodel中的DOM Listeners工具会帮助我们监听页面上DOM元素的变化,一旦发生变化,Model中的数据也会发生改变;

  对于Model而言,当我们添加或修改Model中的数据时,viewmodel中的Data Bindings工具会帮助我们更改VIEw中的DOM元素。从而实现VIEw和Model的分离,达到对前端逻辑MVVM的分层架构。

 

六、VueJs表达式

  语法:

  VueJs表达式写在双大括号内:{{ Expression }}。

  VueJs表达式把数据绑定到 HTML。

  VueJs将在表达式书写的位置"输出"数据。

  VueJs表达式 很像 JavaScript 表达式:它们可以包含文字、运算符和变量。

  实例 {{ 5 + 5 }} 或 {{ firstname + " " + lastname }}

  案例:

  1、简单表达式

  在{{ }}中可以进行简单的运算

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>                <div ID="app">             <!--简单表达式  -->        <h1>{{5+5}}</h1>        <!-- +:运算,字符串连接 -->        <h1>{{5+"v5"}}</h1>        <h1>{{5+"5"}}</h1>        <!-- -:减法 -->        <h1>{{"5"-"5"}}</h1>        <h1>{{5*5}}</h1>        <!-- *:乘 法 -->        <h1>{{"5"*"5"}}</h1>        <!-- / 除法-->        <h1>{{5/5}}</h1>        <h1>{{5/5}}</h1>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app"            });                    </script>    </body></HTML>

 

  2、三目表达式

  在{{}}中的表达式可以使用三元运算符,但是不能够使用其他语句

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <!--三目运算  -->            {{ show?"真":"假"}}        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    show:true,}            });                    </script>    </body></HTML>

 

  3、字符串表达式

  1、直接使用字符串字面值作为字符串对象
     2、使用data中的字符串对象

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            {{"这是字面值"}}<br/>            {{"这是字面值".length}}<br/>            {{message.length}}<br/>            <!--从字符串索引1开始获取,到索引5之前结束-->            {{message.substring(1,5)}}<br/>            <!--从字符串索引2开始获取,到索引6之前结束;toupperCase():将小写变为大写-->            {{message.substring(2,6).toupperCase()}}<br/>            <!--substr(index,length):从index开始截取,截取length个字符串 -->            {{message.substr (1,3)}}<br/>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    message:"我在data里面"                }            });        </script>    </body></HTML>

 

  4、对象表达式

         在表达式中可以使用data中定义的对象的各种用法.像使用Js对象中的方法和属性一样

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            {{messge}}<br/>            {{JsON.stringify(messge)}}<br/>            {{messge.toString()}}<br/>            {{messge.name}}<br/>            {{messge.age}}<br/>            {{messge.getAge()}}<br/>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var user ={                name:"张三",age:19,getAge:function(){                    return this.age;                },toString:function(){                    return "姓名:"+this.name+",年龄:"+this.age;                }            }            var app=new Vue({                el:"#app",data:{                    messge:user                }            });                    </script>    </body></HTML>

 

  5、数组表达式

  在表达式中可以使用JavaScript数组中的任何语法来 *** 作数组.

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            {{hobbys}}<br/>            {{hobbys[0]}}<br/>            {{hobbys.length}}<br/>            {{hobbys.toString()}}<br/>            <!--用“-----”将每个元素分隔开显示-->            {{hobbys.join("------")}}<br/>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                     hobbys:["打游戏","踢足球",看电视,"游泳"]                }            });        </script>    </body></HTML>

 

七、Vue指令

  1、什么是指令

     指令是一个带有v-前缀的特殊标签属性,指令属性的值预期是单个JavaScript表达式.

  2、常见的指令

  v-text=“表达式”  设置标签中的文本
  v-HTML=“表达式”  设置标签中的HTML
  v-if=“表达式”    判断条件   
  v-for=“表达式”   循环
  v-model=“表达式” 数据双向绑定
  v-on=“表达式”    注册事件

  3、指令的作用

  1、作用:  当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

  2、一个标签元素上可以出现多个指令属性

  3、指令只能够出现在Vue对象所挂载的标签范围内的标签中

  4、v-text指令

  注意事项:
    1、如果值是HTML的值,也不会作为普通的文本使用.
       2、标签中的属性值必须是data中的一个属性.

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <span v-text="message"></span><br/>            <span v-text="user.username"></span><br/>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    message: "<h1>这是一个Span!</h1>",user: {                        username: "李李"                    },}            });        </script>    </body></HTML>

 

  5、v-HTML指令

      注意事项:      1、{{表达式}} 可以插入的标签的内容中     2、v-text和v-HTML更改标签中的所有内容
<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <!--将message的值解析为HTML来执行-->            <div v-HTML="message"></div>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    message: "<h1>这是一个HTML!</h1>",}            });        </script>    </body></HTML>

 

  6、v-for指令

       数组:

       1、v-for="元素 in 数组"(v-for="ele in arr")

        2、v-for="(元素,索引) in 数组"(v-for="(ele,index) in arr")

    对象:

       1、v-for="值in 对象"(v-for="value in obj")

        2、v-for="(值,键) in 对象"(v-for="(value,key) in obj")

        3、v-for=(值,键,索引) in 对象(v-for=(value,key,index) in obj)

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">             <h1>循环数组</h1>            <ul>                <li v-for="hobby in hobbys">{{hobby}}</li>            </ul>             <h1>遍历对象</h1>            <ul>                <li v-for="value in student">{{value}}</li>            </ul>                    <h1>带索引循环数组</h1>            <ul>                <li v-for="(hobby,index) in hobbys">{{index}}--{{hobby}}</li>            </ul>            <h1>带键遍历对象</h1>            <ul>                <li v-for="(value,index) in student">{{index+1}}---{{key}}--{{value}}</li>            </ul>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    hobbys : ["爬山","游泳","打豆豆","睡觉"],student : {                        name: "小毛",age: 2,sex: "",},num : 10,str : "itsource",}            });                    </script>    </body></HTML>

 

  7、v-bind指令

       1、v-bind:属性名="表达式"(v-bind:src=”路径”简写:src=”路径”)

  2、v-bind=”对象”

       注意:
        将一个对象 键 和 值 作为标签的属性的名字和值时,在v-bind后不需要指定属性的名字

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <!--            v-bind指令            作用:将HTML的属性和Vue实例data值绑定到一起            语法1:            v-bind:属性名="表达式"            语法2:            :属性名="表达式"                        语法3:            v-bind="对象"        -->        <div ID="app">            <iframe v-bind:src="src"></iframe><br />            <iframe :src="src"></iframe><br />            <!--<iframe src="http://www.baIDu.com" ></iframe>-->            <!--<iframe v-bind="attr"></iframe>-->            <iframe :src="attr.src" :class="attr.class"></iframe><br />        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    src:"http://www.baIDu.com",attr:{                        src:"http://www.baIDu.com",class:"myiframe"                    }                }            });                    </script>    </body></HTML>

 

  8、v-model指令

       1、v-model只作用于以下表单:
        input、  select、 textarea

  注意:在input标签中,当v-model和value属性都存在的时候,在前台页面上展示的是v-model的值,但value的值却没有改变,提交表单时提交的还是value值。

复选框v-mode表达式的值为一个数组。

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <input v-model="message" value="这是value值" /><br />            爱好:            <input type="checkBox" v-model="hobby" value="1"/><input type="checkBox" v-model="hobby" value="2"/><input type="checkBox" v-model="hobby" value="3"/>rap            性别            <input type="radio" v-model="sex" value="1"/>man            <input type="radio" v-model="sex" value="2"/>woman        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    message:"dbl",hobby:[1,2],sex:2                }            });        </script>    </body></HTML>

 

  9、v-show指令

  <标签名 v-show="真假表达式"></标签名>

  如果v-show="真",标签中添加display:none样式

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <!--                v-show:                语法:                v-show="真假表达式"                如果表达式为假,相当于是在这个标签上添加CSS样式:display:none(相当于隐藏了)            -->            <p v-show="isShow">我是07</p>        </div>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    isShow:true                }        });        </script>    </body></HTML>

 

  10、v-if指令

        <标签名 v-if="表达式"></标签名>
  <标签名 v-else-if="表达式"></标签名>
  <标签名 v-else-if="表达式"></标签名>
  <标签名 v-else></标签名>

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <p v-if="money<10">中午不吃饭</p>            <p v-else-if="money>=10&&money<20">吃牛肉面</p>            <p v-else>吃拉面</p>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    money:15                }            });                    </script>    </body></HTML>

 

八、事件

  v-on:事件名称="表达式或者vue函数的调用"(例如:v-on:click="方法名()")

  简写:@事件名称

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="UTF-8">        <Title></Title>    </head>    <body>        <div ID="app">            <button @click="clickMe(1)">点我试试</button>            <button @click="clickMe(2)">点我试试</button>        </div>        <!--开发版本(项目上线之后要替换成生产版本);生产版本:vue.min.Js-->        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script type="text/JavaScript">            var app=new Vue({                el:"#app",data:{                    money:15                },methods:{                    clickMe(num){                        alert(num)                    }                }            });        </script>    </body></HTML>

 

九、综合练习

<!DOCTYPE HTML><HTML>    <head>        <Meta charset="utf-8" />        <Title>vue综合练习</Title>        <style type="text/CSS">            td{                align-content: center;            }        </style>    </head>    <body>        <div ID="app">            <h3>购物车</h3>            <h4 v-if="products.length==0">空空如也</h4>            <div v-else>                <table border="1" cellspacing="0" align="center">                    <tr>                        <th>编号</th>                        <th>商品名称</th>                        <th>商品价格</th>                        <th>商品数量</th>                        <th> *** 作</th>                    </tr>                    <tr v-for="(product,index) in products">                        <td>{{index+1}}</td>                        <td>{{product.name}}</td>                        <td>{{product.price}}</td>                        <td><button @click="reduce(index)">-</button>{{product.num}}<button @click="add(index)">+</button></td>                        <td><button @click="del(index)">删除</button></td>                    </tr                    <tr>                        <td colspan="5">总价:{{total}}</td>                    </tr>                </table>            </div>        </div>        <script type="text/JavaScript" src="Js/vue.Js" ></script>        <script>            var app = new Vue({                el: "#app",data: {                    products:[                        {ID:1,name:"西瓜",price:20.00,num:4},{ID:2,name:"牛奶",price:30.00,num:2},{ID:3,name:"榴莲",price:80.00,num:1}                    ],total:0                },methods:{                    //新版本写法:del(){}                    //删除商品                    del:function(index){                        this.count();                        this.products.splice(index,1);                    },//商品数量增加                    add:function(index){                        this.count();                        this.products[index].num++;                    },//商品数量减少                    reduce:function(index){                        this.count();                        //购物车中一种商品的数量至少为1个                        if(this.products[index].num>1) {                            this.products[index].num--;                        }                    },//计算商品总价格                    count:function(){                        this.total=0;                        for(var i in this.products){                            this.total+=this.products[i].price*this.products[i].num;                        }                    }                },//最后运行                mounted(){                    this.count();                }            });        </script>    </body></HTML>
总结

以上是内存溢出为你收集整理的vue初级使用全部内容,希望文章能够帮你解决vue初级使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1057569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存