一. 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. 给路由对象一个名称{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">
  • 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">
  • 查询字符串配置参数
    • router-link一次
    • 获取的时候一次
  • path方式配置参数
    • router-link一次
    • 规则配置的时候声明位置
    • 获取的时候一次
  • 总结书写代码注意事项
    • path方式需要在路由规则中声明位置

7. vue-router中的对象

  • $route 路由信息对象,只读对象
  • $router 路由操作对象,只写对象

8. 路由嵌套

  • 市面上所谓的用单页面应用框架开发多页应用

    • 潜逃路由
  • 案例
    • 进入我的主页显示:电影/歌曲
  • 代码思想
    • 1. router-view的细分

      • router-view第一层,包含一个router-view
    • 2. 每一个坑挖好了,要对应单独的组件

9. 知识点介绍

  • 路由meta元素数据 -> meta是对于路由规则是否需要验证权限的配置

    • 路由对象中和name属性同级{meta:{isChecked:true}}
  • 路由钩子 -> 权限控制的函数执行时期 
    • 每次路由匹配后,渲染组件到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插件的更多相关文章

  1. vue.js及项目实战[笔记]— 01 vue.js

    一. vue基础 1. 历史介绍 angular 09年,年份较早,一开始大家是拒绝的 react 2013年,用户体验较好,直接拉到一堆粉丝 vue 2014年,用户体验较好 前端框架与库的区别 j ...

  2. vue.js及项目实战[笔记]— 02 vue.js基础

    一. 基础 1. 注册全局组件 应用场景:多出使用的公共性能组件,就可以注册成全局组件,减少冗余代码 全局APIVue.component('组件名','组件对象') 2.附加功能:过滤器&监 ...

  3. vue.js及项目实战[笔记]— 05 WebPack

    一. 历史介绍 1. 规范 AMD Commonjs||CMD UMD 参考:认识AMD.CMD.UMD.CommonJS 2. 工具 npm bower webpack browserify 参考: ...

  4. vue.js及项目实战[笔记]— 04 axios

    一. axios 1. 基本使用 axios.method('url',[,...data],options) .then(function(res){ }) .catch(function(err) ...

  5. Unity3D项目实战笔记(10):Unity3D编译IPA的PostEvents–节约时间利器

    最近,SDK支付等接入差不多了,就从Unity3D生成IPA (企业版License), 然,需要手动执行的PostEvents竟然多大10项+, 这些我默默的承受了1周时间,每次约浪费20分钟-额外 ...

  6. Unity3D项目实战笔记(5):延时功能的几种实现

    我所做过的系统,分单机版系统(2005年).CS系统(2010年).实时系统(2015年),各个系统均有“延时”功能:定时调度的: 本博客说的是实时系统中的延时功能(基于Unity3D游戏引擎). 在 ...

  7. Spring Boot +Vue 项目实战笔记(一):使用 CLI 搭建 Vue.js 项目

    前言 从这篇文章开始,就进入真正的实践了. 在前端项目开发中,我们可以根据实际情况不同程度地使用 Vue.利用 Vue CLI(或写成 vue-cli,即 Vue 脚手架)搭建出来的项目,是最能体现 ...

  8. vue.js+koa2项目实战(一)创建项目和elementUI配置

    前端采用vuex+element-ui: 后端采用koa2+restfulAPI+sequlize: (一)项目介绍 宠物社区 1.社区 2.好友 3.说说 4.宠粮 5.健康 (二)项目框架 1.V ...

  9. Spring Boot +Vue 项目实战笔记(二):前后端结合测试(登录页面开发)

    前言:关于开发环境 每位 Coder 都有自己偏好的开发工具,从大的方面划分主要有文本编辑器流和 IDE 流两种,我有一段时间也喜欢用编辑器(Sublime Text.Vim),但对我来说开发效率确实 ...

随机推荐

  1. 微信昵称的emoji的尝试性解决方案

    概述 之前分享过前端页面使用emoji,讨论了前端页面使用emoji的方法,但是微信昵称中的emoji怎么获取和显示呢?我查找了一些资料,把心得记录下来,供以后开发时参考,相信对其他人也有用. 转码问 ...

  2. Kali学习笔记10:端口扫描详解(下)

    上一篇先是介绍了UDP的端口扫描,又谈了TCP的不完全连接端口扫描 https://www.cnblogs.com/xuyiqing/p/9389276.html 接下来我们看看TCP的全连接端口扫描 ...

  3. Mybatis框架七:三种方式整合Spring

    需要的jar包: 新建lib文件夹放入jar包,Build Path-->Add To Build Path之后: 原始Dao开发示例: src下:新建核心配置文件sqlMapConfig.xm ...

  4. maven下载其源代码包并关联

    有时我们的源码可能会失去关联,然后需要我们在当前项目中(含有pom.xml文件的那个目录)按住shift然后在当前项目文件夹空白处右键,选择在此处打开命令输入一下命令: 1. 下载所有在POM中的的s ...

  5. MySQL(3)---MySQL优化

    MySQL优化 一.单表.双表.三表优化 1.单表    首先结论就是,range类型查询字段后面的索引全都无效 (1)建表 create table if not exists article( i ...

  6. java web路径和spring读取配置文件

    此篇博客缘起:部署java web系统到阿里云服务器(ubuntu14.04)的时候,有以下两个问题 找不到自定义的property配置文件 上传图片的时候找不到路径 开发的时候是在windows上的 ...

  7. 解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2

    前言 本篇讲述Main方法,控制台,注释,预处理指令,编程规范等.这些概念比较琐碎,为避免长篇大论,主要以列举要点的方式来说明. 01 Main方法 Main方法并不是所有应用类型的入口方法,它只是控 ...

  8. (void) (&_x == &_y)的作用

    如果有下面这段代码: #define min(x, y) ({ \ const typeof(x) _x = (x); \ const typeof(y) _y = (y); \ (void) (&a ...

  9. GNU C 与 ANSI C(上)

    Linux 上可用的 C 编译器是 GNU C 编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布.GNU C 是对标准 C 进行的一系列扩展,以增强标准 C 的功能. 1. 零长度 ...

  10. java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider.<init>()

    Caused by: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (tk.mybatis ...