Vue.js(一)

vue

引入 vue.js" title="vue.js">vue.js

对于制作原型或学习,你可以这样使用最新版本:

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

对于生产环境,我们推荐链接到一个明确的版本号和构建文件,以避免新版本造成的不可预期的破坏:

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>

Vue 介绍

前端主要负责 MVC 中的 V(视图)这一层,主要工作就是和界面打交道,来制作前端页面效果。

Vue.js 是一套构建用户界面的渐进式框架,只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

Node(后端)中的 MVC 与 前端中的 MVVM 之间的区别

MVC 是后端的分层开发概念。

MVVM 是前端视图层的概念,主要关注于视图层分离:

MVVM 把前端的视图层,分为了三部分 Model , View , VM(ViewModel)

Vue项目搭建

一、安装node.js与npm包管理器

二、vue-cli脚手架来搭建

安装vue-cli脚手:

cnpm install -g vue-cli

搭建Vue项目:需要切换到工作空间

vue init webpack [项目名称]

三、在src目录下编写代码

四、安装项目依赖:cnpm install

五、执行 npm run dev 命令,启动项目(热加载)

Vue基本使用

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Vue</title>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>

<body>

<div >

<p>{{msg}}</p>

</div>

</body>

<script>

/**

* 创建Vue实例

*

* app对象即是 MVVM 中的 VM 调度者

*/

var app = new Vue({

el: '#app', //控制的区域

data: { //保存的数据

msg: '你好,明天!'

},

methods:{ //方法

method(){

this.msg="再见,昨天。"

}

}

});

</script>

</html>

插值表达式

v-cloak:解决插值表达式闪烁的问题

<style>

[v-cloak]{

display: none;

}

</style>

<p v-cloak>开头{{msg}}结尾</p>

<h4 v-text="msg"></h4>

默认 v-text 是没有闪烁问题的,v-text会覆盖元素中原本的内容

<p v-html="msg"></p> //msg: '<h1>你好,明天!</h1>'

会将 msg 中的 html 元素解析,而不是直接打印。

v-bind(属性绑定)

使用:

v-bind:

缩写:

:

示例(""中的内容会当做JS代码解释执行):

:title="msg + ',这是追加的内容'"

v-bind:title="msg + ',这是追加的内容'"

v-on(事件绑定)

缩写:

@

使用:

v-on:click="method"

修饰符:

.stop - 调用 event.stopPropagation()。 //阻止冒泡:@click.stop="method"

.prevent - 调用 event.preventDefault()。 //阻止默认事件

.capture - 添加事件侦听器时使用事件捕捉模式。

.self - 只当事件在该元素本身(比如不是子元素)触发时触发回调。

.once - 只触发一次回调。

v-model(双向绑定)

使用(只能在表单元素中触发:input,select,checkbox,textarea):

<input type="text" v-model="msg">

[]表示数组,{}表示对象

class样式(属性绑定)

样式:

<style>

.red {

color: red;

}

.thin {

font-weight: 200;

}

.active {

letter-spacing: 0.5em;

}

</style>

1.直接传递一个数组

<h1 :class="['red', 'thin']">这是一个邪恶的H1</h1>

2.数组中使用三元表达式

<h1 :class="['red', 'thin', flag?'active':'']">这是一个邪恶的H1</h1>

3.数组中嵌套对象

<h1 :class="['red', 'thin', {'active': flag}]">这是一个邪恶的H1</h1>

4.直接使用对象

<h1 :class="{red:true, thin:true}">这是一个邪恶的H1</h1>

内联样式

1.直接在元素上通过 :style 的形式,书写样式对象

<h1 :style="{color: 'red', 'font-size': '40px'}">这是一个善良的H1</h1>

2.将样式对象,定义到 data 中,并直接引用到 :style

在data上定义样式:

data: {

Style1: { color: 'red', 'font-size': '40px'}

}

在元素中,通过属性绑定的形式,将样式对象应用到元素中:

<h1 :style="Style1">这是一个善良的H1</h1>

3.在 :style 中通过数组,引用多个 data 上的样式对象

在data上定义样式:

data: {

Style1: { color: 'red', 'font-size': '40px'},

Style2: { fontStyle: 'italic' }

}

在元素中,通过属性绑定的形式,将样式对象应用到元素中:

<h1 :style="[Style1, Style2]">这是一个善良的H1</h1>

Vue指令之 v-for 和 key 属性

数组:

data: {

list: [1, 2, 3, 4, 5, 6]

}

data: {

list: [

{ age: 1, name: 'zs1' },

{ age: 2, name: 'zs2' },

{ age: 3, name: 'zs3' },

{ age: 4, name: 'zs4' }

]

}

data: {

user: {

id: 1,

name: '托尼·屎大颗',

gender: '男'

}

}

1.迭代数组

<p v-for="(item, i) in list">索引:{{i}} --- 每一项:{{item}}</p>

<ul>

<li v-for="(user, i) in list">索引:{{i}} --- 姓名:{{user.name}} --- 年龄:{{user.age}}</li>

</ul>

2.迭代对象中的属性

<!-- 循环遍历对象身上的属性 -->

<div v-for="(val, key, i) in userInfo">值:{{val}} --- 键:{{key}} --- 索引:{{i}}</div>

3.迭代数字

<p v-for="i in 10">这是第 {{i}} 个P标签</p>

key属性:保证数据的唯一性(v-for 循环的时候,key 属性只能使用 number或者string)

    <div>

<label>Id:

<input type="text" v-model="id">

</label>

<label>Name:

<input type="text" v-model="name">

</label>

<input type="button" value="添加" @click="add">

</div>

<p v-for="item in list" :key="item.id">

<input type="checkbox">{{item.id}} --- {{item.name}}

</p>

data: {

id: '',

name: '',

list: [

{ id: 4, name: '韩非' },

{ id: 5, name: '荀子' }

]

},

methods: {

add() { //添加方法

this.list.unshift({ id: this.id, name: this.name })

}

}

Vue指令之 v-if 和 v-show

v-if 的特点:每次都会重新删除或创建元素。

v-show 的特点: 每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none 样式。

<input type="button" value="toggle" @click="flag=!flag">

<p v-if="flag">aaaaaaaa</p>

<p v-show="flag">bbbbbb</p>

以上是 Vue.js(一) 的全部内容, 来源链接: utcz.com/z/379663.html

回到顶部