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 数据预处理是深度学习中非常重要的一 ...
随机推荐
- CNN 防止过拟合的方法
CNN 防止过拟合的方法 因为数据量的限制以及训练参数的增多,几乎所有大型卷积神经网络都面临着过拟合的问题,目前常用的防止过拟合的方法有下面几种: 1. data augmentation: ...
- MySQL_使用时遇到的问题汇总
一.data too long for column 'name' at row 1 1.现象:把数据库的字符集编码设置为utf-8,通过DOS界面向表的某一列插入汉字时会遇到类似 data too ...
- wps文档怎样去除广告
安装完 WPS 之后右键—属性—打开文件夹位置(如图) 接下来进入 10.1.0.6929 文件夹内,再次进入 office6 文件夹内,找到 wpscenter 应用程序,将其删除.此应用包含定时弹 ...
- 08 nginx Location总结图解
- python获取shell输出(转)
From:http://www.cnblogs.com/snow-backup/p/5035792.html python中获取shell命令输出的方法: 1. import subproces ...
- 嵌入式开发之simulation--- 双目移动dsp机器人
http://foundy.blog.163.com/blog/static/263383442014112391130207/
- 很全的php数组操作方法
一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...
- XML5632 : Only one root element is allowed. Line: 1, Column 1
奇葩啊, 最后查出来是因为有一个svg文件名对不上...
- pycharm的安装和破解
前提: 为了学习爬虫,单独下载了一个pycharm编辑器,所以就有了这篇文章,和PHPstorm的安装和破解及其类似, 如有想了解PHPstorm的安装破解可参考我的另一篇博文:http://www. ...
- 微信小程序事件
微信小程序事件1.什么是事件2.事件类别3.事件冒泡4.事件绑定5.事件对象详解笔记:1.事件是一种用户的行为,是一种通讯方式.2.事件类别: 点击事件:tap 长按事件:longtap ...