vue路由的两种模式配置以及history模式下面后端如何配置

vue路由的两种模式配置以及history模式下面后端如何配置

1、hash ——即地址栏URL中的#符号。
hash 虽然出现URL中,但不会被包含在HTTP请求中,对后端完全没有影响,因此改变hash不会重新加载页面。
2、history ——利用了HTML5 History Interface 中新增的pushState() 和replaceState() 方法。需要特定浏览器支持
history模式,会出现404 的情况,需要后台配置。
3、hash模式下,仅hash符号之前的内容会被包含在请求中,如 http://www.baidu.com, 因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回404错误;
history模式下,前端的url必须和实际向后端发起请求的url 一致,如http://www.baidu.com/a/ 。如果后端缺少对/a 的路由处理,将返回404错误。

const router = new VueRouter({
  mode: ‘history‘,
  routes: [...]
})

history模式下配置nginx

location / {
  try_files $uri $uri/ /index.html;
}

history模式下配置Apache

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

history模式下配置Node.js

const http = require(‘http‘)
const fs = require(‘fs‘)
const httpPort = 80

http.createServer((req, res) => {
  fs.readFile(‘index.htm‘, ‘utf-8‘, (err, content) => {
    if (err) {
      console.log(‘We cannot open "index.htm" file.‘)
    }

    res.writeHead(200, {
      ‘Content-Type‘: ‘text/html; charset=utf-8‘
    })

    res.end(content)
  })
}).listen(httpPort, () => {
  console.log(‘Server listening on: http://localhost:%s‘, httpPort)
})

原文地址:https://www.cnblogs.com/mica/p/10876822.html

时间: 2024-10-24 13:45:40

vue路由的两种模式配置以及history模式下面后端如何配置的相关文章

vue路由的两种模式,hash与history的区别

1.直观区别: hash模式url带#号,history模式不带#号. 2.深层区别: hash模式url里面永远带着#号,我们在开发当中默认使用这个模式. 如果用户考虑url的规范那么就需要使用history模式,因为history模式没有#号,是个正常的url适合推广宣传 功能也有区别,比如我们在开发app的时候有分享页面,那么这个分享出去的页面就是用vue或是react做的, 咱们把这个页面分享到第三方的app里,有的app里面url是不允许带有#号的,所以要将#号去除那么就要使用hist

vue路由的两种模式,hash与history

对于Vue 这类渐进式前端开发框架,为了构建SPA(单页面应用),需要引入前端路由系统,这也就是Vue-router存在的意义.前端路由的核心,就在于——— 改变视图的同时不会向后端发出请求. 一.为了达到这个目的,浏览器提供了以下两种支持: 1.hash ——即地址栏URL中的#符号(此hsah 不是密码学里的散列运算). 比如这个URL:http://www.abc.com/#/hello, hash 的值为#/hello.它的特点在于:hash 虽然出现URL中,但不会被包含在HTTP请求

[设计模式]两种方法实现简单工厂模式

<!--完整代码下载链接:点击下载完整代码示例--> 1.描述 在项目开发中经常会遇到根据不同的条件创建不同的对象,然后对该对象进行操作,一般都包括许多的switch -case分支如下: CBase* pBase(NULL); switch (type_variable) { case obj1: pBase = new CBaseDerivate1();break; case obj2: pBase = new CBaseDerivate2();break; ... case objN:

vue——props的两种常用方法

vue--props的两种常用方法 1.实现父-->子的通信 举例如下: 父组件 parent.vue <children :channel="object1"></children> 子组件 children.vue export default{ name:"children", props:["channel"], data(){ return{ newChannel:null } } methods:{ fu

qml-main.cpp中的两种启动Qt Quick App模式

 现有两种启动Qt Quick App 模式: QQmlApplicationEngine搭配Window. QQuickView搭配Item.  qt默认使用第一种方法. QQmlApplicationEngine搭配Window: 1 #include <QGuiApplication> 2 #include <QQmlApplicationEngine> 3 4 int main(int argc, char *argv[]) 5 { 6 #if defined(Q_OS_W

前端路由的两种实现

转载自  http://www.jianshu.com/p/c9de1924d215 1.原理浅析 hash模式如果a标签的href属性以"#"开头,那么当点击这个a标签时就会触发hashchange事件,在该事件处理函数中可以做很多事,比如发ajax请求,进行DOM操作替换页面等. history模式hisroty模式相比hash模式,是一种比较新的路由模式,其浏览器兼容性如下: pushState浏览器兼容性 原理就是利用history.pushState(state,null,u

两种用于派生的Singleton模式(以TextureMgr为例)

Singleton,顾名思义,从字面上来理解就是单例模式,这是C++程序中 常用到的一种设计模式,特别是像文件管理器,纹理管理器这种整个软件 中只需要唯一的实例来管理所有资源时,这种模式的价值便得以体现. 下面来介绍两种用于派生管理的Singleton模式: 其中,第一种是Gof版本的Singleton, 其代码如下: //[Singleton_Gof.h] #pragma once template<typename T> class Singleton_Gof { protected: s

前端路由的两种实现方式

什么是路由? 路由是根据不同的 url 地址展示不同的内容或页面 早期的路由都是后端直接根据 url 来 reload 页面实现的,即后端控制路由. 后来页面越来越复杂,服务器压力越来越大,随着 ajax(异步刷新技术) 的出现,页面实现非 reload 就能刷新数据,让前端也可以控制 url 自行管理,前端路由由此而生. 单页面应用的实现,就是因为前端路由. 前端路由实现 1.Pjax(PushState + Ajax) 原理:利用ajax请求替代了a标签的默认跳转,然后利用html5中的AP

vue自定义组件 (两种之二)弹窗为例

方式: 利用js代码,在必要时候动态弹出组件, 而不需要Vue.use,也必在页面上写组件. 依据: vm.$mount( [elementOrSelector] ) 参数: {Element | string} [elementOrSelector] {boolean} [hydrating] 返回值:vm - 实例自身 用法: 如果 Vue 实例在实例化时没有收到 el 选项,则它处于“未挂载”状态,没有关联的 DOM 元素.可以使用 vm.$mount() 手动地挂载一个未挂载的实例. 如