Vue-1.0

发布时间:2014年2月开源的一个前端开发库

1 官网介绍
1 是一套构建用户界面的渐进式框架
2 采用自底向上增量开发的设计
3 Vue只关注视图层,使其容易和其他的第三方库或者项目整合
4 当单文件组件和Vue生态系统支持的库结合使用时,能给为复杂的单页面程序提供驱动
2 版本下载

http://v1-cn.vuejs.org/guide/installation.html
(提供了开发版本和生产版本)

3 基本指令起步

3.1 构造器

  • 每一个Vue.js都是通过构造函数Vue创建一个Vue的实例来进行启动
var vm = new Vue({//变量名vm 表示Vue实例
        //代码    
})

3.2 属性与方法

  • Vue实例会代理data对象里面的所有属性
var  data = { a : 1}
var vm = new Vue({
     data:data
})
vm.a == data.a    //=>true
vm.a = 2 //修改属性也会影响到原始的数据
data.a    // a=>2
data.a = 3    //同理
vm.a     //a=>3

小结:代理的属性是响应的,在实例创建之后添加新的属性到实例上,是不会触发视图更新

3.3 常见指令
指定(directive)是带有v- 前缀的的特殊属性,指令的作用就是当其表达式的值改变时相应的将某些行为应用到DOM上

1 数据绑定指令

  • v-model
    双向数据绑定,只能在表单元素中使用,修改当前的数据则会影响相对应的数据值(使用v-model必须要赋初始值)
  • v-text
    可以直接渲染data里面的数据,只能输出文本,不能输出元素标签
  • v-html
    可以直接输出html字符串和文本内容

2 指令接受参数(接受一个参数,用冒号来指明即可)

  • v-bind:src
  • v-bind:class
  • v-bind:href
  • v-bind:id
  • v-html:

3 条件指令(作为一个自定义的属性来使用)

  • v-if(背景图的颜色改变)//控制多个兄弟元素 可以使用template元素
  • v-else
  • v-else-if(2.0新增)
  • v-show

4 循环指令

v-for(value in array)//数组遍历
v-for((val,index) in array)//获取每个索引值,从零开始

v-for(val in obj)//对象遍历
v-for((val,key) in obj)//获取键和值

<template v-for="(val ,key) in obj">
    <h2>{{val}}</h2>
    <p>{{key}}</p>
</template>
  • v-for(val in 10)//整数循环 ,从零开始

5 计算属性(声明式的描述一个值依赖了其他的值)

  • data:数据存放
  • methods:方法和事件的操作
<h2>{{getAge(birthday)}}</h2>
data:{
   birthday:"1996-10-21"
}
//计算年龄
methods:{
    getAge:function(birthday){
      var d1 = new Date(birthday);  
      var d2 = new Date();
      return d2.getFullYear() - d1.getFullYear();//
    }
}
//计算属性方法
<h2>{{age}}</h2>
computed:{
    age:function(){
      var d1 = new Date(this.birthday);//this 代表当前
      var d2 = new Date();
      return d2.getFullYear() - d1.getFullYear(); 
    }
  }
//理解:就是属性加方法的合体

1 计算属性的两大特征

  • 缓存性能(和调用methods函数之间的区别)
    使用计算属性的时候,依赖的值如果没有发生变化的时候(相互有依赖的关系),则当前的计算属性就会使用缓存,不会重新执代码(如果是普通方法,则会重新执行代码)
  • get特征
//方法中设置和修改
age:{
  get : function(){
    return new Date().getFullYear() - this.birthday
  },
  set:function(val){//birthday
    this.birthday = new Date().getFulYeatr() - val;
  }
}

6 过滤器
对数据的进行不同的处理,在不同需求下,对数据,文本进行不同的格式化

  • 使用格式{{变量 | 过滤器名称*(参数1,参数2,参数3)}} //版本1之后都放弃了过滤器

7 事件

1 点击事件

  • v-on:click="方法名()";
  • 简写 @click="方法名"

2 操作DOM

  • v-on:click = "方法名($event)"//获取当前的元素
    3 停止冒泡
  • v-on:click.stop = "方法名"//阻止事件进行冒泡
    事件注意事项
  • 绑定事件没有on ,
  • 事件名称都是小写

8 表单处理

  • 数据双向绑定
  • 模型的变化 ---> 视图的更新
  • 视图的变换 ---> 模型的更新
  • 指令 v-model(只能应用表单输入框中)

9 修饰符

10 样式操作(class和style)

  • 是对元素的属性操作(v-bind:)
  • 通过表达式的值来增添元素类
  • 表达式的结果类型除了字符串,还支持对对象和数组的操作

1 对象语法

//案例一
isActive:为true的时候,添加active类
<div v-bind:class='{active:isActive}'>Test</div>
//案例二
isActive的值大于2的时候,添加active类
<div v-bind:class='{active:isActive>2}'>Test</div>
//案例三
多个条件同时判断,满足则添加相对应的类,多个类用逗号进行分隔
<div v-bind:class='{activea:isActive,activeb:isActive==10}'>Test</div>

案例四:通过计算属性来绑定样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>对象语法</title>
    <!-- js -->
    <script type="text/javascript" src="jquery-3.1.1.min.js"></script>
    <script type="text/javascript" src="vue.min.js"></script>
    <!-- js -->
    <script type="text/javascript">
        $(function(){
            var vm = new Vue({
                el:".body",
                data:{
                    isActive: true,
                    hasError: false
                },
                computed:{
                    classObject:function(){
                        return {
                            active: this.isActive && !this.error,
                            'text-danger': this.error && this.error.type === 'fatal',
                        }
                    }
                }
            })
        })
    </script>
</head>
<body>
    <div class="body">
        <div v-bind:class="classObject"></div>
    </div>
</body>
</html>

*methods只是提供数据逻辑,而不是DOM的细节处理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,198评论 0 6
  • 计算属性 计算属性和data对象属性都是可以直接在DOM上直接使用的 但计算属性可以获取data对象属性,根据获取...
    林立镇阅读 324评论 0 0
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,044评论 0 29
  • 1.安装 可以简单地在页面引入Vue.js作为独立版本,Vue即被注册为全局变量,可以在页面使用了。 如果希望搭建...
    Awey阅读 10,982评论 4 129
  • 2017年9月19日 D40阿尔法号+阿基米德舱+刘虹秀+打卡 今日任务: 收听晨间导读:“自我”的一生发展 今日...
    伊秀儿阅读 94评论 0 0