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 数据预处理是深度学习中非常重要的一 ...
随机推荐
- 成长这事儿,不可不说-------Day36
事实上我一直都有一个观点,从我当年刚学抛物线那会就有:人生事实上就是一条轨迹,无非是一些点的集合.只是有些在低谷,有些在高峰,放形象了看,有些熠熠生辉,有些暗淡的几若消逝,有些人总喜欢回头数着过往的痕 ...
- udp广播和多播
使用UDP协议进行信息的传输之前不需要建立链接, 客户端向服务器发送信息时,客户端只需要给出服务器的ip地址和端口号,可以发送信息.至于服务器端是否存在,是否能够收到该报文,客户端根本不用管. 广播( ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的大屏分布式拼接显示系统
其实在接触从12年接触8127系列ipnc 时看到200w和500w的高清像素,我就萌生了视频拼接的兴趣,没想到今年的安博会就有公司推出产品了,它就是上海的环视科技,从他的主页可以看到,明显的有个只能 ...
- swoole创建TCP服务端和客户端
服务端: server.php <?php //创建Server对象,监听 127.0.0.1:9501端口 $serv = new swoole_server("127.0.0 ...
- 将PHP 5.3.3 (cli)升级到PHP 5.6.31 (cli)
centos默认系统安装的是php5.3 [root@sz-local1 scripts]# rpm -qa |grep phpphp-pdo-5.3.3-47.el6.x86_64php-mysql ...
- byte[] 、Bitmap与Drawbale 三者直接的转换
经常遇到这种类似头疼的问题 byte[] .Bitmap与Drawbale 三者直接的转换 1.byte[] ->Bitmap Bitmap Bitmap = BitmapFactory.dec ...
- 【BZOJ4028】[HEOI2015]公约数数列 分块
[BZOJ4028][HEOI2015]公约数数列 Description 设计一个数据结构. 给定一个正整数数列 a_0, a_1, ..., a_{n - 1},你需要支持以下两种操作: 1. M ...
- 【BZOJ2337】[HNOI2011]XOR和路径 期望DP+高斯消元
[BZOJ2337][HNOI2011]XOR和路径 Description 题解:异或的期望不好搞?我们考虑按位拆分一下. 我们设f[i]表示到达i后,还要走过的路径在当前位上的异或值得期望是多少( ...
- EF中几个重要的类:ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager
ObjectContext封装 .NET Framework 和数据库之间的连接.此类用作“创建”.“读取”.“更新”和“删除”操作的网关. ObjectContext 类为主类,用于与作为对象(这些 ...
- 使用memcache进行账号验证服务
适用环境是需要频繁进行账号和请求合法性验证的地方 大致思路: 1.登陆时,服务器端接收一个账号和密码,还可以再加上用户的ip等信息通过md5等加密算法计算出一个定长的字符串作为用来验证的token 2 ...