Vue.js 基础部分

### Vue.js 基础部分

## 一、 Vue.js 简介

### 1. Vue.js 是什么

**Vue.js**也称为 Vue,读音/vju:/,类似 view,错误读音 v-u-e

版本: v2.6

- 是一个构建用户界面的框架

- 是一个轻量级 MVVM(Model-View-ViewModel)框架,和 angular、react 类似,其实就是所谓的数据双向绑定

- 数据驱动+组件化的前端开发(核心思想)

- 通过简单的 API 实现**响应式的数据绑定**和**组合的视图组件**

- 更容易上手、小巧

参考:[官网](https://cn.vuejs.org/)

#### MVVM框架

1.1定义:

Mvvm定义MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。

【模型】指的是后端传递的数据。

【视图】指的是所看到的页面。

【视图模型】mvvm模式的核心,它是连接view和model的桥梁。

它有两个方向:

一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。

二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。

实现的方式是:DOM 事件监听。这两个方向都实现的,我们称之为数据的双向绑定。

Vue就是基于MVVM模式实现的一套框架,

在vue中:Model:指的是js中的数据,如对象,数组等等。

View:指的是页面视图

viewModel:指的是vue实例化对象

1.2总结:

在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。

并且MVVM中的View 和 ViewModel可以互相通信。MVVM流程图如下:

### 2.vue 和 angular 的区别

#### 2.1 angular

- 上手较难

- 指令以 ng-xxx 开头

- 所有属性和方法都存储在\$scope 中

- 由 google 维护

#### 2.2 vue

- 简单、易学、更轻量

- 指令以 v-xxx 开头

- HTML 代码+JSON 数据,再创建一个 vue 实例

- 由个人维护:**尤雨溪**,华人,目前就职于阿里巴巴,2014.2 开源了 vue.js 库

![尤雨溪](https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=d49c7e60ee1190ef15f69a8daf72f673/4afbfbedab64034f29596c8ba6c379310b551da2.jpg)

共同点:`都不兼容低版本IE`,`对 seo 搜索引擎不友好`

对比:GitHub 上 vue(156k) 的 stars 数量大约是 angular(59.6k) 的两倍多

## 二、起步

### 1. 下载核心库 vue.js

npm init --yes

npm install vue --save

版本 v2.6.11 目前最新版本(2020.2.2)

vue2.0和1.0相比,最大的变化就是引入了Virtual DOM(虚拟DOM),页面更新效率更高,速度更快

### 2. Hello World(对比 angular)

#### 2.1 angular 实现

js:

let app=angular.module(‘myApp‘,[]);

app.controller(‘MyController‘,[‘$scope‘,function($scope){

$scope.msg=‘Hello World‘;

}]);

html:

<html ng-app="myApp">

<div ng-controller="MyController">

{{msg}}

</div>

</html>

#### 2.2 vue 实现

js:

new Vue({

el:‘#itany‘, //指定关联的选择器,进行挂载

data:{ //存储数据

msg:‘Hello World‘,

name:‘tom‘

}

});

html:

<div id="itany">

{{msg}}

</div>

### 3. 安装 vue-devtools 插件,便于在 chrome 中调试 vue

直接将vue-devtools解压缩,然后将文件夹中的chrome拖放到扩展程序中(更多工具--扩展程序 )

或者直接在浏览器中输入 chrome://extensions/打开

//配置是否允许vue-devtools检查代码,方便调试,生产环境中需要设置为false

Vue.config.devtools=false;

Vue.config.productionTip=false; //阻止vue启动时生成生产消息

## 三、 常用指令

### 1. 什么是指令?

用来扩展html标签的功能

angular中常用的指令:

ng-model

ng-repeat

ng-click

ng-show/ng-hide

ng-if

### 2. vue 中常用的指令

- v-model

双向数据绑定,一般用于表单元素

在表单 <input>、<textarea> 及 <select> <checkbox> 元素上创建双向数据绑定。

代码演示:02.html

- v-for

对数组或对象进行循环操作,使用的是 v-for,不是 v-repeat

注:在 vue1.0 中提供了隐式变量,如$index、$key

在 vue2.0 中去除了隐式变量,已被废除

代码演示 代码演示:03.html

- v-on

用来绑定事件,用法:v-on:事件="函数"

代码演示:04.html

- v-show/v-if

用来显示或隐藏元素,v-show 是通过 display 实现,v-if 是每次删除后再重新创建,与 angular 中类似

代码演示:05.html

## 四、 练习:用户管理

使用BootStrap+Vue.js

06-练习.html

## 五、 事件和属性

### 1. 事件

#### 1.1 事件简写

v-on:click=""

简写方式 @click=""

#### 1.2 事件对象\$event

包含事件相关信息,如事件源、事件类型、偏移量

target、type、offsetx

代码演示:07.html

#### 1.3 事件冒泡

阻止事件冒泡:

a)原生js方式,依赖于事件对象  stopPropagation

b)vue方式,不依赖于事件对象

@click.stop

代码演示:08.html

#### 1.4 事件默认行为

阻止默认行为:

a)原生js方式,依赖于事件对象 preventDefault

b)vue方式,不依赖于事件对象

@click.prevent

#### 1.5 键盘事件

回车:@keydown.13 或@keydown.enter

上:@keydown.38 或@keydown.up

默认没有@keydown.a/b/c...事件,可以自定义键盘事件,也称为自定义键码或自定义键位别名

代码演示:09.html

#### 1.6 事件修饰符

在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求

Vue.js 为 v-on 提供了事件修饰符。之前提过,修饰符是由点开头的指令后缀来表示的。

.stop - 调用 event.stopPropagation()。 阻止冒泡行为的事件传播

.prevent - 调用 event.preventDefault()。 阻止默认行为

.{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。

.native - 监听组件根元素的原生事件。

.once - 只触发一次回调。

<!-- 阻止单击事件继续传播 -->

<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->

<form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 -->

<a v-on:click.stop.prevent="doThat"></a>

<!-- 添加事件监听器时使用事件捕获模式 -->

<!-- 即元素自身触发的事件先在此处理,然后才交由内部元素进行处理 -->

<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->

<!-- 即事件不是从内部元素触发的 -->

<div v-on:click.self="doThat">...</div>

<!-- 点击事件将只会触发一次 -->

<a v-on:click.once="doThis"></a>

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->

<!-- 而不会等待 `onScroll` 完成  -->

<!-- 这其中包含 `event.preventDefault()` 的情况 -->

<div v-on:scroll.passive="onScroll">...</div>

这个 .passive 修饰符尤其能够提升移动端的性能。

按键修饰符

### 2. 属性

#### 2.1 属性绑定和属性的简写

v-bind 用于属性绑定, v-bind:属性=""

属性的简写:

v-bind:src="" 简写为 :src=""

代码演示:10.html

#### 2.2 class 和 style 属性

绑定class和style属性时语法比较复杂:

代码演示:11.html

## 六、 模板

### 1. 简介

Vue.js使用基于HTML的模板语法,可以将DOM绑定到Vue实例中的数据

模板就是{{}},用来进行数据绑定,显示在页面中

也称为Mustache语法

### 2. 数据绑定的方式

a.双向绑定

v-model

b.单向绑定

方式1:使用两对大括号{{}},可能会出现闪烁的问题,可以使用v-cloak解决

方式2:使用v-text、v-html

### 3. 其他指令

v-once 数据只绑定一次

v-pre 不编译,直接原样显示

代码演示:12.html

## 七、 过滤器

### 1. 简介

用来过滤模型数据,在显示之前进行数据处理和筛选

语法:{{ data | filter1(参数) | filter2(参数)}}

### 2. 关于内置过滤器

vue1.0中内置许多过滤器,如:

currency、uppercase、lowercase

limitBy

orderBy

filterBy

vue2.0中已经删除了所有内置过滤器,全部被废除

如何解决:

a.使用第三方工具库,如lodash、date-fns日期格式化、accounting.js货币格式化等

b.使用自定义过滤器

### 3. 自定义过滤器

分类:全局过滤器、局部过滤器

代码演示:13.html

#### 3.l 自定义全局过滤器

使用全局方法Vue.filter(过滤器ID,过滤器函数)

#### 3.l 自定义局部过滤器

原文地址:https://www.cnblogs.com/laneyfu/p/12274250.html

时间: 2024-11-05 14:55:38

Vue.js 基础部分的相关文章

Vue.js 基础指令实例讲解(各种数据绑定、表单渲染大总结)——新手入门、高手进阶

Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架--只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动复杂的单页应用.他是基于AnjularJs 编写的,所以和前者的语法特别相似,却又使用简洁了很多. 那今天,我就给大家详细的说道说道这个 Vue.js ,以下是我们这次详解的目录,朋友们可以根据自己的情况选择性阅读,所有操作均附有代码实现. 1. Vue.js 如何绑定到页面中,使用他的功能. 2.

vue.js基础__ mixins 选项

mixins 选项主要应用于新增需求: 在不改变原有方法的基础上,使用mixins 混入选项: - 以点击加1为例,分为局部和全局两种 - 再混入选项中设置updated方法 - updated 方法,会在局部,全局,以及原生方法中设置 - 执行顺序为 全局的updated优先执行,然后局部的updated方法执行,最后原生的updated方法执行 代码示例如下: <!DOCTYPE html> <html lang="en"> <head> <

vue.js基础(继)

今日,将简单地Vue.js指令形成了一个串联使用.Vue.js就是这样,是渐进式的,何为渐进式?简单的指令看起来分厂简单,浅显易懂,但是将指令进行综合,自定义事件,原生事件,子父通信,父子通信,创建实例,创建组件,注册组件,数据定义等等进行融合使用时候缺愈发的复杂.进行项目的书写.模拟.测试.以及UI库的综合使用,布局 UI库使用,通过数据控制功能,看似简单的步骤,实现起来对于初学者来讲,仍难侍候很大难度的.一定要多学多练,多练,在多练.形成自己的编程思想,编程思想非常重要. 新知识补充了VDO

vue,js基础知识

Vue.js是一套构建用户界面(view)的MVVM框架.Vue.js的核心库只关注视图层,并且非常容易学习,非常容易与其他库或已有的项目整合. 1.1 Vue.js的目的 Vue.js的产生核心是为了解决如下三个问题: 解决数据绑定的问题: Vue.js框架生产的主要目的是为了开发大兴单页面应用(SPA:Single Page Application) Angular.js中对PC端支持的比较良好,但是对移动端支持就一般.而Vue.js主要支持移动端,也支持PC端. 3. 它还支持组件化.也就

Vue.js 基础学习

今天我开始了Vue.js 的学习. 那么什么是Vue.js 呢? Vue.js是一套开发Web页面的JavaScript脚本框架.听起来感觉很难,不过据说,Vue.js是Web-Javascript脚本框架中最容易上手的框架.所以我便选择了先来学习这个. 要学习Vue.js首先就要获取库文件了,在网上有很多地方可以找到,我是在bootcdn上找到的 接下来我们通过Vue输出一串Hello World ! 首先引入vue. <script src="https://cdn.bootcss.c

Vue.js基础2

声明式渲染 Vue.js 的核心是一个允许采用简洁的模板语法来声明式的将数据渲染进 DOM: <div id="app"> {{ message }} </div> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) 我们已经生成了我们的第一个 Vue 应用!看起来这跟单单渲染一个字符串模板非常类似,但是 Vue 在背后做了大量工作.现在数据和 DOM 已经被绑定在一起,所有的元素

vue.js基础知识篇(2):指令详解

第三章:指令 1.语法 指令以v-打头,它的值限定为绑定表达式,它负责的是按照表达式的值应用某些行为到DOM上. 内部指令有v-show,v-else,v-model,v-repeat,v-for,v-text,v-el,v-html,v-on,v-bind,v-ref,v-pre,v-cloak,v-if. 2.内部指令 (1)控制元素的显示与否:v-if,v-show.v-else v-if是真实的条件渲染,根据表达式的true/false在DOM中生成或移除一个元素. 第一,这个指令是惰性

vue.js基础知识篇(4):过滤器、class与style的绑定2

代码下载:网盘 欢迎私信 第一章:过滤器 过滤器是对数据进行处理并返回结果的函数. 1.语法 语法是使用管道符"|"进行连接.过滤器可以接收参数,跟在过滤器后面,带引号的参数被当做字符串处理,不带引号的参数被当做数据属性名处理. {{message | filterFunction "arg1" arg2 }} vue.js支持在任何出现表达式的地方添加过滤器. vue.js支持链式调用,上一个过滤器的输出结果作为下一个过滤器的输入.类似于Linux shell的管

vue.js基础知识篇(5):过渡、Method和Vue实例方法

第8章:过渡 1.CSS过渡 2.JavaScript过渡 3.渐进过渡 第9章:method Vue.js的事件一般通过v-on指令配置在HTML中,虽然也可以在js的代码中使用原生的addEventListener方法添加事件监听,但并不推荐,因为它并不符合"关注点分离"的设计理念. 使用v-on指令有几点好处: 通过HTML模板(视图)就能看到js对应的方法;无需手动绑定事件,ViewModel和DOM完全解耦.易于测试;当一个ViewModel被销毁时,所有的事件处理器都会被自