zoukankan      html  css  js  c++  java
  • vue笔记1

    1.安装或引入vue的方式:

    a.直接下载并用 <script> 标签引入

    b. <script>在线引入:

    生产版:<script src="https://unpkg.com/vue/dist/vue.min.js"></script>

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

    c.在用 Vue 构建大型应用时推荐使用 NPM 安装。NPM 能很好地和诸如 webpack 或 Browserify 模块打包器配合使用。同时 Vue 也提供配套工具来开发单文件组件。

    # 最新稳定版
    $ npm install vue

    2.vue简单例子:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    </head>
    <body>
    <div id="app">
      <p>{{ message }}</p>
    </div>

    <script>
    var app = new Vue({
      el: '#app',
      data: {
        message: 'Hello Vue.js!'
      }
    })
    </script>
    </body>
    </html>

    el: '#app'表示把vue实例挂载到id为app的元素中

     双大括号返回表达式的值或属性的值,单个大括号用于在bind时做逻辑判断, 比如

    <div v-bind:class="{class1:flag}">{{content+"zy"}}</div>

    3.

    除了文本插值,我们还可以像这样来绑定元素属性:

    <div id="app-2">
    <span v-bind:title="message">
    鼠标悬停几秒钟查看此处动态绑定的提示信息!
    </span>
    </div>
    var app2 = new Vue({
    el: '#app-2',
    data: {
    message: '页面加载于 ' + new Date().toLocaleString()
    }
    })
    鼠标悬停几秒钟查看此处动态绑定的提示信息!

    这里我们遇到了一点新东西。你看到的 v-bind 特性被称为指令。指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性。可能你已经猜到了,它们会在渲染的 DOM 上应用特殊的响应式行为。在这里,该指令的意思是:“将这个元素节点的 title 属性和 Vue 实例的 message 属性保持一致”。

    如果你再次打开浏览器的 JavaScript 控制台,输入 app2.message = '新消息',就会再一次看到这个绑定了 title 特性的 HTML 已经进行了更新。

    元素属性不需要{{}},直接引用值

     <tr v-for="item in taskitems" onclick="onselrow(this);">

      <td bgcolor="#FFFFFF" v-bind:title=item.source>{{item.source}}</td>

    </tr>

    4.v-if

    们不仅可以把数据绑定到 DOM 文本或属性,还可以绑定到 DOM 结构,比如用v-if控制元素是否显示

    <div id="app-3">
    <p v-if="seen">现在你看到我了</p>
    </div>
    var app3 = new Vue({
    el: '#app-3',
    data: {
    seen: true
    }
    })

    5.v-for 指令可以绑定数组的数据来渲染一个项目列表:

    <div id="app-4">
    <ol>
    <li v-for="todo in todos">
    {{ todo.text }}
    </li>
    </ol>
    </div>
    var app4 = new Vue({
    el: '#app-4',
    data: {
    todos: [
    { text: '学习 JavaScript' },
    { text: '学习 Vue' },
    { text: '整个牛项目' }
    ]
    }
    })
    1. 学习 JavaScript
    2. 学习 Vue
    3. 整个牛项目

    在控制台里,输入 app4.todos.push({ text: '新项目' }),你会发现列表最后添加了一个新项目。

     6.v-on指令:用来绑定事件

    <div id="app-5">
    <p>{{ message }}</p>
    <button v-on:click="reverseMessage">逆转消息</button>
    </div>
    var app5 = new Vue({
    el: '#app-5',
    data: {
    message: 'Hello Vue.js!'
    },
    methods: {
    reverseMessage: function () {
    this.message = this.message.split('').reverse().join('')
    }
    }
    })
    v-on:click可以简写为:@click
    还可绑定其他事件:
    <form v-on:submit="onSubmit">
    <input type="text"><br />
    <input type="submit" value="提交">
    </form>

    可以传参:
    <div v-for="item in fastnowdatacul" @click="taskitemclick(item)">

     7.

    Vue 还提供了 v-model 指令,它能轻松实现表单输入和应用状态之间的双向绑定。

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

    在input中改变输入值,会同步变化message变量,从而同步变化p中的内容

    8.组件系统是 Vue 的另一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用

    在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例。在 Vue 中注册组件很简单:

    // 定义名为 todo-item 的新组件
    Vue.component('todo-item', {
    template: '<li>这是个待办项</li>'
    })

    现在你可以用它构建另一个组件模板:

    <ol>
    <!-- 创建一个 todo-item 组件的实例 -->
    <todo-item></todo-item>
    </ol>

    但是这样会为每个待办项渲染同样的文本,这看起来并不炫酷。我们应该能从父作用域将数据传到子组件才对。让我们来修改一下组件的定义,使之能够接受一个 prop

    Vue.component('todo-item', {
    // todo-item 组件现在接受一个
    // "prop",类似于一个自定义特性。
    // 这个 prop 名为 todo。
    props: ['todo'],
    template: '<li>{{ todo.text }}</li>'
    })

    现在,我们可以使用 v-bind 指令将待办项传到循环输出的每个组件中:

    <div id="app-7">
    <ol>
    <!--
    现在我们为每个 todo-item 提供 todo 对象
    todo 对象是变量,即其内容可以是动态的。
    我们也需要为每个组件提供一个“key”,稍后再
    作详细解释。
    -->
    <todo-item
    v-for="item in groceryList"
    v-bind:todo="item"
    v-bind:key="item.id">
    </todo-item>
    </ol>
    </div>
    Vue.component('todo-item', {
    props: ['todo'],
    template: '<li>{{ todo.text }}</li>'
    })

    var app7 = new Vue({
    el: '#app-7',
    data: {
    groceryList: [
    { id: 0, text: '蔬菜' },
    { id: 1, text: '奶酪' },
    { id: 2, text: '随便其它什么人吃的东西' }
    ]
    }
    })
    1. 蔬菜
    2. 奶酪
    3. 随便其它什么人吃的东西

    效果跟这个一样:

     <li v-for="item in groceryList">
                  {{item.text}}
       </li>

    这样式显示不了内容的:

     <todo-item v-for="item in groceryList">
                  {{item.text}}
     </todo-item>

    只会显示1-3序号,text内容显示不出来,所以组件里面的内容要在组件里定义,不能到组件外。

    9.methods里面的方法调用methods里面另一个方法xxx,或者使用data里的数据xxx,如果不是在回调中,可以用this.xxx或app.xxx

    如果是在回调中,比如网络访问成功后回调,则必须用app.xxx,因为this在回调里不一定是指向vue对象了

    在created里面调用methods方法只能用this调用,不能用app

  • 相关阅读:
    闭包如何产生内存消耗及性能消耗
    纯色半透明
    CSS选择符权重
    浅谈模块化的JavaScript
    WEB前端知识体系
    侃侃meta标签
    【读书笔记】读《编写可维护的JavaScript》 编程风格(第一部分)
    谈谈防御性编程
    很小的一个函数执行时间调试器Timer
    谈谈防止重复点击提交
  • 原文地址:https://www.cnblogs.com/cowboybusy/p/9104070.html
Copyright © 2011-2022 走看看