VUE基础(一)

2017-11-05  本文已影响0人  bob_python

VUE框架的核心理念:数据驱动、组件化

数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom

例如:需求我们点击一个BUTTON按钮,需要按钮(文本)进行start和stop的切换

(JS原生):

var demo = document.getElementById('demo')

demo.onclick = function() {

if (this.value == "开始") {

this.value = "停止";

console.log("开始了")|请注意→

} else {

this.value = "开始";

console.log("停止了")

}

}

(#注意#VUE项目里不能写JS原生和Jquery!)

·原生需要对button绑定事件,然后获取文案对应的元素dom对象,然后根据切换修改该dom对象的文案值。

·Vue:在button元素上指明事件,同时声明对应文案的属性,点击事件的时候改变属性的值,对应元素的文本就能够自动的进行切换

vuejs帮我们封装了数据和dom对象操作的映射,我们只需要关心数据的逻辑处理,数据的变化就能够自然的通知页面进行页面的重新渲染。

vue项目的实现是基于MVVN架构实现的

mvvm机构包括):

·Model --数据--JavaScript对象

·View  --视图--就是所见的DOM

·viewModel --链接视图和数据的中间件#通讯

架构运行逻辑:

View <->        viewModel     <->model

在MVVM框架中不允许数据和底层的视图直接通讯的

只能通过viewModel通讯(我的作用就是定义OBserver观察者)

流程:

·数据变化时(ViewModel监听),把(底层逻辑)视图对应的内容进行更新

(例如倒计时结束后,某一JS逻辑终止)

·而用户操作(底层逻辑)视图时,(ViewModel监听)通知数据改变

(例如用户操作了点击购物车增加了一件商品)

vue结构:

任何Vue程序都需要至少一个Vue实例对象,然后在内部设置各种属性和方法,以及生命周期的控制。

==============

vue实例对象

Var vm = new Vue({

//选项

})

在实例化VUE时,需要传入一个选项对象(包含数据、模板挂载元素、方法、生命周期钩子)

https://cn.vuejs.org/v2/api/

El对应的标签根结点

Var vm = new Vue({

El: 'app'

})

el用来放置一个选择器,控制能够管理的范围!

data对象

Var vm = new vue({

El: '#app',

Data:{

Message: hello vue'

}

})

将来页面上绑定的数据就是data里的数据

VUE会代理data对象的所有属性(vue代理属性是怎么实现的?)

答:

Vm.message = 'aaa';//可以直接使用实例对象调用data中的属性进行操作

Vm.$data.message = 'bbb'; //这样也可以操作data中的属性vm.$data就是data对象

以上用法是通过vue实例内置的属性和方法来操作data,为了区分自己的属性,要加$

Methods

Var vm = new vue({

El: '#app',

Data:{

Message: hello vue'

},

Methods:{

Test1:function(){

Console.log(this);

},

//建议写法:

Test2(){

console.log(this);

}

}

})

methods是方法,只要调用它,函数就会执行。

当data中对应数据发生改变时,methods里的值也会产生变化

只需要直接调用即可vm.test1(); //vm.test2()

文本插值

#一定需要有返回值

{{  10 + 20 }}  //  {{Math.random() > 0.5}}

指令

带有v-前缀的特殊属性。指令属性的值预期是单个JavaScript表达式

当表达式的值(数据发生变化),(响应式的)作用于DOM

1.V-text

更新元素的textContent。如果需要更新部分的textContent,还需要使用到{{}}插值

先在data中声明Message = "hello"

使用text最好使用这种方式!不要直接在text里写!

//  hello

测试//hello

{{ message }}// hello


哈哈//哈哈

总结,只要设置v-text,那么元素一定会被替换成指定的文本。

1.V-model

双向数据绑定,一般用于部分表单控件

(输入框输入什么,上面应的部分也显示/删除什么)

1.V-once

只渲染元素和组件一次。随后的重新渲染,元素/组件以及所有的子节点将会被视为静态内容并且跳过。可以用于优化更新性能。

也就是说。只要被VUE使用过的内容,下一次VUE其他指令将对他无效!

4.   v-bind

如果是属性绑定的话,那么使用v-bind

豆瓣电影

测试

#在这里titel:里可以指定字符串!

→→→→→→→→→→→→→→→→→→→→→→→→→→→→

5.v-show

根据表达式的(true / false),切换元素的display CSS属性。

#案例分析

# -选择按钮-文本内容是开始-onclick时调用(methods)里的函数

# v-show

1.通过(methods)函数调用时产生变化时

2.判断isShow的布尔值true和false .

3.从而驱动页面视图来完成对页面元素CSS状态的动态变化

varvm= newVue({

el:"#app",

data:{

isShow: false,

},

methods:{

toggle:function() {

this.isShow= !this.isShow

#当点击事件触发的时候,isShow为true

}

}

});

V-指令之流程控制!

1.V-if:

1.v-if完全根据表达式的值在DOM中生成或移除一个元素。

2.如果v-if表达式赋值为false,那么对应的元素就会从DOM中移除;

3.否则,对应元素的一个克隆将被重新插入DOM中。

4.如果元素是,那么将提出它的内容荣作为条件块

·V- if和v- show不同的是

·v-if是真实的创建和销毁元素

·V-show是CSS属性的变化,但是元素还是一直存在的

v-if判断

第一个

第二个

第三个

varvm= newVue({

el:"#app",

data:{

isShow: false,

if_flag: true

},

methods:{

zhaqi:function() {

this.if_flag= !this.if_flag

}

}

});

===============================================================

2.v-else

第一个

第二个

第三个

意思是

·只要结果是true那么IF的条件块就会出现

·但是如果结果是false那么else的条件块会出现,IF的就会消失!

3.v-else-if

W

RL

J

freedom

·如果IF条件符合,就生成W

·一直到都不符合,生成freedom

For循环

1.渲染列表,必须使用特定语法:

’变量‘in ’列表‘

{{ tab.text}}

==============

varvm= newVue({

el:"#app",

data:{

tabs:[{

text:'第一个'

}, {

text:'第二个'

}, {

text:'第三个'

}]

}

});

2.渲染对象

#循环数组里的内容和下标

#判断下标是第二个对象

#输出对象的“icon”属性

{{ item.icon }}

#青岛大学

var vm = new Vue({

el: "#app",

data: {

demo_class: [{

"name": "2017年12月5日",

"icon": "上海大学",

"time": "金融",

"type": "陆家嘴"

}, {

"name": "2017年12月9日",

"icon": "青岛大学",

"time": "计算机",

"type": "浦东"

}]

}

});

=========

3循环嵌套

#经典案例—九九乘法表实现循环

{{ i+"*"+j+"="+(i*j) }}

# div是一行(因为是行内块)

#   span是行内自动排列(因为是行内元素)

#I in  9 (这里的9,VUE默认为1-9)

4.v-on点击事件

事件绑定,事件触发的方法需要使用VUE实例中定义methods属性

这里可以简写:

< inputtype="button" value="text" @click="data中触发的方法" />

也可以直接写JS表达式:

< inputtype="button" value="可以直接写计算模式" @click="isShow=! isShow" />

上一篇下一篇

猜你喜欢

热点阅读