VUE.js学习笔记--vue的使用

什么是vue.js

官方说明:是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

Vue.js的特性

  • 1、MVVM模式
    M: model 业务模型,用处:处理数据,提供数据
    V: view 用户界面、用户视图
    业务模型model中的数据发生改变的时候,用户视图view也随之变化。用户视图view改变的时候,业务模型model中的数据也可以发生改变。
  • 2、组件化
  • 3、指令系统
  • 4、Vue.js 2.0开始支持虚拟DOM(Vue.js 1.0 是操作的真实DOM,而不是虚拟DOM)
    虚拟DOM可以提升页面的刷新速度。

安装vue.js

官网:https://cn.vuejs.org/v2/guide/installation.html

点击下载

点击开发版本将代码拷贝出来,放入新建的js文件中,就可以在自己的页面使用script标签引入啦

使用vue.js

Vue.js提供了一个vue对象,要使用vue.js 需要把它new出来
<script>new Vue({el:’#xxxx’,data:{}})</script>
el的作用是声明vue对象的作用边界,绑定上面dom标签的id
data的作用是存放显示在页面中的数据,在标签中以{{}}来获取。
我们知道vue是一个mvvm框架,前端的html页面相当于view,data对应的是后端的model,而我们new出来的vue对象则代表桥接前后端的view-model。也是整个mvvm框架的核心!

绑定文本data

下面是一个简单的hello world小栗子


举个栗子

运行页面显示hello world


绑定元素特性

不光可以绑定文本值,还可以对一些元素特性进行绑定 如:

<div id="app2" v-bind:title='message'>
        <span>鼠标悬停触发</span>
</div>

Js文件:

let app2 = new Vue({
    el:'#app2',
    data:{
        message:'hi~~ 平田君~~'
    }
})

展示效果,是不是很方便啦

hi,又见面了平田君~~

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

绑定函数

例如:

    <div id="root">
        <div v-on:click="handleClick" ><h1>{{content}}</h1></div>
    </div>

Js:

let root = new Vue({
    el : "#root",
    data:{
        content : "hello"
    },
    methods: {
        handleClick: function(){
            if(this.content === 'hello')
            this.content = "world"
            else
            this.content = "hello"
        }
    }
})

这段代码通过v-on将鼠标点击事件click与vue函数handleclick绑定到一起,当发生鼠标点击事件的时候执行handleclick函数,将在hello 和 world之间来回切换
同样的v-on:click也可以简写为@click

双向绑定

<div id='shuru'>
       <input :value="content"/>
       <div>{{content}}</div>
   </div>

单项属性绑定value的时候 输入东西content不发生变化


    <div id='shuru'>
        <input v-model="content"/>
        <div>{{content}}</div>
    </div>

使用v-model 可以实现双向绑定,效果如下,当输入框中数据发生变化的时候vue对象中data里的content属性也会跟着发生相应的变化。


计算属性

<div id='ex'>
    <input v-model='one'/> +
    <input v-model='two'/> =
    {{sum}}
</div>

Js代码:

let ex = new Vue({
    el:"#ex",
    data:{
        one : "",
        two : "",
    },
    computed:{
        sum : function(){
           return Number(this.one) + Number(this.two)
        }
    }
})

通过computedsum绑定到div,可以实现函数运算返回

侦听器

watch:{
    sum : function(){
        this.count++
    }
}

使用watch可以对元素进行侦听,上面例子是对sum进行监听,当sum值发生变化的时候count进行自增,用来统计计算sum的次数

因为是即时计算,输入了5次也就说明计算了5次

条件与循环指令

控制一个元素的显示与否也是很简单的 我们可以使用v-if和v-show来做
我们变个戏法

<div id='root'>
    <div v-if="show">{{count}}</div>
    <button @click="oneTick">{{fashu}}</button>
</div>

Js代码:

let ex = new Vue({
    el:"#root",
    data:{
        count:"戏法---->",
        show:true,
        fashu:"雾隐雷藏"
    },
    methods:{
        oneTick:function(){
            this.show = !this.show;
            if(this.fashu==="雾隐雷藏")
                this.fashu = "明心见性";
            else if(this.fashu==="明心见性")
                this.fashu = "雾隐雷藏";           
        }
    } 
})


消失了

效果可见我们给button绑定了一个点击事件,当触发事件的时候修改了上面div的show的值,当show为true的时候戏法----> 是显示状态当为false的时候就消失了,
同样的我们可以把v-if变为v-show 得到的效果是一样的
但是区别肯定会有的,让我们荡起双桨(啊呸。。。)打开控制台

当时v-if的时候我们可以发现施展雾隐雷藏的时候会吧div删除掉,然后明心见性的时候再创建一个
而当v-show的时候则是增加一条css属性display:none,显示的时候再去掉。

至于开发中我们如何选择就看业务需求啦~~
循环指令是用v-for来实现的:

<div id="root1">
        <ul>
            <li v-for="tool of tools">{{tool}}</li>
        </ul>
  </div>

Js代码:

let ab = new Vue({
    el:"#root1",
    data:{
    tools:["A","B","C"]
}

展示效果

<li>标签中也可以写为v-for="tool in tools"
另外在使用v-for的时候可以增加一个key的属性,可以提升页面的渲染速度,一个循环里的key是不可以重复的。
<li v-for="tool of tools" :key='tool'>{{tool}}</li>
考虑到tool有可能是重复的,也可以用下面的方法
<li v-for="(tool ,index) of tools" :key='index'>{{tool}}</li>
效果相同

总结

Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribute)。

  • v-bind:指令可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性,v-bind:可以缩写为“
  • v-on:指令用于给监听DOM事件,它的用语法和v-bind是类似的,v-on:可以缩写为“@
  • v-model:双向绑定
  • v-if:是条件渲染指令,它根据表达式的真假来删除和插入元素
  • v-show:也是条件渲染指令,和v-if指令不同的是,使用v-show指令的元素始终会被渲染到HTML,它只是简单地为元素设置CSS的style属性。
  • v-else:可以用v-else指令为v-if或v-show添加一个“else块”。v-else元素必须立即跟在v-if或v-show元素的后面——否则它不能被识别。v-else元素是否渲染在HTML中,取决于前面使用的是v-if还是v-show指令。
    如果if指令为true,则else不会被渲染,如果show指令为true则else一样会渲染到html页面,不过是style为none
  • v-for:基于一个数组渲染一个列表,它和JavaScript的遍历语法相似。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容