Vue.js

Posted 致知书法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.js相关的知识,希望对你有一定的参考价值。

Vue.js 入门教程

Vue.js 是用于构建交互式的 Web 界面的库。

Vue.js 提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单、灵活的 API。

Vue.js 特点

  • 简洁: html 模板 + JSON 数据,再创建一个 Vue 实例,就这么简单。

  • 数据驱动: 自动追踪依赖的模板表达式和计算属性。

  • 组件化: 用解耦、可复用的组件来构造界面。

  • 轻量: ~24kb min+gzip,无依赖。

  • 快速: 精确有效的异步批量 DOM 更新。

  • 模块友好: 通过 NPM 或 Bower 安装,无缝融入你的工作流。

双向数据绑定

接下来我们创建一个 view 层 HTML 文件:vueapp.htm,以及 model 层文件:vueapp.js,然后通过 vue.js(使用v-model这个指令)完成中间的底层逻辑,实现绑定的效果。改变其中的任何一层,另外一层都会改变。


vueapp.htm 文件代码:

<div id="app">
  <p>{{ message }}</p>
  <input v-model="message"></div>

vueapp.js 文件代码:

new Vue({
  el: '#app',
  data: {
    message: '公众号!'
  }})

同时还支持一些简单的表达式:

<!-- 字符串连接 -->{{ message + '官网地址:www.runoob.com' }}<!-- 字符串反转 -->{{ message.split('').reverse().join('') }}

列表输出

列表输出使用 v-for(v-for取代了1.0以前版本中的v-repeat) 这个指令就能完成:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title><script src="http://static.runoob.com/assets/vue/1.0.11/vue.min.js"></script></head><body><div id="app">
  <ul>
    <li v-for="todo in todos">
      {{ todo.text }}    </li>
  </ul></div><script>    new Vue({
  el: '#app',
  data: {
    todos: [
      { text: 'Learn javascript' },
      { text: 'Learn Vue.js' },
      { text: 'Build Something Awesome' }
    ]
  }})</script></body></html>

多维数组实例

<div id="app">
  <ul id="example-2">
  <li v-for="item in items">
    {{ parentMessage }} - {{ $index }} - {{ item.message }}  </li></ul></div><script>var example2 = new Vue({
  el: '#example-2',
  data: {
    parentMessage: '菜鸟教程官网',
    items: [
      { message: 'www.runoob.com' },
      { message: 'www.runoob.com' }
    ]
  }})</script>

条件判断

在 Vue.js,我们使用 v-if 指令实现同样的功能:

<h1 v-if="ok">Yes</h1>

也可以用 v-else 添加一个 "else" 块:

<h1 v-if="ok">Yes</h1><h1 v-else>No</h1>

因为 v-if 是一个指令,需要将它添加到一个元素上。但是如果我们想切换多个元素呢?此时我们可以把一个 <template> 元素当做包装元素,并在上面使用 v-if,最终的渲染结果不会包含它。

<template v-if="ok">
  <h1>Title</h1>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p></template>

v-show

v-show作用与v-if类似,不同的是v-show的元素会始终渲染并保持在 DOM 中,且v-show不支持<template>标签。

<h1 v-show="ok">Hello!</h1>

过滤器


与Linux中的管道类似,vue.js也使用的是|:

{{message | uppercase}}

这样就能输出message的大写了,过滤器也能串联在一起使用:

{{message | reverse | uppercase}}

这里reverse并不是内建的过滤器,我们可以用Vue.filter自定义:

Vue.filter('reverse', function (value) {
    return value.split('').reverse().join('')})


以上是关于Vue.js的主要内容,如果未能解决你的问题,请参考以下文章

vue.js 2 - 将单个文件组件的 html 片段提取到独立文件中

使用 Vue 模板清晰地分离视图和代码

第1129期对vue.js单文件(.vue)进行单元测试

Vue组件之全局组件与局部组件

Vue组件之全局组件与局部组件

Vue.js中子组件向父组件传递信息。