# 1. Vue.js是什么?

1). 一位华裔前Google工程师(尤雨溪)开发的前端js库

2). 作用: 动态构建用户界面

3). 特点:

* 遵循MVVM模式

* 编码简洁, 体积小, 运行效率高, 移动/PC端开发

* 它本身只关注UI, 可以轻松引入vue插件和其它第三库开发项目

4). 与其它框架的关联:

* 借鉴angular的模板和数据绑定技术

* 借鉴react的组件化和虚拟DOM技术

5). vue包含一系列的扩展插件(库):

* vue-cli: vue脚手架

* vue-resource(axios): ajax请求

* vue-router: 路由

* vuex: 状态管理

* vue-lazyload: 图片懒加载

* vue-scroller: 页面滑动相关

* mint-ui: 基于vue的组件库(移动端)

* element-ui: 基于vue的组件库(PC端)

# 2. 基本使用

1). 引入vue.js

2). 创建Vue实例对象(vm), 指定选项(配置)对象

el : 指定dom标签容器的选择器

data : 指定初始化状态数据的对象/函数(返回一个对象)

3). 在页面模板中使用{{}}或vue指令

# 3. Vue对象的选项

## 1). el

指定dom标签容器的选择器

Vue就会管理对应的标签及其子标签

## 2). data

对象或函数类型

指定初始化状态属性数据的对象

vm也会自动拥有data中所有属性

页面中可以直接访问使用

数据代理: 由vm对象来代理对data中所有属性的操作(读/写)

## 3). methods

包含多个方法的对象

供页面中的事件指令来绑定回调

回调函数默认有event参数, 但也可以指定自己的参数

所有的方法由vue对象来调用, 访问data中的属性直接使用this.xxx

## 4). computed

包含多个方法的对象

对状态属性进行计算返回一个新的数据, 供页面获取显示

一般情况下是相当于是一个只读的属性

利用set/get方法来实现属性数据的计算读取, 同时监视属性数据的变化

如何给对象定义get/set属性

在创建对象时指定: get name () {return xxx} / set name (value) {}

对象创建之后指定: Object.defineProperty(obj, age, {get(){}, set(value){}})

## 5). watch

包含多个属性监视的对象

分为一般监视和深度监视

xxx: function(value){}

xxx : {

deep : true,

handler : fun(value)

}

另一种添加监视方式: vm.$watch('xxx', function(value){})

# 4. 过渡动画

利用vue去操控css的transition/animation动画

模板: 使用<transition name='xxx'>包含带动画的标签

css样式

.fade-enter-active: 进入过程, 指定进入的transition

.fade-leave-active: 离开过程, 指定离开的transition

.xxx-enter, .xxx-leave-to: 指定隐藏的样式

编码例子

.xxx-enter-active, .xxx-leave-active {

transition: opacity .5s

}

.xxx-enter, .xxx-leave-to {

opacity: 0

}

<transition name="xxx">

<p v-if="show">hello</p>

</transition>

# 5. 生命周期

vm/组件对象

生命周期图

主要的生命周期函数(钩子)

created() / mounted(): 启动异步任务(启动定时器,发送ajax请求, 绑定监听)

beforeDestroy(): 做一些收尾的工作

# 6. 自定义过滤器

## 1). 理解

对需要显示的数据进行格式化后再显示

## 2). 编码

1). 定义过滤器

Vue.filter(filterName, function(value[,arg1,arg2,...]){

// 进行一定的数据处理

return newValue

})

2). 使用过滤器

<div>{{myData | filterName}}</div>

<div>{{myData | filterName(arg)}}</div>

# 7. vue内置指令

v-text/v-html: 指定标签体

* v-text : 当作纯文本

* v-html : 将value作为html标签来解析

v-if v-else v-show: 显示/隐藏元素

* v-if : 如果vlaue为true, 当前标签会输出在页面中

* v-else : 与v-if一起使用, 如果value为false, 将当前标签输出到页面中

* v-show: 就会在标签中添加display样式, 如果vlaue为true, display=block, 否则是none

v-for : 遍历

* 遍历数组 : v-for="(person, index) in persons"

* 遍历对象 : v-for="value in person"   $key

v-on : 绑定事件监听

* v-on:事件名, 可以缩写为: @事件名

* 监视具体的按键: @keyup.keyCode   @keyup.enter

* 停止事件的冒泡和阻止事件默认行为: @click.stop   @click.prevent

* 隐含对象: $event

v-bind : 强制绑定解析表达式

* html标签属性是不支持表达式的, 就可以使用v-bind

* 可以缩写为:  :id='name'

* :class

* :class="a"

* :class="{classA : isA, classB : isB}"

* :class="[classA, classB]"

* :style

:style="{color : color}"

v-model

* 双向数据绑定

* 自动收集用户输入数据

ref : 标识某个标签

* ref='xxx'

* 读取得到标签对象: this.$refs.xxx

# 8. 自定义指令

## 1). 注册全局指令

Vue.directive('my-directive', function(el, binding){

el.innerHTML = binding.value.toUpperCase()

})

## 2). 注册局部指令

directives : {

'my-directive' : function(el, binding) {

el.innerHTML = binding.value.toUpperCase()

}

}

## 3). 使用指令

<div v-my-directive='xxx'>

Vue.js核心概念的更多相关文章

  1. vue.js核心最基本的功能

    Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统: , text: , text: , text: '随便其它什么人吃的东西' } ] }}) 蔬菜 奶酪 随便其 ...

  2. Vue学习系列(一)——初识Vue.js核心

    前言 vue.js是一套构建用户界面的渐进式框架,vue.js的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件. vue通过DOM事件操作和指令来进行视图层和模型层的相互通讯,会为每一 ...

  3. JS核心概念

    Javascript本质第一篇:核心概念   很多人在使用Javascript之前都至少使用过C++.C#或Java,面向对象的编程思想已经根深蒂固,恰好Javascript在语法上借鉴了Java,虽 ...

  4. 4 Vue.js 核心理念:数据驱动界面

    1 style样式放在body里面 <style type="text/css"> .ui.segment.container { width:700px; } p { ...

  5. Vue.js下载方式及基本概念

    Vue.js 简介 说明及下载 Vue.js使用文档已经写的很完备和详细了,通过以下地址可以查看: https://cn.vuejs.org/v2/guide/ vue.js如果当成一个库来使用,可以 ...

  6. 第1章-初识Vue.js

    一.初识Vue 1.1.本次我们学习的内容 常用指令:vue中最基础的内容 交互: 网络请求 组件: 是vue.js 这个框架 最核心,最精华的内容,因为vue呐,它在所有的框架中是把组件化做到了极致 ...

  7. 更轻更快的Vue.js 2.0与其他框架对比(转)

    更轻更快的Vue.js 2.0 崭露头角的JavaScript框架Vue.js 2.0版本已经发布,在狂热的JavaScript世界里带来了让人耳目一新的变化. Vue创建者尤雨溪称,Vue 2.0  ...

  8. 前端之Vue.js库的使用

    vue.js简介 Vue.js读音 /vjuː/, 类似于 view Vue.js是前端三大新框架:Angular.js.React.js.Vue.js之一,Vue.js目前的使用和关注程度在三大框架 ...

  9. Vue.JS 对比其他框架

    Angular 选择 Vue 而不选择 Angular,有下面几个原因,当然不是对每个人都适合: 在 API 与设计两方面上 Vue.js 都比 Angular 简单得多,因此你可以快速地掌握它的全部 ...

随机推荐

  1. C/C++ 合法整数与字符

    一.C语言中的合法整型 首先C语言中的整型有三种表示方式:十进制.八进制和十六进制.(C语言中没有表示二进制的整型) 十进制: 如 int a = 63; //一个正常的整型 八进制: 如果想用8进制 ...

  2. 跨平台c++/boost/asio 简单的HTTP POST请求 客户端模型

    作为一个呼应,写一个c++版本的同步http post客户端功能,如果你需要纯C版本,移步这里 linux下纯C简单的HTTP POST请求 客户端模型 讲解一下基本的的http post协议 通过\ ...

  3. January 14 2017 Week 2nd Saturday

    Don't try so hard, the best things come when you least expect them to. 不要着急,最好的总会在最不经意时出现. The secon ...

  4. ZT 设计模式六大原则(6):开闭原则

    ZT 设计模式六大原则(6):开闭原则 分类: 设计模式 2012-02-27 08:48 24870人阅读 评论(72) 收藏 举报 设计模式扩展框架编程测试 定义:一个软件实体如类.模块和函数应该 ...

  5. 用eclipse pydev 创建一个新py文件时 文件的coding设置问题

    问题: 当安装好eclipse和pydev后,创建一个project, 创建一个新的py文件,文件头都会自带中文时间.这样在编译的时候会报错. 解决办法之一: 通过设置,可以使新建的文件的文件头自动带 ...

  6. Adobe flash player 因过期而遭到阻止解决办法

    最近使用谷歌浏览器时总是提示Adobe flash player 因过期而遭到阻止,这让人很头痛,基本上就是打开一个网页就会弹出一个提示,下面是解决办法. 问题的截图界面: 解决方法:在chrome浏 ...

  7. php无极限分类函数

    /** * [make_tree description] * @Author Lerko * @DateTime 2017-04-01T14:57:24+0800 * @param [type] $ ...

  8. MyBatis框架(4)全局文件

    本次全部学习内容:MyBatisLearning   全局配置文件(本次案例中):

  9. shiro权限配置的细节问题&认证

    细节: ---[urls]部分配置,其格式是    url=拦截器[参数] ,拦截器[参数] ---如果当前请求的 url 匹配 [urls] 部分或者某个url模式,将会执行配置的拦截器 ---an ...

  10. Kali-linux攻击WordPress和其他应用程序

    今天越来越多的企业利用SAAS(Software as a Service)工具应用在他们的业务中.例如,他们经常使用WordPress作为他们网站的内容管理系统,或者在局域网中使用Drupal框架. ...