Vue.js基础

1 vue.js研究

1.1 vue.js介绍

1、vue.js是什么?
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计
为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
渐进式框架:Progressive,说明vue.js的轻量,是指一个前端项目可以使用vue.js一两个特性也可以整个项目都用vue.js。
自底向上逐层应用:作为渐进式框架要实现的目标就是方便项目增量开发。
参考:https://cn.vuejs.org/v2/guide/
2、Vue.js的使用
1)在html页面使用script引入vue.js的库即可使用。

2)使用Npm管理依赖,使用webpack打包工具对vue.js应用打包。
大型应用推荐此方案。

3)Vue-CLI脚手架
使用vue.js官方提供的CLI脚本架很方便去创建vue.js工程雏形。

4、vue.js有哪些功能?
1)声明式渲染
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。
比如:使用vue.js的插值表达式放在Dom的任意地方, 差值表达式的值将被渲染在Dom中。

2)条件与循环
dom中可以使用vue.js提供的v-ifv-for等标签,方便对数据进行判断、循环。

3)双向数据绑定
Vue 提供v-model 指令,它可以轻松实现Dom元素和数据对象之间双向绑定,即修改Dom元素中的值自动修改绑定的数据对象,修改数据对象的值自动修改Dom元素中的值。

4)处理用户输入
为了让用户和你的应用进行交互,我们可以用v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法

5)组件化应用构建
vue.js可以定义一个一个的组件,在vue页面中引用组件,这个功能非常适合构建大型应用。

1.2 vue.js基础

1.2.1 MVVM模式
vue.js是一个MVVM的框架,理解MVVM有利于学习vue.js。

  • MVVM拆分解释为:

    • Model:负责数据存储
    • View:负责页面展示
    • View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示
  • MVVM要解决的问题是将业务逻辑代码与视图代码进行完全分离,使各自的职责更加清晰,后期代码维护更
    加简单

  • 用图解的形式分析Ajax请求回来数据后直接操作Dom来达到视图的更新的缺点,以及使用MVVM模式是如何
    来解决这个缺点的

Vue中的 MVVM


image.png

从上图看出,VM(ViewModel)可以把view视图和Model模型解耦合,VM的要做的工作就是vue.js所承担的。

1.2.2 入门程序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF‐8">
    <title>vue</title>
    <script src="vue.min.js"></script>
</head>
<body>

    <!‐‐ 在Vue接管区域中使用Vue的系统指令呈现数据
    这些指令就相当于是MVVM中的View这个角色 ‐‐>
    <div id="app">
        {{name}}
    </div>


</body>

    <script>
        //vm :叫做MVVM中的 View Model
        var vm = new Vue({
           el:"#app",//表示当前vue对象接管app的div区域
            data:{
               name:"大师兄,师傅被妖怪抓走了"// 相当于是MVVM中的Model这个角色
            }
        });
    </script>

</html>

代码编写步骤:
1、定义html,引入vue.js
2、定义app div,此区域作为vue的接管区域
3、定义vue实例,接管app区域。
4、定义model(数据对象)
5、VM完成在app中展示数据

1.2.3 1+1=2

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF‐8">
    <title></title>
    <script src="vue.min.js"></script>
</head>
<body>

<div id="app">

    <!--{{name}}-->
    <!--v-text可以解决网速慢出现表达式的问题-->
    <a v-bind:href="url">
    <span v-text="name"></span>
    </a>
    <input type="text" v-model="num1">+
    <input type="text" v-model="num2">=
    <span v-text="result"></span>
    <!--<span v-text="Number.parseInt(num1)+Number.parseInt(num2)"></span>-->
    <!--{{Number.parseInt(num1)+Number.parseInt(num2)}}-->
    <button v-on:click="change">计算</button>

</div>
</body>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                name:"田师傅",
                num1:0,
                num2:0,
                result:0,
                url:"http://www.baidu.com"
            },
            methods:{
                change:function () {
                    this.result= Number.parseInt(this.num1)+Number.parseInt(this.num2)
                    alert(this.result)
                }
            }
        });
    </script>

</html>

1、v-model:
1、在表单控件或者组件上创建双向绑定
2、v-model仅能在如下元素中使用:

input
select
textarea
components(Vue中的组件)

2、解决插值表达式闪烁问题,使用v-text
v-text可以将一个变量的值渲染到指定的元素中,它可以解决插值表达式闪烁的问题

3、v-on绑定一个按钮的单击事件

4、v-bind

1、作用:
v‐bind可以将数据对象绑定在dom的任意属性中。

v‐bind可以给dom对象绑定一个或多个特性,例如动态绑定style和class
2、举例:
<img v‐bind:src="imageSrc">
<div v‐bind:style="{ fontSize: size + 'px' }"></div>
3、缩写形式
<img :src="imageSrc">
<div :style="{ fontSize: size + 'px' }"></div>

1.2.4 v-if和v-for

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF‐8">
    <title> </title>
    <script src="vue.min.js"></script>
</head>
<body>

    <!‐‐ 在Vue接管区域中使用Vue的系统指令呈现数据
    这些指令就相当于是MVVM中的View这个角色 ‐‐>
    <div id="app">
        <!--相当于MVVM的view视图-->
        <ul>
            <li v-for="(item,index) in list" :key="index" v-if="index % 2 ==0">{{index}}--{{item}}</li>
            <li v-for="(value,key) in user">{{key}}--{{value}}</li>
            <li v-for="(item,index) in userlist" :key="item.user.uname">
                <div v-if="item.user.uname == 'smile1'" style="background: #00f50c">
                    {{index}}--{{item.user.uname}}--{{item.user.age}}
                </div>
                <div v-else="">
                    {{index}}--{{item.user.uname}}--{{item.user.age}}
                </div>

            </li>
        </ul>
    </div>
</body>

    <script>
        //vm :叫做MVVM中的 View Model
        var vm = new Vue({
            el:'#app',
            data:{
                list:[1,2,3,4,4],
                user:{uname:'smile',age:10},
                userlist:[
                    { user:{uname:'smile1',age:10}},
                    { user:{uname:'smile2',age:11}}
                ]
            }

        });
    </script>

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

推荐阅读更多精彩内容

  • Vue.js是什么 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架。与其...
    鱼鱼吃猫猫阅读 3,226评论 1 12
  • 1. Vue 实例 1.1 创建一个Vue实例 一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实...
    王童孟阅读 1,011评论 0 2
  • vue 一个mvvm框架(库),类似于angular,拥有比较容易上手的AIP。它是一套构建用户界面的 渐进式框架...
    你期待的花开阅读 548评论 0 9
  • Vue.js是什么? Vue.js(读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架。与其他...
    ConRon阅读 481评论 0 0
  • 什么是Vue.js? Vue.js是目前最火的前端主流框架之一,和Angular、React一起,并成为前端三大框...
    瑞破破阅读 518评论 0 1