JavaScript 中的“ / ”:路徑、資源與目錄、nginx配置、請(qǐng)求、轉(zhuǎn)義全面解析
理解 JavaScript 中的“ / ”:路徑、資源與目錄、nginx配置、請(qǐng)求、轉(zhuǎn)義的那些事
Web 開(kāi)發(fā)中你一定見(jiàn)過(guò) / —— 但它的用法可不僅僅是「斜杠」。這篇文章將全面梳理 / 在 JavaScript 和前端開(kāi)發(fā)中的多種應(yīng)用和語(yǔ)義,從文件路徑到 API 請(qǐng)求,從瀏覽器資源引用到服務(wù)器配置,甚至涉及到轉(zhuǎn)義、nginx配置和正則表達(dá)式。

一、路徑中 / 的含義
1、 / 所扮演的角色
在瀏覽器、Node、Vue CLI 中,/ 都表示一種層級(jí)關(guān)系,常用來(lái)分隔目錄結(jié)構(gòu)或路由片段:
- /src/components/Button.vue → 組件文件路徑
- /api/user/info → RESTful API 路徑
- /about → 前端路由路徑
2、根據(jù) URL 中的 / 判斷是目錄還是資源
瀏覽器會(huì)自動(dòng)根據(jù) URL 最后是否包含 / 來(lái)區(qū)分目錄或文件資源,關(guān)鍵就在于是不是以 / 結(jié)尾,如果是,就代表最后一個(gè)路徑名是目錄名(文件夾名稱(chēng)),如果不是以 / 結(jié)尾,就是文件資源。
| URL | 推斷 |
|---|---|
/about/ | 目錄 |
/about | 文件資源(如 html、json) |
/images/logo.png | 文件資源 |
/about/ → 被認(rèn)為是目錄,會(huì)嘗試尋找 /about/index.html(vue中是尋找 /about/index.vue)
3、相對(duì)路徑 vs 絕對(duì)路徑
一個(gè)表格講清楚:
| 路徑形式 | 示例 | 含義說(shuō)明 |
|---|---|---|
| 絕對(duì)路徑 | /assets/logo.png | 從網(wǎng)站根目錄出發(fā)尋找資源 |
| 相對(duì)路徑 | ./img/logo.png | 當(dāng)前文件夾下尋找資源 |
| 相對(duì)路徑 | ../img/logo.png | 當(dāng)前文件夾的上一級(jí)目錄下尋找資源 |
vue 項(xiàng)目使用絕對(duì)路徑的時(shí)候,/ 一般是從 public 文件夾開(kāi)始往下,無(wú)法通過(guò)絕對(duì)路徑訪問(wèn)src文件夾中的資源(一般用@,但是要配置),因?yàn)閟rc下的資源在打包后會(huì)重新分配結(jié)構(gòu),使用絕對(duì)路徑在生產(chǎn)環(huán)境就會(huì)失效,所以毫無(wú)意義。
4、相對(duì)路徑中的 . 與 ..
.:當(dāng)前路徑(Current Directory)..:上一級(jí)目錄(Parent Directory)
<!-- 當(dāng)前文件在 /pages/about/index.html --> <img src="../../images/banner.jpg"> <!-- 實(shí)際路徑為 /images/banner.jpg --> <!-- pages與iamges在同一目錄下 -->
二、Vue中 / 的特殊作用
1、Vue Router 中的 /
在Vue Router中,/ 代表根路由,也就是說(shuō)實(shí)際路徑為:協(xié)議+域名(ip+端口)+ baseUrl + 路由。最后的路由部分就是Vue Router配置的內(nèi)容,根路由就是路由為 / 。
此外/about/ 與 /about 默認(rèn)被視為等價(jià)(除非手動(dòng)設(shè)置)
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About },
]
2、Vue 項(xiàng)目構(gòu)建時(shí)的 base 配置
這個(gè)其實(shí)是要根據(jù)生產(chǎn)環(huán)境下的路由決定的,生產(chǎn)環(huán)境下的路由是什么,這里base就設(shè)置什么,以此來(lái)保證打包部署后的資源能被正確訪問(wèn)。
// vite.config.js
export default defineConfig({
base: '/my-app/', // 所有資源前綴會(huì)帶上這個(gè)路徑
})
三、SEO 對(duì) / 的敏感性
搜索引擎(如 Google、Baidu)會(huì)把下面兩個(gè)路徑視為兩個(gè)不同的頁(yè)面:
- /blog
- /blog/
所以需要路由統(tǒng)一末尾加 /,或者通過(guò) Nginx 重定向處理一致性,避免 /about 和 /about.html 指向同一頁(yè)面而無(wú)重定向,容易造成 SEO 評(píng)分下降。
四、Nginx 中/的配置技巧
proxy_pass 后的 / 會(huì)影響轉(zhuǎn)發(fā)路徑拼接方式,建議保持一致,否則可能造成路徑錯(cuò)亂,此時(shí) /api/user 實(shí)際會(huì)被轉(zhuǎn)發(fā)至 http://localhost:3000/user。
個(gè)人建議在nginx中永遠(yuǎn)在路徑和路由后加上 / ,基本不會(huì)錯(cuò)。
location /api/ {
proxy_pass http://localhost:3000/;
}
五、fetch 和 API 請(qǐng)求中的 / 影響
fetch('/api/user') // 相對(duì)根路徑
fetch('./api/user') // 相對(duì)當(dāng)前路徑(可能出錯(cuò))
fetch('https://example.com/api/user') // 絕對(duì)路徑
Vue 中推薦使用 axios 統(tǒng)一配置:
const instance = axios.create({
baseURL: '/api/',
})
六、正則表達(dá)式和字符串中的 / 與轉(zhuǎn)義
在 JavaScript 正則表達(dá)式中,/ 是定界符,若路徑中包含 /,需使用 \/ 進(jìn)行轉(zhuǎn)義。:
const reg = /\/api\/user/; // 匹配 "/api/user"
字符串中的 / 則不需要轉(zhuǎn)義
const url = "https://example.com/api/user";
七、結(jié)語(yǔ)
一個(gè)小小的 / 有這么多細(xì)節(jié)可以深挖, 是不是很有意思?如果你是前端開(kāi)發(fā)者,理解 / 的這些細(xì)節(jié)能讓你在寫(xiě)路徑、調(diào)試接口、配置服務(wù)器、優(yōu)化 SEO 時(shí)更游刃有余。
到此這篇關(guān)于JavaScript 中的“ / ”:路徑、資源與目錄、nginx配置、請(qǐng)求、轉(zhuǎn)義全面解析的文章就介紹到這了,更多相關(guān)js 路徑 /內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript仿百度輸入框提示自動(dòng)下拉補(bǔ)全
這篇文章主要介紹了javascript仿百度輸入框提示自動(dòng)下拉補(bǔ)全的相關(guān)資料,需要的朋友可以參考下2016-01-01
JavaScript中g(shù)etSelection獲取選中內(nèi)容實(shí)現(xiàn)示例(vue項(xiàng)目)
在JavaScript中獲取選中內(nèi)容通常是指獲取用戶在網(wǎng)頁(yè)上選中的文本或者其他可選擇的元素,這篇文章主要介紹了JavaScript中g(shù)etSelection獲取選中內(nèi)容實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-08-08
IE6-8中Date不支持toISOString的修復(fù)方法
這篇文章主要介紹了IE6-8中Date不支持toISOString的修復(fù)方法,需要的朋友可以參考下2014-05-05
在table中插入多行的js代碼(與insertAdjacentHTML相似的功能)
在table中插入多行,能使用與insertAdjacentHTML相似的功能2010-06-06
詳解JavaScript如何實(shí)現(xiàn)異步并發(fā)任務(wù)控制器
實(shí)現(xiàn)一個(gè)控制并發(fā)數(shù)的任務(wù)隊(duì)列?、實(shí)現(xiàn)一個(gè)異步并發(fā)任務(wù)控制器,這已經(jīng)是非常經(jīng)典的手寫(xiě)題目了,因?yàn)槠渲猩婕?異步?和?并發(fā)?的內(nèi)容,所以本文就來(lái)講講到底如何實(shí)現(xiàn)呢2023-05-05
JS使用window.requestAnimationFrame()對(duì)列表切片進(jìn)行渲染
這篇文章主要為大家介紹了JS使用requestAnimationFrame對(duì)列表切片進(jìn)行渲染,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
Bootstrap開(kāi)發(fā)實(shí)戰(zhàn)之響應(yīng)式輪播圖
這篇文章主要為大家詳細(xì)介紹了Bootstrap開(kāi)發(fā)實(shí)戰(zhàn)之響應(yīng)式輪播圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06

