vue-router 中mode,使用默认hash还是history模式?

本文详细介绍了Vue项目中使用history模式替代hash模式的方法,解决了微信三方登录、H5支付及App分享时出现的问题。通过调整router/index.js和config/index.js文件,确保URL美观且功能正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网hsitory模式说明

vue-router中默认使用的是hash模式,也就是会出现如下的URL:
vue-router中hash模式

hash模式引起的问题
各个模式区别

vue项目携带一个#会对开发造成一定的影响:

1、微信三方登录回调地址,有#号时,接收不到code参数

2、微信H5支付的回调地址,不允许有#

3、App分享,处理特殊字符时,可能会对#进行编译

4、有点影响美观

现在网站大多有三方登录,支付等功能,存在#,项目开发就存在很大的障碍。话不多说,开始去掉#吧。

去#的原理

vue把#当做自己的根目录,静态资源,比如图片。

去掉#后,要采用相对路径去引用,如果图片引用是在js内,则要采用require()方法进行引用。

去#后台渲染,请参考vue官方文档

如何去掉

1、首先判断产线项目是否放在域名根目录下

在router/index.js文件中,添加history模式

如果项目不在根目录下,比如产线项目根目录为 http://www.baidu.com/project-name/

export default new Router({
  mode: 'history',
  base: '/project-name/', //如果项目根目录不为域名,则添加该行
  routes: [{}]

2、修改config/index.js文件

build: {
    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: '/project-name/', //添加根目录,如果域名为根目录,则为 '/'
}

这样子URL中的#号就被去除了。

去掉#,对项目的根目录造成影响,这是不可避免的,再次强调,确保静态资源文件路径正确。

修改为history需要后端配合

Apache,Nginx等服务器部署vue项目请参考

<think>好的,我现在需要帮用户解决在Vue-cli项目中配置和使用Vue-router的问题。首先,用户可能已经通过Vue-cli创建了一个项目,现在想要添加路由功能。我应该按照步骤来指导他们,确保每个环节都清楚。 首先,安装Vue-router。用户可能不知道需要单独安装这个库,所以需要告诉他们使用npm或yarn来安装。命令是npm install vue-router或者yarn add vue-router。这部分应该放在第一步。 接下来,创建路由配置文件。通常的做法是在src目录下新建一个router文件夹,里面放index.js。这里需要引入VueVueRouter,并且使用Vue.use(VueRouter)来注册插件。然后定义路由数组,每个路由对象包含path、component等属性。最后导出VueRouter实例。这部分需要详细说明,可能用户会不清楚如何组织代码。 然后,在main.js中注入路由。用户需要在入口文件中导入router实例,并把它挂载到Vue的实例中。这里需要给出具体的代码示例,比如import router from './router',然后在new Vue的时候添加router。这一步很关键,否则路由不会生效。 接下来是配置路由视图,也就是在App.vue中加入<router-view>标签。用户可能对这部分不熟悉,需要说明这个标签的作用是显示路由对应的组件。同时,可能还需要添加导航链接,用<router-link>来跳转,这里可以举例说明to属性的用法。 动态路由和嵌套路由也是常见需求,需要简要提及。比如如何通过冒号来定义动态参数,以及children数组来配置嵌套路由。可能用户会遇到参数获取的问题,这时候需要提到$route.params的使用。 最后,导航守卫是进阶功能,可以用来做权限控制或者页面跳转前的验证。这里可以举一个简单的例子,比如beforeEach钩子,说明如何设置页面标题或者检查登录状态。 还要注意检查用户是否引用了正确的资料,比如提供的引用内容中有提到在main.js注入router和挂载到Vue实例,这些都需要在回答中体现,并正确添加引用标识。同时,确保所有代码示例使用正确的语法,比如VueRouter的导入和路由配置的写法。 用户可能还会遇到常见问题,比如路由不生效,这时候需要检查是否安装了Vue-router,是否正确注入,或者组件路径是否正确。在回答中可以加入这些注意事项,帮助用户排查问题。 总结一下,步骤应该是:安装、配置路由文件、注入到Vue实例、使用路由组件、高级功能。每个步骤都需要清晰的代码示例和解释,确保用户能够一步步跟着操作。同时,生成的相关问题要覆盖安装、配置、动态路由和导航守卫,这样用户如果有进一步的问题,可以自行参考或继续提问。</think>### 如何在 Vue-cli 中配置和使用 Vue-router #### 一、安装 Vue-router 1. 在项目根目录执行命令安装依赖: ```bash npm install vue-router # 或 yarn add vue-router ``` #### 二、创建路由配置文件 1. 在 `src` 目录下新建 `router/index.js`: ```javascript // 引入VueVueRouter import Vue from 'vue' import VueRouter from 'vue-router' // 注册路由插件 Vue.use(VueRouter) // 定义路由数组 const routes = [ { path: '/', component: () => import('@/views/Home.vue') }, { path: '/about', component: () => import('@/views/About.vue') } ] // 创建路由实例 const router = new VueRouter({ mode: 'history', // 可选模式hash/history routes }) export default router ``` #### 三、注入路由到Vue实例 1. 在 `main.js` 中引入并挂载路由[^1][^2]: ```javascript import Vue from 'vue' import App from './App.vue' import router from './router' // 自动识别router/index.js new Vue({ router, // 关键注入点 render: h => h(App) }).$mount('#app') ``` #### 四、配置路由视图 1. 在 `App.vue` 中添加路由容器: ```vue <template> <div id="app"> <!-- 导航链接 --> <router-link to="/">首页</router-link> <router-link to="/about">关于</router-link> <!-- 路由内容显示区域 --> <router-view></router-view> </div> </template> ``` #### 五、高级功能配置 1. **动态路由**: ```javascript // router/index.js { path: '/user/:id', component: () => import('@/views/User.vue') } // 组件内通过 this.$route.params.id 获取参数 ``` 2. **嵌套路由**: ```javascript { path: '/dashboard', component: Dashboard, children: [ { path: 'profile', component: Profile } ] } ``` 3. **导航守卫**: ```javascript router.beforeEach((to, from, next) => { document.title = to.meta.title || '默认标题' next() // 必须调用 }) ``` #### 注意事项 1. 路由组件建议存放在 `src/views/` 目录 2. 使用 `history` 模式需要服务器端配置支持 3. 懒加载组件使用 `() => import()` 语法提升性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值