BrowserRoute伺服器配置

2022-06-23 23:03:15 字數 2503 閱讀 1671

在react專案中我們經常需要採用react-router來配置我們的頁面路由,react-router 是建立在 history 之上的,常見的history路由方案有三種形式,分別是:

1)hashhistory

2)browserhistory

3)creatememoryhistory

hashhistory使用 url 中的 hash(#)部分去建立形如example.com/#/some/path的路由。

browserhistory是使用 react-router 的應用推薦的 history方案。它使用瀏覽器中的 history api 用於處理 url,建立乙個像example.com/list/123這樣真實的 url 。

import react from "react";

import reactdom from "react-dom";

import from 'react-router';

import index from "../routes/helloworld";

import list from "../routes/bloglist";

import about from "../routes/about";

render()

); }

}reactdom.render(

,);

但是我們當我們採用browserhistory方案時,通常會遇到瀏覽器重新整理404 的問題。

在react + react-router實現的spa(單頁面應用)專案中,當我們路由模式採用browserhistory時,點選每個導航都可以顯示正確的頁面,一旦瀏覽器重新整理,頁面就顯示cannot get(404)。

如當我們點選list鏈結,進入list頁面之後,正常顯示list頁面內容,這時如果我們重新整理頁面,頁面將會出錯,返回cannot get /list

當重新整理頁面時,瀏覽器會向伺服器請求example.com/list,伺服器實際會去找根目錄下list.html這個檔案,發現找不到,因為實際上我們的伺服器並沒有這樣的 物理路徑/檔案 或沒有配置處理這個路由,所有內容都是通過react-router去渲染react元件,自然會報404錯誤。這種情況我們可以通過配置nginx或通過自建node伺服器來解決。

採用nginx方案需要先將所有資源打包生成到對應的目錄,比如dist,然後做如下配置:

server 

}

通過配置nginx,訪問任何uri都指向index.html,瀏覽器上的path,會自動被react-router處理,進行無重新整理跳轉。

這個解決方法很簡單,直接在執行時加入引數「–history-api-fallback」就可以了。我們修改package.json相關的**:

"scripts": ,

乙個express應用的配置示例:

const express = require('express');

const path = require('path');

const port = process.env.port || 8080;

//載入指定目錄靜態資源

//配置任何請求都轉到index.html,而index.html會根據react-router規則去匹配任何乙個route

(request, response))

function

() )

乙個koa應用的配置示例:

import koa from 'koa';

import xtpl from 'koa-xtpl';

import path from 'path';

koa();

const port = process.env.port || 8081;

root: path.resolve(__dirname, '../dist'),

extname: 'html',

commands: {}

}));

await ctx.render('index', {});

}); console.log('server started on port' +port);

});

注意: 由於koa的這種方式埠與webpack-dev-server(8080)必須不同,所以還需要配合nginx**。例如:

server 

}server

}

既然我們的nginx**用了真實網域名稱,自然別忘了修改一下host,如下:

127.0.0.1 react.thinktxt.com

127.0.0.1 static.react.thinktxt.com

伺服器安裝Linux伺服器

新辦公需要搭建一台伺服器,之前也沒有怎麼搞過,不過有一些了解,於是和同事一起嘗試安裝一下伺服器。本人使用ultraiso燒錄u盤,系統檔案是centos 6.6 x86 64 bin 1.ios,使用urtraiso開啟iso檔案,然後如下圖 接著就可以寫入,u盤會被格式化的,注意備份,等待寫入就可...

mysql udp伺服器 UDP伺服器

傳輸層主要應用的協議模型有兩種,一種是tcp協議,另外一種則是udp協議。tcp協議在網路通訊中佔主導地位,絕大多數的網路通訊借助tcp協議完成資料傳輸。但udp也是網路通訊中不可或缺的重要通訊手段。相較於tcp而言,udp通訊的形式更像是發簡訊。不需要在資料傳輸之前建立 維護連線。只專心獲取資料就...

伺服器安裝apache伺服器

1.環境 centos7 2.鏈結伺服器 ssh username ip 3.安裝apache 4.設定apache在伺服器啟動時執行 5.在apache配置檔案中設定網域名稱 vi etc httpd conf httpd.conf,找到 servername 新增 網域名稱 80 儲存並退出。6...