Skip to content

Latest commit

 

History

History
executable file
·
107 lines (86 loc) · 3.41 KB

route笔记.md

File metadata and controls

executable file
·
107 lines (86 loc) · 3.41 KB

key值 使用v-for的时候,要加上key值,来表明这个循环的元素是唯一的。

生命周期: 是一个组件在挂载,更新,销毁这么一个过程

生命周期函数: 在每一个阶段,会提供不同的函数,内部会自动的调用函数

mounted 就是组件挂载完成之后触发的函数 也就是说组件的元素已经存在文档中了,能足够做什么事情呢?可以获取页面中的元素了。

动态路径 每一次不同的路径访问的时候,都会渲染不同的组件,组件都会重新挂载一次。但是使用了动态路径,这些路径都用的是同一个组件,路径发生变化,组件不会重新渲染了。

当使用了动态路径,这个路径渲染的同一个组件内部,怎么知道路径发生变了呢?

可以通过监控路由信息对象,来感知路径的变化。

导航钩子函数 导航发生变化(进入和离开)做一些控制

写的位置:
	1. 写在vueRouter的实例上
		// 任何一个访问的路径,都会执行这个钩子函数
		vueRouter.beforeEach((to,from,next) => {
			to:  即将要进入的目标 路由对象
			from: 当前导航正要离开的路由
		})

	2. 写在配置路由信息上
		{
			...
			beforeEnter (to,from,next){
				next()
			}
		}
	3. 写在组件中
		{
			beforeRouteEnter (to, from, next) {
			   // 在渲染该组件的对应路由被 confirm 前调用
			   // 不!能!获取组件实例 `this`
			   // 因为当守卫执行前,组件实例还没被创建
			 },
			 beforeRouteUpdate (to, from, next) {
			   // 在当前路由改变,但是该组件被复用时调用
			   // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
			   // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
			   // 可以访问组件实例 `this`
			 },
			 beforeRouteLeave (to, from, next) {
			   // 导航离开该组件的对应路由时调用
			   // 可以访问组件实例 `this`
			 }
		}

鉴权
放在beforeEach中做,配合meta字段

页面之间传递数据 queryString的方式 ?

http://localhost:8080/login?r=abc

懒(按需)加载 结合 Vue 的异步组件和 Webpack 的代码分割功能,轻松实现路由组件的懒加载。

按组分割没成功??????

上线,配置apache

服务器的根路径是:/www
上线的项目mock : /www/mock/
	mock文件件下有项目文件
		/static
			/css
			/js
		index.html

在使用npm run build打包的时候,修改两个地方
	1. index.html引用css和js的路径
		修改过程:
			/config/index.js文件中
				build
					assetsPublicPath: "/mock/"
	2. 修改路由访问的根路径
			/router
				index.js文件中
					配置项中写上:
						 base:'/mock'

在访问项目,刷新之后出现404
	1. 打开apache的配置 httpd.conf
		打开模块
			LoadModule rewrite_module modules/mod_rewrite.so
	2. 根路径/www目录下创建文件
		.htaccess文件
			<IfModule mod_rewrite.c>
			  RewriteEngine On
			  RewriteBase /
			  RewriteRule ^index\.html$ - [L]
			  RewriteCond %{REQUEST_FILENAME} !-f
			  RewriteCond %{REQUEST_FILENAME} !-d
			  RewriteRule . /mock/index.html [L]
			</IfModule>