vue.js及项目实战[笔记]— 03 vue.js插件
一. vue补充
1. 获取DOM元素
- 救命稻草,
document.querySelector - 在template中标示元素`
ref = "xxx" - 在要获取的时候,
this.$refs.xxx获取元素- 创建组件,装载DOM,用户点击按钮
ref在DOM上获取的是原生DOM对象ref在组件上获取的是组件对象$el是拿其DOM- 这个对象就相当于我们平时玩的this,也可以直接调用函数
总结:
$属性:$refs获取组件内的元素
$parent:获取当前组件对象的父组件
$children:获取子组件
$root:获取new Vue 的实例 vm
$el:组件对象的DOM元素
重点:理解 $nextTick 的作用,参考:
Vue.nextTick 的原理和用途
二. 路由
1. 路由原理
- 传统开发方式url改变后立刻发起请求,响应整个页面,渲染整个页面
SPA锚点值改变后不会发起请求,发起ajax请求,局部改变页面数据- 页面不跳转,用户体验更好
2. SPA
- single page application(单页面应用程序)
- 前端路由
- 锚点值监视
- ajax获取动态数据
- 核心点是锚点值
- 前端框架Vue/angular/react都很适合开发单页面程序
3. 基本使用
vue-router- 其实vue的核心插件
- 1. 下载
npm i vue-router -S - 2. (重要):安装插件
Vue.use(VueRouter) - 3. 在main.js中引入
vue-router对象:import router from './x.js' - 4. 创建路由对象
var router = new VueRouter() - 5. 配置路由规则
router.addRouters([路由对象])- 路由对象
{path:'锚点值',component:要(填坑)现实的组件}
- 路由对象
- 6. 将配置好的路由对象交给
Vue- 在
options中传递->key叫做router
- 在
- 7.留坑(使用组件)
<router-view></router-view>
4. router-link
to- 帮助我们生成
a标签的href - 锚点值代码维护不方便,如果需要改变锚点值名称
- 则需要改变[使用次数+1(配置规则)]个地方的代码
### 5. 命名路由
- 则需要改变[使用次数+1(配置规则)]个地方的代码
- 1. 给路由对象一个名称
{name:'home',path:'/home',component:Home} - 2. 在
router-link的to属性中描述这个规则<router-link :to="{name:'name'}"></router-link>- 通过名称找路由对象,获取其path,生成自己的href
- 大大降低维护成本,锚点值改变只用在main.js中改变path属性即可
阶段总结:
** vue-router使用步骤:
1. 引入
2. 安装插件
3. 创建路由实例
4. 配置路由规则
5. 将路由关联Vue
6. 填坑
** router-link to = "/xxx"命名路由:
1. 在路由规则对象中加入name属性
2. 在router-link中 :to="{name:'xxx'}"
** 生僻API梳理:
1. Vue.use(插件对象); // 过程中会注册一些全局组件,及给vm或者组件对象挂载属性
2. 给vm及组件对象挂载的方式:
Object.defineProperty(Vue.prototype,'$router',{
get:function(){
return 自己的router对象
}
})
重点:vue.js关于Object.defineProperty的利用原理,参考:
Object.defineProperty()
6. 参数router-link
Vue.prototype.xxx = {add:fn}- 所有组件中,使用
this.xxx就能拿到这个对象 - 查询字符串
- 1. 配置:
:to="{name:'detail',query:{id:hero.id}}" - 2. 规则
{name:'detail',path:'/detail',component:Detail} - 3. 获取
this.$route.query.id - 4. 生成
<a href="/detail?id=1">
- 1. 配置:
- path方式
- 1. 配置
:to="{name:'detail',params:{id:hero,id}}" - 2. 规则
{name:'detail',path:'detal/:id'} - 3. 获取
this.$route.params.id - 4. 生成
<a href="detail/1">
- 1. 配置
- 查询字符串配置参数
- router-link一次
- 获取的时候一次
- path方式配置参数
- router-link一次
- 规则配置的时候声明位置
- 获取的时候一次
- 总结书写代码注意事项
- path方式需要在路由规则中声明位置
7. vue-router中的对象
$route路由信息对象,只读对象$router路由操作对象,只写对象
8. 路由嵌套
- 市面上所谓的用单页面应用框架开发多页应用
- 潜逃路由
- 案例
- 进入我的主页显示:电影/歌曲
- 代码思想
- 1.
router-view的细分router-view第一层,包含一个router-view
- 2. 每一个坑挖好了,要对应单独的组件
- 1.
9. 知识点介绍
- 路由
meta元素数据 ->meta是对于路由规则是否需要验证权限的配置- 路由对象中和name属性同级
{meta:{isChecked:true}}
- 路由对象中和name属性同级
- 路由钩子 -> 权限控制的函数执行时期
- 每次路由匹配后,渲染组件到
router-view之前 router.beforeEach(function(to,from,next){ })
- 每次路由匹配后,渲染组件到
10. 编程导航
- 1. 跳转到指定的锚点,并显示页面
this.$router.push({name:'xxx',query:{id:1},params:{name:'abc'}}) - 2. 配置规则
{name:'xxx',path:'/xxx/:name'} - 3. 根据历史记录前进后退
this.$router.go(-1|1)- 1代表前进,-1代表后退
vue.js及项目实战[笔记]— 03 vue.js插件的更多相关文章
- vue.js及项目实战[笔记]— 01 vue.js
一. vue基础 1. 历史介绍 angular 09年,年份较早,一开始大家是拒绝的 react 2013年,用户体验较好,直接拉到一堆粉丝 vue 2014年,用户体验较好 前端框架与库的区别 j ...
- vue.js及项目实战[笔记]— 02 vue.js基础
一. 基础 1. 注册全局组件 应用场景:多出使用的公共性能组件,就可以注册成全局组件,减少冗余代码 全局APIVue.component('组件名','组件对象') 2.附加功能:过滤器&监 ...
- vue.js及项目实战[笔记]— 05 WebPack
一. 历史介绍 1. 规范 AMD Commonjs||CMD UMD 参考:认识AMD.CMD.UMD.CommonJS 2. 工具 npm bower webpack browserify 参考: ...
- vue.js及项目实战[笔记]— 04 axios
一. axios 1. 基本使用 axios.method('url',[,...data],options) .then(function(res){ }) .catch(function(err) ...
- Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器
最近,SDK支付等接入差不多了,就从Unity3D生成IPA (企业版License), 然,需要手动执行的PostEvents竟然多大10项+, 这些我默默的承受了1周时间,每次约浪费20分钟-额外 ...
- Unity3D项目实战笔记(5):延时功能的几种实现
我所做过的系统,分单机版系统(2005年).CS系统(2010年).实时系统(2015年),各个系统均有“延时”功能:定时调度的: 本博客说的是实时系统中的延时功能(基于Unity3D游戏引擎). 在 ...
- Spring Boot +Vue 项目实战笔记(一):使用 CLI 搭建 Vue.js 项目
前言 从这篇文章开始,就进入真正的实践了. 在前端项目开发中,我们可以根据实际情况不同程度地使用 Vue.利用 Vue CLI(或写成 vue-cli,即 Vue 脚手架)搭建出来的项目,是最能体现 ...
- vue.js+koa2项目实战(一)创建项目和elementUI配置
前端采用vuex+element-ui: 后端采用koa2+restfulAPI+sequlize: (一)项目介绍 宠物社区 1.社区 2.好友 3.说说 4.宠粮 5.健康 (二)项目框架 1.V ...
- Spring Boot +Vue 项目实战笔记(二):前后端结合测试(登录页面开发)
前言:关于开发环境 每位 Coder 都有自己偏好的开发工具,从大的方面划分主要有文本编辑器流和 IDE 流两种,我有一段时间也喜欢用编辑器(Sublime Text.Vim),但对我来说开发效率确实 ...
随机推荐
- rabbitmq在ios中实战采坑
1. rabbitmq在ios中实战采坑 1.1. 问题 ios使用rabbitmq连接,没过多久就断开,并报错.且用android做相同的步骤并不会报错,错误如下 Received connecti ...
- Oracle的nvl函数和nvl2函数
一.基本语法 介绍一下oracle的nvl函数和nvl2函数. nvl函数 nvl函数基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1. nvl2函数 nvl2函 ...
- 机器学习入门 - Google的机器学习速成课程
1 - MLCC 通过机器学习,可以有效地解读数据的潜在含义,甚至可以改变思考问题的方式,使用统计信息而非逻辑推理来处理问题. Google的机器学习速成课程(MLCC,machine-learnin ...
- 带你一文了解Python中的运算符
运算符 目标 算数运算符 比较(关系)运算符 逻辑运算符 赋值运算符 运算符的优先级 数学符号表链接:https://zh.wikipedia.org/wiki/数学符号表 01. 算数运算符 是完成 ...
- [原创]K8Cscan插件之FTP弱口令扫描
[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...
- 使用maven插件构建docker镜像
为什么要用插件 主要还是自动化的考虑,如果额外使用Dockerfile进行镜像生成,可能会需要自己手动指定jar/war位置,并且打包和生成镜像间不同步,带来很多琐碎的工作. 插件选择 使用比较多的是 ...
- mstsc远程报:这可能是由于CredSSP 加密Oracle修正的两种完美解决方法
win10很完美,用的也很舒服!当然人无完人,也总有不尽如人意的时候.比如说我们经常用的远程mstsc,就出现了一个坑,既然出现坑了,我们就得把坑解决掉吧!下面就记录一下这个坑的解决方法. 本文地址: ...
- mysql 开发基础系列22 SQL Model
一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql model 定义了mysql应用支持的sql语法,数据校验等,这样更容易在不同的环境中使用mysql. sql ...
- Linux常用命令英文全称与中文解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法. pwd:Print working directory 意思是密码. su:Swith user 切换用户,切换到root用户 ...
- 详解Maven用户的配置settings.xml
Maven用户设置 作者其他技术文章 1)Oracle性能优化之查询语句通用原则 2)Redis常用命令 3) SpringCloud入门之常用的配置文件 application.yml和 boots ...