• Vue


    目录

    1.使用Vue

    2.Vue基本语法

    3.逐个突破

     1.data的应用

     2.methods的应用

     3.vue组件

     4.mounted()的使用


    1.使用Vue

    下载Vue.js插件

    引入CDN

    <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>

    2.Vue基本语法

    Vue的用法是创建一个Vue对象,将该对象与前端某个元素绑定,通过操作这个Vue对象,让该元素实现动态效果。

    vue对象的结构

    1. Vue.component("",{}); //创建组件
    2. var v = new Vue({
    3. el: '', //vue对象绑定的元素id
    4. data: {}, //vue对象具备的属性
    5. methods: {}, //vue对象的方法,不利用缓存
    6. computed: {}, //计算属性,利用缓存
    7. watch: {}, //侦听器
    8. data(){},
    9. mounted(){}
    10. })

    vue中的指令

    逻辑判断

    v-if

    v-else-if
    v-else

    v-for
    方法相关
    v-on

    属性相关

    v-bind
    v-model

    3.逐个突破

     data的应用

    1.el+data

    1. <body>
    2. <div id="box">
    3. {{message}}
    4. {{items[0].message}}
    5. </div>
    6. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    7. <script>
    8. var v = new Vue({
    9. el: '#box',
    10. data: {
    11. message: "I am a box",
    12. items: [{message: 1},{message: 2},{message: 3}]
    13. }
    14. })
    15. </script>
    16. </body>

    el将该vue对象与div绑定,定义了data中的一个message属性,在视图中通过{{}}来调用。

    【】表示数组,{}表示对象。

    2.v-bind+data

    1. <body>
    2. <div id="box">
    3. <span v-bind:title="message">Hi</span>
    4. </div>
    5. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    6. <script>
    7. var v = new Vue({
    8. el: '#box',
    9. data: {
    10. message: "I am a box",
    11. }
    12. })
    13. </script>
    14. </body>

    效果:鼠标指向Hi时,出现I am a box。

    v-bind为HTML元素绑定属性,被v-bind绑定后不再将message认为是字符串,而认为是变量,取值为"I am a box"

    3.v-if,v-else-if,v-else和data

    1. <body>
    2. <div id="box">
    3. <h1 v-if="judge1">judge1值为true</h1>
    4. <h1 v-else-if="judge2">judge2值为true</h1>
    5. <h1 v-else>我是v-else</h1>
    6. </div>
    7. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    8. <script>
    9. var v = new Vue({
    10. el: '#box',
    11. data: {
    12. judge1: false,
    13. judge2: true
    14. }
    15. })
    16. </script>
    17. </body>

    judge1值为false,judge2的值为true,所以页面显示judge2值为true这段文字。

    4.v-for和data

    1. <body>
    2. <div id="box">
    3. <h1 v-for="(item,index) in items">
    4. {{index}}:{{item}}
    5. </h1>
    6. </div>
    7. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    8. <script>
    9. var v = new Vue({
    10. el: '#box',
    11. data: {
    12. items: ["one","two","three"]
    13. }
    14. })
    15. </script>
    16. </body>

    循环的次数为items元素的数量,item表示数组每个元素,index为当前数组元素下标。

    5.v-model和data

    1. <body>
    2. <div id="box">
    3. <input type="text" v-model="text">
    4. <input type="text" v-bind:value="text">
    5. {{text}}
    6. </div>
    7. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    8. <script>
    9. var v = new Vue({
    10. el: '#box',
    11. data: {
    12. text: "1",
    13. }
    14. })
    15. </script>
    16. </body>

    v-model与text进行双向绑定,当在输入框输入值时,该值会赋值给属性text,{{}}再从属性取值,两者的值会保持同步。即view改变model属性的值,model再改变view的显示。

     

    v-bind只能从model中取值

    1. <body>
    2. <div id="box">
    3. <select v-model="select">
    4. <option selected value="" disabled>请选择</option>
    5. <option value="A">A</option>
    6. <option value="B">B</option>
    7. </select>
    8. 选择了:{{select}}
    9. </div>
    10. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    11. <script>
    12. var v = new Vue({
    13. el: '#box',
    14. data: {
    15. select: ''
    16. }
    17. })
    18. </script>
    19. </body>

    v-model将该元素与model层的select属性进行了双向绑定。

    通过点击不同的option改变select的值,进而改变model中的select属性的值,进而改变{{select}}的值。

    methods的应用

    v-on和methods

    1. <body>
    2. <div id="box">
    3. <button v-on:click="sayHi">click</button>
    4. </div>
    5. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    6. <script>
    7. var v = new Vue({
    8. el: '#box',
    9. methods: {
    10. sayHi: function (event) {
    11. alert("hi");
    12. }
    13. }
    14. })
    15. </script>
    16. </body>

    点击按钮,执行方法sayHi方法,除了click事件,还有很多其他事件。

    methods中的函数有返回值

    1. <body>
    2. <div id="box">
    3. {{currentTime()}}
    4. </div>
    5. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    6. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    7. <script>
    8. var v = new Vue({
    9. el: '#box',
    10. methods: {
    11. currentTime: function () {
    12. return Date.now();
    13. }
    14. }
    15. });
    16. </script>
    17. </body>

    通过事件触发时,函数名不需要带(),直接调用函数时需要有()

    vue组件

    1. <body>
    2. <div id="box">
    3. /*
    4. 使用v-bind,首先将item当作了变量,item为model中的items中取到的值
    5. item的值即为属性name的值,props中的属性有了值后可以在模板中使用
    6. */
    7. <Component v-for="item in items" v-bind:name="item"></Component>
    8. </div>
    9. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    10. <script>
    11. Vue.component("Component",{ //自定义组件的标签名
    12. props: ['name'], //自定义组件的属性名
    13. template: '<li>{{name}}</li>' //自定义组件的模板,即引用该标签展示的内容
    14. })
    15. var v = new Vue({
    16. el: '#box',
    17. data: {
    18. items: [1,2,3]
    19. }
    20. });
    21. </script>
    22. </body>

     

    mounted()的使用

    创建文件data.json

    1. {
    2. "name": "zz",
    3. "address": {"street": "zz", "city": "zz"}
    4. }

    发送请求

    1. <body>
    2. <div id="box"></div>
    3. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    4. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    5. <script>
    6. var v = new Vue({
    7. el: '#box',
    8. mounted() {
    9. axios.get('/demo1/data.json').then(response=>(console.log(response.data)));
    10. }
    11. });
    12. </script>
    13. </body>

     =>是链式编程为ES6的特性,需要编译器的JS支持该特性。

    将返回的数据显示到页面上

    1. <body>
    2. <div id="box">
    3. {{info}}
    4. </div>
    5. <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    6. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    7. <script>
    8. var v = new Vue({
    9. el: '#box',
    10. data(){
    11. return{
    12. info: {
    13. name: null,
    14. address: {
    15. street: null,
    16. city: null
    17. }
    18. }
    19. }
    20. },
    21. mounted() {
    22. axios.get('/demo1/data.json').then(response=>(this.info=response.data));
    23. }
    24. });
    25. </script>
    26. </body>

    data()与data:{}好像不能同时存在

     双向绑定

    axios

  • 相关阅读:
    短期通过PMP考试?
    通过配置文件方式配置包含thymeleaf的SpringMVC开发环境
    TCP三次握手和四次挥手
    四足机器人软件架构现状分析
    服务器遭受攻击之后的常见思路
    Java面试题汇总(持续更新.....)
    【Vue面试题二十八】、vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
    【附源码】Python计算机毕业设计七七美食汇
    2021中国科学院文献情报中心期刊分区表 计算机(2)
    33基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。
  • 原文地址:https://blog.csdn.net/weixin_52972575/article/details/125338436