JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义全面解析
作者:watermelo37
理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
Web 开发中你一定见过 / —— 但它的用法可不仅仅是「斜杠」。这篇文章将全面梳理 / 在 JavaScript 和前端开发中的多种应用和语义,从文件路径到 API 请求,从浏览器资源引用到服务器配置,甚至涉及到转义、nginx配置和正则表达式。
一、路径中 / 的含义
1、 / 所扮演的角色
在浏览器、Node、Vue CLI 中,/ 都表示一种层级关系,常用来分隔目录结构或路由片段:
- /src/components/Button.vue → 组件文件路径
- /api/user/info → RESTful API 路径
- /about → 前端路由路径
2、根据 URL 中的 / 判断是目录还是资源
浏览器会自动根据 URL 最后是否包含 / 来区分目录或文件资源,关键就在于是不是以 / 结尾,如果是,就代表最后一个路径名是目录名(文件夹名称),如果不是以 / 结尾,就是文件资源。
URL | 推断 |
---|---|
/about/ | 目录 |
/about | 文件资源(如 html、json) |
/images/logo.png | 文件资源 |
/about/ → 被认为是目录,会尝试寻找 /about/index.html(vue中是寻找 /about/index.vue)
3、相对路径 vs 绝对路径
一个表格讲清楚:
路径形式 | 示例 | 含义说明 |
---|---|---|
绝对路径 | /assets/logo.png | 从网站根目录出发寻找资源 |
相对路径 | ./img/logo.png | 当前文件夹下寻找资源 |
相对路径 | ../img/logo.png | 当前文件夹的上一级目录下寻找资源 |
vue 项目使用绝对路径的时候,/ 一般是从 public 文件夹开始往下,无法通过绝对路径访问src文件夹中的资源(一般用@,但是要配置),因为src下的资源在打包后会重新分配结构,使用绝对路径在生产环境就会失效,所以毫无意义。
4、相对路径中的 . 与 ..
.
:当前路径(Current Directory)..
:上一级目录(Parent Directory)
<!-- 当前文件在 /pages/about/index.html --> <img src="../../images/banner.jpg"> <!-- 实际路径为 /images/banner.jpg --> <!-- pages与iamges在同一目录下 -->
二、Vue中 / 的特殊作用
1、Vue Router 中的 /
在Vue Router中,/ 代表根路由,也就是说实际路径为:协议+域名(ip+端口)+ baseUrl + 路由。最后的路由部分就是Vue Router配置的内容,根路由就是路由为 / 。
此外/about/ 与 /about 默认被视为等价(除非手动设置)
const routes = [ { path: '/', component: Home }, { path: '/about', component: About }, ]
2、Vue 项目构建时的 base 配置
这个其实是要根据生产环境下的路由决定的,生产环境下的路由是什么,这里base就设置什么,以此来保证打包部署后的资源能被正确访问。
// vite.config.js export default defineConfig({ base: '/my-app/', // 所有资源前缀会带上这个路径 })
三、SEO 对 / 的敏感性
搜索引擎(如 Google、Baidu)会把下面两个路径视为两个不同的页面:
- /blog
- /blog/
所以需要路由统一末尾加 /,或者通过 Nginx 重定向处理一致性,避免 /about 和 /about.html 指向同一页面而无重定向,容易造成 SEO 评分下降。
四、Nginx 中/的配置技巧
proxy_pass 后的 / 会影响转发路径拼接方式,建议保持一致,否则可能造成路径错乱,此时 /api/user 实际会被转发至 http://localhost:3000/user。
个人建议在nginx中永远在路径和路由后加上 / ,基本不会错。
location /api/ { proxy_pass http://localhost:3000/; }
五、fetch 和 API 请求中的 / 影响
fetch('/api/user') // 相对根路径 fetch('./api/user') // 相对当前路径(可能出错) fetch('https://example.com/api/user') // 绝对路径
Vue 中推荐使用 axios 统一配置:
const instance = axios.create({ baseURL: '/api/', })
六、正则表达式和字符串中的 / 与转义
在 JavaScript 正则表达式中,/ 是定界符,若路径中包含 /,需使用 \/ 进行转义。:
const reg = /\/api\/user/; // 匹配 "/api/user"
字符串中的 / 则不需要转义
const url = "https://example.com/api/user";
七、结语
一个小小的 / 有这么多细节可以深挖, 是不是很有意思?如果你是前端开发者,理解 / 的这些细节能让你在写路径、调试接口、配置服务器、优化 SEO 时更游刃有余。
到此这篇关于JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义全面解析的文章就介绍到这了,更多相关js 路径 /内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!