vue-cli是vue的一个脚手架工具,什么是脚手架。就是可以帮助我们自动生成vue.js+webpack的项目模板,也就是说不用我们手动配置webpack以及一些配置了。
基本使用:(cli4与cli3创建项目的步骤一样)
vue create 项目名称
创建项目npm run serve
运行程序router即路由,所谓路由就是有一对一的对应关系,点击一个事件就跳到其对应的组件中。
router使用步骤:
1.创建路由:
//创建路由时需要先导入路由
import VueRouter from 'vue-router'
// 通过Vue.use(插件),安装插件
Vue.use(VueRouter)
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
mode:前端路由系统的模式。模式有hash
跟history
,一般设为history
。详情可参考vue-router的两种模式
routes:自定义配置的路由与组件间的应用关系。
const routes = [
{ //设置默认路径
path:'',
redirect:'home' //重定向到home
},
{
path:'/home',
component:home, // 地址跳转到home时切换到的组件
meta:{
//meta元数据(描述数据的数据)
title:'主页'
},
children:[ //路由的嵌套使用
{
path:'',
redirect:'news'
},
{
path:'/home/news',
component:news
},
{
path:'/home/message',
component:message
}
]
}
]
路由的嵌套表示一个组件中有其他小的组件。而在大组件中点击一些事件时需要跳转到相应的小组件中。
当然了,这些路由对应的组件应该放在别的.vue文件中写,然后导入到此文件中。
// 直接载入组件 (这里是我的Home组件的路径)
// import home from '../components/Home'
// 懒加载组件
const home = () => import('../components/Home')
2.在main.js中注册路由
new Vue({
router, // 注册路由
render: h => h(App)
}).$mount('#app') //el的实质就是$mount()
到此为止就可以使用router了。
3.使用路由:(这里有3个router的标签:)
第一:
该标签是一个vue-router中已经内置的组件,他会默然被渲染成a标签
其属性:
to='',用于指定跳转的路径
tag='',指定被渲染成什么组件(默认a)
replace,让网页的返回按钮失效
表示这是一个按钮,点击它会跳转到baseurl的home目录下。
tips:如果你需要编程式导航(自己写代码跳转router)也可以这样做。
那如果我们需要在跳转的路由之间传递参数呢?我们可以动态绑定to
组件间传递参数方式: {{$route.params.id}}用户
一、params的类型 (传递后形成的路径 /uesr/132 )
1.配置路由格式:path='/路径/:形参'
{ path:'/user/:id', component:user }
2.:to='/路径/实参'
3.再通过{{$route.params.形参}}
获取数据
二、query的类型 (传递后形成的路径 /uesr?id=132 )
1.配置路由格式:path=’/路径’ 即正常配置
2.传递的方式:to中传递一个对象,并写好path跟query(key的形式)
:to='{path:'/user',query:{name:'hang',age:'18'}}'
3.再通过{{$route.query.key}}获取数据
看到这里就有人会对route跟router搞混淆了。注意, r o u t e r 是 i n d e x . j s 创 建 的 r o u t e r 对 象 但 是 这 里 是 router是index.js创建的router对象但是这里是 router是index.js创建的router对象但是这里是route(没有r)是指当前活跃的路由。也就是说有r的是一个大的路由对象,没r的是当前路由对象
第二:
显示router跳转后的内容
该标签会根据当前的路径,动态渲染出不同的组件
在路由切换时切换的就是此标签挂载的组件
第三:
缓存标签,保持里面的东西处于活跃状态,不被销毁
其属性:
include='字符串或正则表达式':只有匹配的组件会被缓存,匹配多个时用,分割
exclude='字符串或正则表达式':任意匹配的组件都不会被缓存,匹配多个时用,分割
末尾总结一下:router是插件,需要用Vue.use(插件)进行安装插件。以后所有的插件都要使用Vue.use(插件)来进行安装