简介
vue-router是与组件相辅相成的,学习路由必须要先了解组件;当然,前提是对vue的基础知识已经有了一定的了解。
vue组件
vue组件的核心思想,就是将开发模块化,便于项目的管理与维护;接下来,我们来看几组例子
1 组件的声明
a 全局组件声明
从上图中,我们可以看到,我们已经将对应的代码进行了模块化处理,但这个模块化处理只是最低级的,远远达不到我们的业务需求.
b 局部组件声明
这里声明的组件,将只能在父模版使用,可能有小伙伴对父模版不明白,不过没关系,我们向下看.
看到这里,我不禁会想,这种组件看起来还可以,但总是少点什么,在实际生产中,用起来不怎么方便,有以下缺点:
- 全局定义 (Global definitions) 强制要求每个 component 中的命名不得重复
- 字符串模板 (String templates) 缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \
- 不支持 CSS (No CSS support) 意味着当 HTML 和 JavaScript 组件化时,CSS 明显被遗漏
- 没有构建步骤 (No build step) 限制只能使用 HTML 和 ES5 JavaScript, 而不能使用预处理器,如 Pug (formerly Jade) 和 Babel
那么我们能不能把其分离出来,在哪里用到,我们引入进来即可,就像用link script标签一样
单文件组件
有牛逼的人,就跟我想到了一起,然后就开发出来了单文件组件.vue在一个.vue组件中,我们可以把css,js,html写在一起,进行内部耦合,这样方便维护,如果个人不喜欢这样写,也可以把js和css分离,然后进行引入
<!-- my-component.vue -->
<template>
<div>This will be pre-compiled</div>
</template>
<script src="./my-component.js"></script>
<style src="./my-component.css"></style>
那么,当我们构建了单页面应用的时候,我们要怎么引用它呢?是否可以像link script那样直接引用呢.经过查找资料,发现,其实浏览器是不能直接识别.vue组件的,需要通过各种变换的,所以就需要搭建相应的环境,不过好在vue已经帮助我们完成了环境的搭建,那就是vue-cli;搭建完vue-cli后,我们就可以写spa单页面应用了;
hash和history理解
在html5没出来之前,我们一般用hash改变来实现浏览器的局部跳转而不刷新界面我们通过手动改变浏览器地址#号后面的内容,然后回车,可以看到,浏览器是能够监听到改变的
window.addEventListener('hashchange',function(){//dosomething })
当html5出来之后,我们可以借助history来实现
名称 | 说明 |
---|---|
window.history.length | 历史记录的会话数 |
scrollRestoration | web应用程序在历史导航上显示的设置默认滚动行为 |
state | 历史堆栈顶部的状态的值 |
history.back() | 前往上一页, 用户可点击浏览器左上角的返回按钮模拟此方法. 等价于 history.go(-1) |
history.forward() | 在浏览器历史记录里前往下一页,用户可点击浏览器左上角的前进按钮模拟此方法. 等价于 history.go(1). |
history.go() | 通过当前页面的相对位置从浏览器历史记录( 会话记录 )加载页面。比如:参数为-1的时候为上一页,参数为1的时候为下一页 |
history.replaceState() | 按指定的数据,名称和URL(如果提供该参数),更新历史栈上最新的入口 |
剩下的就是使用vue-cli进行业务代码编写和配置了
来源:https://blog.csdn.net/wangbiao9292/article/details/100933433