• vue初接触


    1.安装配置

    可以下载文件,也可以使用cdn直接引入。

    使用了菜鸟教程的推荐网址:

    <script src="https://unpkg.com/vue/dist/vue.js"></script>

    也可以使用官网推荐的网址:

    <!-- 开发环境版本,包含了有帮助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <!-- 生产环境版本,优化了尺寸和速度 -->
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>

    2.使用vue(举例),挂载点、模板、方法:

    <div id="app">{{ message }}</div>
    <script>
    var app = new Vue({
      el: '#app',
    template: '<p>hello</p>', data: { message:
    'Hello Vue!' } }) </script>

    创建一个 vue 实例,其中称 el 下的 dom 节点为我们的挂载点,也就是页面内对应的元素(element)。称template为模板,挂载点下的内容称为模板内容,模板内容可以在页面上写,也可以在template下写。只会在对应的挂载点生效。data则保存将要显示的信息,用 {{}} 在页面显示key对应的value值,{{}}这个语法称为插值表达式。template会覆盖原有的内容。

    除了{{}}还有其他表达方式。例:

    <div v-text="message"></div>
    <div v-html="message"></div>
     

    v-text会转义字符串内容,例message:"<h1>a</h1>",则显示的内容为<h1>a</h1>,v-html不会转义,则显示 a 。

    绑定点击事件

    <div id="app">
        <div v-on:click="handleClick">{{ message }}</div>
    </div>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          message: 'Hello Vue!'
        },
        methods:{
          handleClick: function(){alert(123)}
        }
      })
    </script>
     v-on:click绑定的方法,在methods里设计实现。
    v-on:click可以简写成 @click
     methods:{
        handleClick: function(){
            this.message="world
        }
     }

    vue可以直接修改data数据,页面也会自动改变。

    3.属性绑定,双向数据绑定

    <div id="app">
        <div v-bind:title="'sdx '+title">{{ message }}</div>
    </div>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          message: 'Hello Vue!',
          title:"this is title"
        }
      })
    </script>

    鼠标移动到Hello Vue!文字时,会显示sdx this is title。v-bind:title可以缩写为:title。

    单向绑定:数据控制页面的显示内容,双向绑定可以改变页面内容,也可以显示页面内容。随输入框内容的变化,div内容一起变化。使用v-model双向数据绑定。

    <div id="app">
        <input v-model="message"/>
        <div>{{ message }}</div>
    </div>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          message: 'Hello Vue!',
        }
      })
    </script>

    4.计算属性和侦听器

    <div id="root">
        姓:<input v-model="firstname"/>
        名:<input v-model="lastname"/>
        <div>{{fullname}}</div>
    <div>{{count}}</div>
    </div> <script> new Vue({ el: '#root', data: { firstname: '', lastname: '',
        count:0
    }, computed:{ fullname: function(){ return this.firstname+" "+this.lastname } },
    watch:{
        fullname: function(){this.count++},
      } })
    </script>

    fuiiname会保存上次计算的缓存内容,只有当firstname或lastname变化时,才会重新计算并保存数据。

    当watch内数据发生变化时,计数会改变。

    5.v-if,v-show,v-for命令

    <div id="app">
        <button @click="click">show/hide</button>
        <div v-if="show">{{ message }}</div>
        <div v-show="show">{{ message }}</div>
        <ul><li v-for="(item,index)item of list" :key="index">{{item}}</li></ul>
    </div>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          message: 'Hello Vue',
          show: true,
          list: [1,2,3]
        },
      methods:{
        click: function(){this.show=!this.show}
      }
      })
    </script>

    将list列表的内容放到item中,位置下标放到index里。(index在不排序等改变位置的操作时可用,其他时候不行)

    v-if时,当show为false时,该dom节点被注释。v-show则添加display:none的css样式。

    6.todolist

    <div id="app">
        <div>
            <input v-model="value"/>
            <button @click="click">提交</button>
        </div>
        <ul>
            <li v-for="item of list" :key="item">{{item}}</li>
        </ul>
    </div>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          value: '',
          list:[]
        },
        methods:{click: function(){
                this.list.push(this.value)
                this.value=''
            }
        }
      })
    </script>    

    每点击一次提交,就会显示一个新的li,同时清除input内容。

    <div id="app">
        <div>
            <input v-model="value"/>
            <button @click="click">提交</button>
        </div>
        <ul>
            <todo-item></todo-item>
        </ul>
    </div>
    <script>
        Vue.component('todo-item',{
           template:'<li>item</li>' 
        })
    
      var app = new Vue({
        el: '#app',
        data: {
          value: '',
          list:[]
        },
        methods:{click: function(){
                this.list.push(this.value)
                this.value=''
            }
        }
      })
    </script>    
    
    
    Vue.component()定义的组件称为全局组件,任何地方都能使用。
    <ul>
        <todo-item v-for="item of list" :key="item" :content="item"></todo-item>
    </ul>
    
    
    var TodoItem={
      props:['content'],
      template:'<li>{{content}}</li>'   
    }
    new Vue({
        ……
            components:{
                'todo-item':TodoItem
            }
    })
    
    

    在Vue内设定局部组件,需设置props为从外部获取的参数。

    <div id="app">
        <div>
            <input v-model="value"/>
            <button @click="click">提交</button>
        </div>
        <ul>
            <todo-item v-for="(item,index) of list" 
                       :key="index" 
                       :content="item"
                       :index="index" 
                       @delete1="Delete">
            </todo-item>
        </ul>
    </div>
    <script>
        Vue.component('todo-item',{
            props:['content','index'],
            template:'<li @click="click1">{{content}}</li>' ,
            methods:{
              click1: function(){
                this.$emit('delete1',this.index)
              }
            }
        })
    
      var app = new Vue({
        el: '#app',
        data: {
          value: '',
          list:[]
        },
        methods:{
            click: function(){
                this.list.push(this.value)
                this.value=''
            },
            Delete: function(index){
                /*从对应下标的位置删除1项*/
                this.list.splice(index,1)
            }
        }
      })
    </script> 

    todolist的删除功能。当li点击时,触发click1的事件,将向外触发一个事件,事件的名字是delete1,值是index。当发生delete1的事件时,会触发父组件的Delete事件,将list的下标删除。

    7.组件与实例之间的关系

    每一个组件都是Vue的一个实例,以下代码为例,每个组件都可以包含Vue的属性。可以称Vue为父组件,其他的为子组件。父组件向子组件传递值以属性的形式传递。

    <div id="app">
        <div>
            <input v-model="value"/>
            <button @click="click">提交</button>
        </div>
        <ul>
            <todo-item v-for="(item,index) of list" 
                       :key="index" 
                       :content="item">
            </todo-item>
        </ul>
    </div>
    <script>
        Vue.component('todo-item',{
            props:['content'],
            template:'<li @click="click1">{{content}}</li>' ,
            methods:{
              click1: function(){
                alert("clicked")
              }
            }
        })
    
      var app = new Vue({
        el: '#app',
        data: {
          value: '',
          list:[]
        },
        methods:{click: function(){
                this.list.push(this.value)
                this.value=''
            }
        }
      })
    </script> 
    
    
    
    <div id="add">
        <input v-model="message"/>
        <div>{{ message }}</div>
    </div>
    <script>
      var app = new Vue({
        el: '#app',
        template: '<p>hello</p>',
        data: {
          message: 'Hello Vue!',
        }
      })
    </script>
  • 相关阅读:
    Android SDK Platforms
    Maven实战(五)坐标详解
    JSTL 核心标签库 使用
    在eclipse上安装Aptana插件
    jquery replace字符串全部替换
    Oracle笔记(四) 简单查询、限定查询、数据的排序
    Oracle笔记(三) Scott用户的表结构
    Oracle笔记(二) SQLPlus命令
    Oracle笔记(一) Oracle简介及安装
    Oracle笔记(六) 多表查询
  • 原文地址:https://www.cnblogs.com/nirvanaInSilence/p/12923914.html
Copyright © 2020-2023  润新知