Vue 5小时学习小教程
Vue
Vue
Vue是一套用于构建用户界面的渐进式框架, Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。Vue是一个JavaScript MVVM库, 以数据驱动和组件化的思想构建。
本来想学jQuery来着, 但是同事推荐直接学习Vue,所以入了Vue的坑。
数据驱动
jQuery了解了下, jQuery操作元素先是获取元素DOM对象, 然后进行元素操作 , 在Vue中, 元素和数据是双向绑定的, 在实例化Vue对象的同时将元素绑定,数据和元素保持同步, 数据发生改变, 对应页面的元素也会发生改变。
MVVM模式
Model-View-ViewModel
Model: 指的是数据部分,对应到前端相当于JavaScript对象
View: 视图部分,对应前端就是DOM
ViewModel: 连接数据和视图的中间件
数据(Model)和视图(View)是不能直接通讯的,而是需要通过ViewModel来实现双方的通讯。当数据变化的时候,ViewModel能够监听到这种变化,并及时的通知View做出修改。同样的,当页面有事件触发时,ViewModel也能够监听到事件,并通知Model进行响应。ViewModel就相当于一个观察者,监控着双方的动作,并及时通知对方进行相应的操作。
起步
从经典的hello world开始
建立关联之后,页面和数据都是响应式的, 我们在JavaScript的控制台修改app.message的值,页面也会随之发生变化。
指令
Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribute)。
v-bind
v-bind会绑定元素的某个特殊特性
v-if
v-if是条件渲染指令, 根据表达式的真假来删除或插入元素
v-if= ‘expression’ expression是一个返回bool的表达式, 表达式可以是个bool属性, 也可以是个返回bool的运算式
v-for
v-for用来循环渲染, 可以绑定数组的数据来渲染一个项目列表
v-on
v-on用来监听DOM事件
v-model
v-model在表单元素上创建双向数据绑定
无论是修改input的值还是p标签的值, 相应的两边的值都会更新
v-bind和v-on缩写
Vue.js为最常用的两个指令v-bind和v-on提供了缩写的方式
v-bind 可以缩写成一个冒号
v-on可以缩写成@符号
搭建Vue开发环境
- 安装node.js
- 安装vue脚手架 npm install –global vue-cli
- 创建项目 cd到对应项目
vue init webpack vue-demo1 - npm install / cnpm install 安装依赖
- npm run dev
另一种创建项目的方式: (更精简)
- 安装node.js
- 安装vue脚手架 npm install –global vue-cli
- 创建项目 cd到对应项目
vue init webpack-simple vue-demo1 - npm install / cnpm install 安装依赖
- npm run dev
vue项目结构
-node_modules: npm 加载的项目依赖模块
-src: 项目开发目录文件
—assets: 放置一些图片,如logo等。
—app.vue: 项目入口文件, 我们也可以直接将组件写这里
—main.js: 项目的核心文件
-static: 静态资源目录, 如图片 字体等
-test: 初始初始目录, 可删除
-.xxxx文件: 配置文件
-index.html: 首页入口文件
-package.json: 项目配置文件
-README.md: 项目的说明文档
Vue开始
数据绑定, 绑定属性 循环渲染数据
v-for
绑定属性, 绑定class, 绑定style
v-bind
直接显示html
v-html
绑定style
v-bind: class
v-bind:style
双向数据绑定, Vue中ref获取dom节点
vue事件 定义方法 执行方法 获取数据 改变数据 事件对象
v-on绑定事件
两种方法定义及执行
获取data数据
直接使用this获取
事件对象event
e.srcElement 获取当前dom节点
e.srcElement.dataset 获取自定义属性的值
Vue事件结合双向数据绑定实现TODOlist
Vue中的模块化及封装Storage组件实现本地保存
使用loaclStorage来实现本地保存
localStorage.setItem(key, value)
localStorage.getItem(key)
封装storage.js, 在src目录下新建model文件夹, 然后新建storage.js文件
在前端引入storage.js并使用
Vue组件 生命周期函数
在Vue中, 所有的页面都是由组件组成, 组件中包含了HTML,CSS,JavaScript, 组件就是可复用的Vue实例
在src目录下新建文件夹component文件夹来存放组件, 组件名首字母大写,以.vue结尾
Vue组件使用:
- 引入组件
- 挂载组件
- 在模板中使用
Vue完整的生命周期
vue的生命周期
strong text
生命周期函数:
组件挂载以及组件更新,组件销毁的时候触发的一系列的方法, 这些方法就叫生命周期函数
注意: 用的比较多的函数是mounted和beforeDestroy,
mounted: 请求数据 操作dom放在这个里面
beforeDestroy: 页面销毁的时候要保存一些数据, 就可以监听这个生命周期函数
Vue请求数据
vue-resource
官方提供的插件, 使用步骤
- vue-resource : 使用 npm install vue-resource –save 安装
- man.js 引入
import VueResource from ‘vue-resource’
Vue.use(VueResource)
- 使用
支持的HTTP方法和options
vue-resource请求API按照REST风格, 提供了7种API
- get( url, [options] )
- head(url, [options])
- delete(url, [options])
- jsonp(url, [options])
- post(url, [body], [options])
- put(url, [body], [options])
- patch(url, [body], [options])
options对象
发送请求时的options对象包含以下属性
| 参数 | 类型 | 描述 |
| url | string | 请求的URL |
| method | string | 请求的HTTP方法,例如:’GET’, ‘POST’或其他HTTP方法 |
| body | Object, FormData string | request body |
| params | Object | 请求的URL参数对象 |
| headers | Object | request header |
| timeout | number | 单位为毫秒的请求超时时间 (0 表示无超时时间) |
| before | function(request) | 请求发送前的处理函数,类似于jQuery的beforeSend函数 |
| progress | function(event) | ProgressEvent回调处理函数 |
| credentials | boolean | 表示跨域请求时是否需要使用凭证 |
| emulateHTTP | boolean | 发送PUT, PATCH, DELETE请求时以HTTP POST的方式发送,并设置请求头的X-HTTP-Method-Override |
| emulateJSON | boolean | 将request body以application/x-www-form-urlencoded content type发送 |
axios请求数据
第三方插件, 使用步骤
- 安装 npm install axios –save
- 引入 import Axios from ‘axios’
- 使用:
父子组件传值
父组件给子组件传值
- 父组件调用子组件的时候给子组件绑定动态属性
- 在子组件里通过 props接收父组件传过来的数据
父组件主动获取子组件数据方法, 子组件主动获取父组件数据方法
父组件主动获取子组件数据和方法:
- 调用子组件的时候定义一个ref
- 在父组件里通过 this.$refs.header.属性
子组件主动获取父组件数据和方法
非父子组件传值
通过创建Vue实例, 广播和监听实现传值
- 创建Vue实例
- 导入Vue实例并发送广播
- 生命周期函数mounted()监听广播, 拿到数据
Vue路由
vue路由配置
- 安装vue-router
npm install vue-router –save
cnpm install vue-router –save - 引入并Vue.use(VueRouter)(main.js)
import VueRouter from ‘vue-router’
Vue.use(VueRouter) - 配置路由
- 创建组件, 引入组件
- 定义路由
- 实例化VueRouter
4.挂载
- 在APP.vue中添加
- 跳转 router-link
动态路由配置
- 配置动态路由
- 在对应页面获取动态路由的值
GET传值
- 配置动态路由
- 获取对应页面动态路由的值
vue编程式导航
路由嵌套
配置路由
设置router-link
elementUI
使用方法
- 官网http://element-cn.eleme.io/#/zh-CN/component/installation
- 安装 npm i element-ui -S
- 在main.js引入elementui css 和 插件
import ElementUI from ‘element-ui’;
import ‘element-ui/lib/theme-chalk/index.css’; - 看官方文档直接使用
- 配置file.loader
Vue 5小时学习小教程的更多相关文章
- vue 的个人学习小笔记
一.vite2.0+vue3.0+ts 创建.配置 个人公众号文章地址 个人github仓库地址 1.Vite 创建 vue3 项目: 1.1.npm 常用命令 1.npm 查看版本号 npm vie ...
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
Visual Studio 2017中使用正则修改部分内容 最近在项目中想实现一个小工具,需要根据类的属性<summary>的内容加上相应的[Description]特性,需要实现的效 ...
- windows下vue.js开发环境搭建教程
这篇文章主要为大家详细介绍了windows下vue.js开发环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中 ...
- 420小时学习代码之后:如何教你免费自学Python
原文地址:learning-to-code-420-hours-later-how-to-teach-yourself-python-for-free 说明:有些网址需要FQ. 大约在1.5年前,我开 ...
- legend2---开发日志12(vue如何进一步学习)
legend2---开发日志12(vue如何进一步学习) 一.总结 一句话总结:还是得找教程(比如视频),自己摸索太浪费时间,也容易踩坑和抓不住重点 还是得找教程(比如视频),自己摸索太浪费时间,也容 ...
- Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)
理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...
- Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...
- Deep Learning 12_深度学习UFLDL教程:Sparse Coding_exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程.Deep learning:二十六(Sparse coding简单理解).Deep learning:二十七(Sparse coding中关于矩阵的范数求导).Deep ...
- Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)
理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一 ...
随机推荐
- CSS遮罩层,全兼容
<script type="text/javascript"> $(function(){ $('#divLocker').css({ "position&q ...
- spring的xml配置文件出现故障
今天在断网的情况下,spring的applicationContext.xml文件开头部分出现红叉 <span style="font-size:18px;">< ...
- 修改NameNode端口后,hive表查询报错
在进行使用hive查询表数据的时候,抛出异常 hive> select*from blackList;FAILED: SemanticException Unable to determine ...
- CentOS6.4下编译安装Apache2.4+PHP5.6
安装Apache2.4: 首先从 http://httpd.apache.org/download.cgi#apache24下载apache源码包httpd-2.4.4.tar.gz从 http: ...
- Spring WebSocket Support官方文档+翻译
实时更新技术能够应用在很多场景中,比如在浏览器中聊天.股票报价.状态更新.现场直播.这些需求对时间的延迟性都很敏感,但是我们可以发现他们存在这共有的共性. 标准的HTTP请求,是一次请求对应一次相应. ...
- JSP开发中的基础语法
JSP 语法 JSP开发中的基础语法. 脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式: <% 代码片段 %> 或者 ...
- 同样的代码在java和c++中结果不同
#include <iostream> using namespace std; /* run this program using the console pauser or add y ...
- 由浅到深理解ROS(3)-命名空间
全局命名空间: /rosout前面的反斜杠“/”表明该节点名称属于全局命名空间.之所以叫做全局名称因为它们在任何地方(包括代码.命令行工具.图形界面工具等的任何地方)都可以使用.无论这些名称用作众多命 ...
- Python装饰器 计时器记录方法执行性能
import time def timeit(func): def wrapper(): start = time.clock() func() end =time.clock() print 'us ...
- Python 字符串拼接、格式化输出、深浅复制
拼接:"+"号(同类型可拼接) >>>li = [1,2] >>>li + li [1,2,1,2] >>>li*2 [1,2 ...