最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue-router啟用history模式下的開發(fā)及非根目錄部署方法

 更新時(shí)間:2018年12月23日 11:23:55   作者:趙大仁  
這篇文章主要介紹了vue-router啟用history模式下的開發(fā)及非根目錄部署方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

 為什么要有 hash 和 history

對于 Vue 這類漸進(jìn)式前端開發(fā)框架,為了構(gòu)建 SPA(單頁面應(yīng)用),需要引入前端路由系統(tǒng),這也就是 Vue-Router 存在的意義。前端路由的核心,就在于 —— 改變視圖的同時(shí)不會(huì)向后端發(fā)出請求。

為了達(dá)到這一目的,瀏覽器當(dāng)前提供了以下兩種支持:

1.hash —— 即地址欄 URL 中的 # 符號(hào)(此 hash 不是密碼學(xué)里的散列運(yùn)算)。

比如這個(gè) URL:http://www.abc.com/#/hello,hash 的值為 #/hello。它的特點(diǎn)在于:hash 雖然出現(xiàn)在 URL 中,“#”后面的內(nèi)容不會(huì)被包括在 HTTP 請求中,對后端完全沒有影響,因此改變 hash 不會(huì)重新加載頁面。

2.history —— 利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。(需要特定瀏覽器支持)
這兩個(gè)方法應(yīng)用于瀏覽器的歷史記錄棧,在當(dāng)前已有的 back、forward、go 的基礎(chǔ)之上,它們提供了對歷史記錄進(jìn)行修改的功能。只是當(dāng)它們執(zhí)行修改時(shí),雖然改變了當(dāng)前的 URL,但瀏覽器不會(huì)立即向后端發(fā)送請求。

因此可以說,hash 模式和 history 模式都屬于瀏覽器自身的特性,Vue-Router 只是利用了這兩個(gè)特性(通過調(diào)用瀏覽器提供的接口)來實(shí)現(xiàn)前端路由。

vue-router 的 history 模式是個(gè)提高顏值的好東西,沒有了 hash 的路由看起來清爽許多。

開發(fā)的時(shí)候,如果我們使用 devServer 來啟動(dòng)服務(wù),由于一般不共用端口,我們一般不存在非根目錄的問題。

而刷新后 404 的問題可以借助 historyApiFallback 來解決。

但當(dāng)我們項(xiàng)目對外開放時(shí),往往無法在域名根目錄下提供服務(wù),這個(gè)時(shí)候資源的訪問路徑與開發(fā)時(shí)的根目錄就有了區(qū)別。

首先,我們通過 webpack 來配置一下項(xiàng)目中所有資源的基礎(chǔ)路徑,讓這份代碼在開發(fā)和生產(chǎn)環(huán)境中都可以正確找到資源。

// config/index.js
module.exports = {
  dev: {
    ...
    // 開發(fā)環(huán)境根目錄 - 服務(wù)根目錄 - 絕對路徑
    assetsPublicPath: '/'
    ...
  },
  build: {
    ...
    // 生產(chǎn)環(huán)境根目錄 - 服務(wù)器訪問路徑 - 絕對路徑
    assetsPublicPath: '/test/project1/'
    ...
  }
}

 
// build/webpack.common.conf.js
const config = require('../config')
module.exports = {
  output: {
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  }
}

// build/webpack.dev.conf.js
const common = require('./webpack.common')
module.exports = merge(common, {
  devServer: {
    historyApiFallback: true
  }
}

然后在提供服務(wù)的服務(wù)器配置中做如下配置(以 nginx 為例):

location /test/project1 {
    alias .../project1; // 項(xiàng)目的真實(shí)路徑
    index index.html;
    try_files $uri $uri/ /test/project1/index.html;
}

try_files 會(huì)按順序檢查參數(shù)中的資源是否存在,并返回第一個(gè)找到的資源,如果都沒有找到,它會(huì)讓 nginx 內(nèi)部重定向到會(huì)后一個(gè)參數(shù)。

對了,所以它的的作用是解決刷新 404 的問題。

這里值得注意的是 try_files 的參數(shù)是絕對路徑。

至此,你開啟 history 模式的項(xiàng)目就可以順利的跑在任何路徑了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 全面解析Vue中的$nextTick

    全面解析Vue中的$nextTick

    這篇文章主要介紹了Vue中的$nextTick的相關(guān)資料,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2020-12-12
  • element-plus 如何設(shè)置 el-date-picker 彈出框位置

    element-plus 如何設(shè)置 el-date-picker 彈出框位置

    el-date-picker 組件會(huì)自動(dòng)根據(jù)空間范圍進(jìn)行選擇比較好的彈出位置,但特定情況下,它自動(dòng)計(jì)算出的彈出位置并不符合我們的實(shí)際需求,故需要我們手動(dòng)設(shè)置,這篇文章主要介紹了element-plus 如何設(shè)置 el-date-picker 彈出框位置,需要的朋友可以參考下
    2024-07-07
  • Vuex的四個(gè)常用核心概念解讀

    Vuex的四個(gè)常用核心概念解讀

    本文詳細(xì)解析了Vuex中的四個(gè)核心概念及其區(qū)別,包括State用于存儲(chǔ)狀態(tài),Getters用于計(jì)算屬性并緩存,Mutations是唯一更改State的同步方法,Actions則用于提交Mutations且支持異步操作
    2024-11-11
  • element?ui設(shè)置table自適應(yīng)表格寬,不自動(dòng)換行問題

    element?ui設(shè)置table自適應(yīng)表格寬,不自動(dòng)換行問題

    這篇文章主要介紹了element?ui設(shè)置table自適應(yīng)表格寬,不自動(dòng)換行問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vue項(xiàng)目動(dòng)態(tài)設(shè)置頁面title及是否緩存頁面的問題

    vue項(xiàng)目動(dòng)態(tài)設(shè)置頁面title及是否緩存頁面的問題

    這篇文章主要介紹了vue項(xiàng)目動(dòng)態(tài)設(shè)置頁面title及是否緩存頁面的問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • VUE的tab頁面切換的四種方法

    VUE的tab頁面切換的四種方法

    這篇文章主要介紹了VUE的tab頁面切換的四種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • vue+ElementUi+iframe實(shí)現(xiàn)輪播不同的網(wǎng)站

    vue+ElementUi+iframe實(shí)現(xiàn)輪播不同的網(wǎng)站

    需要實(shí)現(xiàn)一個(gè)輪播圖,輪播內(nèi)容是不同的網(wǎng)站,并實(shí)現(xiàn)鼠標(biāo)滑動(dòng)時(shí)停止輪播,當(dāng)鼠標(biāo)10秒內(nèi)不動(dòng)時(shí)繼續(xù)輪播,所以本文給大家介紹了用vue+ElementUi+iframe實(shí)現(xiàn)輪播不同的網(wǎng)站,需要的朋友可以參考下
    2024-02-02
  • 詳解vue-validator(vue驗(yàn)證器)

    詳解vue-validator(vue驗(yàn)證器)

    本篇文章主要介紹了vue-validator(vue驗(yàn)證器),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • vue模版編譯詳情

    vue模版編譯詳情

    本文的初衷是想讓更多哎學(xué)習(xí)的人知道并了解vue模版編譯,所以文中主要以階段流程為主,不會(huì)涉及過多的底層代碼邏輯,需要的朋友可以參考一下
    2021-09-09
  • axios的攔截請求與響應(yīng)方法

    axios的攔截請求與響應(yīng)方法

    今天小編就為大家分享一篇axios的攔截請求與響應(yīng)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08

最新評(píng)論

同心县| 娱乐| 伊吾县| 开封市| 东海县| 两当县| 兴业县| 无棣县| 无极县| 金寨县| 赣州市| 三台县| 礼泉县| 庆元县| 东宁县| 博兴县| 易门县| 宣化县| 莱芜市| 黎川县| 开化县| 大丰市| 台北市| 紫云| 丰原市| 若羌县| 渭源县| 乌什县| 大埔县| 奉新县| 沁水县| 甘孜| 丹巴县| 台州市| 盐池县| 广州市| 遵化市| 阳朔县| 张北县| 都昌县| 桂平市|