简单应用
Vue.js 的核心是一个允许采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统:

  1. <div id="app">
  2. {{ message }}
  3. </div>
  4.  
  5. var app = new Vue({
  6. el: '#app',
  7. data: {
  8. message: 'Hello Vue!'
  9. }
  10. })


带有指令的例子
在控制台输入 app.message="11" 数据就会发生变化

  1. <div id = "demo2">
  2. <span v-bind:title="message">
  3. 鼠标悬停几秒就会看到信息
  4. </span>
  5. </div>
  6.  
  7. <script>
  8. var demo2 = new Vue({
  9. el:"#demo2",
  10. data:{
  11. message:"页面加载于"+new Date().toLocaleString()
  12. }
  13. })
  14. </script>

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

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

 条件与循环

  1. <div id="app-3">
  2. <p v-if="seen">现在你看到我了</p>
  3. </div>
  4.  
  5. var app3 = new Vue({
  6. el: '#app-3',
  7. data: {
  8. seen: true
  9. }
  10. })

绑定数组来渲染项目 

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

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

处理用户的输入

  1. <div id = "demo5">
  2. <p>{{message}}</p>
  3. <button v-on:click="reverseMessage">逆转消息</button>
  4. </div>
  5. <script>
  6. var demo5 = new Vue({
  7. el:"#demo5",
  8. data: {
  9. message: "Hello Vue.js"
  10. },
  11. methods: {
  12. reverseMessage:function(){
  13. this.message=this.message.split('').reverse().join('')
  14. }
  15. }
  16. })
  17. </script>

##和表单的双向绑定注意在 reverseMessage 方法中,我们更新了应用的状态,但没有触碰 DOM——所有的 DOM 操作都由 Vue 来处理,你编写的代码不需要关注底层逻辑。

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

  1. <div id="app-6">
  2. <p>{{ message }}</p>
  3. <input v-model="message">
  4. </div>
  5. var app6 = new Vue({
  6. el: '#app-6',
  7. data: {
  8. message: 'Hello Vue!'
  9. }
  10. })


组件化构建应用

  • 组件注测
  • 在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例,在 Vue 中注册组件很简单
    // 定义名为 todo-item 的新组件
  1. Vue.component(‘todo-item’, {
  2. template:
  3.  
  4. 这是个待办项

  5. })
  • 组件的定义
    1. Vue.component('todo-item', {
    2. // todo-item 组件现在接受一个
    3. // "prop",类似于一个自定义属性
    4. // 这个属性名为 todo。
    5. props: ['todo'],
    6. template: '<li>{{ todo.text }}</li>'
    7. })

Vue实例

所有的 Vue 组件都是 Vue 实例,并且接受相同的选项对象即可 (一些根实例特有的选项除外)。

模板语法

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。
在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,在应用状态改变时,Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。
如果你熟悉虚拟 DOM 并且偏爱 JavaScript 的原始力量,你也可以不用模板,直接写渲染 (render) 函数,使用可选的 JSX 语法。

插值

  • 文本
    数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值:
    <span>Message: </span>
  • v-once 标签 值不能再改变

指令

指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM
所有带v-开头的标签都是

缩写

v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的特性。当你在使用 Vue.js 为现有标签添加动态行为 (dynamic behavior) 时,v- 前缀很有帮助,然而,对于一些频繁用到的指令来说,就会感到使用繁琐。同时,在构建由 Vue.js 管理所有模板的单页面应用程序 (SPA - single page application) 时,v- 前缀也变得没那么重要了。因此,Vue.js 为 v-bind 和 v-on 这两个最常用的指令,提供了特定简写:

  1. v-bind 缩写
  2.  
  3. <a v-bind:href="url">...</a>
  4.  
  5. <a :href="url">...</a>
  6. v-on 缩写
  7.  
  8. <a v-on:click="doSomething">...</a>
  9.  
  10. <a @click="doSomething">...</a>

No.2一步步学习vuejs 实例demo篇的更多相关文章

  1. Thymeleaf 学习笔记-实例demo(中文教程)

    项目demo     http://pan.baidu.com/s/1wg6PC 学习资料网址  http://www.blogjava.net/bjwulin/archive/2013/02/07/ ...

  2. No.1一步步学习vuejs 环境配置安装篇

    一 安装与配置 需要安装node.js和 nmp管理器http://nodejs.cn/安装完后测试输入命令查看版本验证 node -v //查看node.js的版本 npm -v //查看 由于有些 ...

  3. No.5一步步学习vuejs之事件监听和组件

    一监听事件 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码. <div id="demo1"> <button v-on ...

  4. No.3一步步学习vuejs之计算属性和观察者

    一.计算属性运行结果 <div id = "demo1"> <p>Original message: "{{message}}"< ...

  5. No.4一步步学习vuejs之表单输入绑定

    基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以 ...

  6. mybatis 学习笔记 -详解mybatis 及实例demo

    快速入门1 要点: 首先明白mybatis 是什么 这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. 首先, ...

  7. 一步步学习javascript基础篇(7):BOM和DOM

    一.什么是BOM.什么是DOM BOM即浏览器对象模型,主要用了访问一些和网页无关的浏览器功能.如:window.location.navigator.screen.history等对象. DOM即文 ...

  8. 一步步学习javascript基础篇(6):函数表达式之【闭包】

    回顾前面介绍过的三种定义函数方式 1. function sum (num1, num2) { return num1 + num2; }  //函数声明语法定义 2. var sum = funct ...

  9. 一步步学习javascript基础篇(5):面向对象设计之对象继承(原型链继承)

    上一篇介绍了对象创建的几种基本方式,今天我们看分析下对象的继承. 一.原型链继承 1.通过设置prototype指向“父类”的实例来实现继承. function Obj1() { this.name1 ...

随机推荐

  1. “全栈2019”Java第九章:解释第一个程序

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. ACM-ICPC 2018北京网络赛-A题 Saving Tang Monk II-优先队列

    做法:优先队列模板题,按步数从小到大为优先级,PASS掉曾经以相同氧气瓶走过的地方就好了 题目1 : Saving Tang Monk II 时间限制:1000ms 单点时限:1000ms 内存限制: ...

  3. [独家] Adobe Flash 直接复制元件不改变原元件

    正在考网页高级考证,然后会需要做Adobe Flash相关操作.在网上看了下,基本都是错误的.于是,自己研究解决该问题. 首先,你需要更改元件不改变原文件是不可能的. 所以: 1.你需要对原元件所在的 ...

  4. redis 3.0 集群__监控警报工具(sentinel)

    参考文档 http://redis.readthedocs.org/en/latest/topic/sentinel.html 因为目前还处于开发阶段,就先不研究了,待续

  5. P3267 [JLOI2016/SHOI2016]侦察守卫

    $ \color{#0066ff}{ 题目描述 }$ 小R和B神正在玩一款游戏.这款游戏的地图由N个点和N-1条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地图是一棵有N个节点的 ...

  6. Python3学习札记

    1.- (按位取反) x的按位取反结果为-(x+1)   e.g. -5输出-6 更多细节,阅:http://stackoverflow.com/a/11810203 2.DocString约定 为一 ...

  7. python2与python3差异,以及如何写两者兼容代码

    1.路径差异: 绝对导入:跳过包内,直接搜索 sys.path ,在sys.path的基础上进行我们的模块搜索. 相对导入:先包内,再包外,再,,, python2是默认相对导入的,因此对于一般性的导 ...

  8. git 常用口令

    版本管理 svn git   cd d 切换目录 cd www cd git git clone 一个地址 git status 获取修改的内容 git add * 上传修改的内容 git commi ...

  9. python logging模块的使用

    logging 专门用于记录日志的模块,相对于print来说,logging 提供了日志信息的分级.格式化.过滤等功能.在程序中定义丰富有条理的log信息,可以方便分析程序的运行状态,在发生问题是可有 ...

  10. java实现图片文字识别的两种方法

    一.使用tesseract-ocr 1.    https://github.com/tesseract-ocr/tesseract/wiki上下载安装包安装和简体中文训练文件 window64位安装 ...