理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事

理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事

目录

理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事

一、路径中 / 的含义

1、 / 所扮演的角色

2、根据 URL 中的 / 判断是目录还是资源

3、相对路径 vs 绝对路径

4、相对路径中的 . 与 ..

二、Vue中 / 的特殊作用

1、Vue Router 中的 /

2、Vue 项目构建时的 base 配置

三、SEO 对 / 的敏感性

四、Nginx 中 / 的配置技巧

五、fetch 和 API 请求中的 / 影响

六、正则表达式和字符串中的 / 与转义

七、结语


        作者:watermelo37

        ZEEKLOG万粉博主、华为云云享专家、阿里云专家博主、腾讯云、支付宝合作作者,全平台博客昵称watermelo37。

        一个假装是giser的coder,做不只专注于业务逻辑的前端工程师,Java、Docker、Python、LLM均有涉猎。



---------------------------------------------------------------------

温柔地对待温柔的人,包容的三观就是最大的温柔。

---------------------------------------------------------------------

理解 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 时更游刃有余。

        只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

        其他热门文章,请关注:

        极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图

        你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解

        DeepSeek:全栈开发者视角下的AI革命者

        通过array.filter()实现数组的数据筛选、数据清洗和链式调用

        Web Worker:让前端飞起来的隐形引擎

        测评:这B班上的值不值?在不同城市过上同等生活水平到底需要多少钱?

        通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能

        TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急

        通过MongoDB Atlas 实现语义搜索与 RAG——迈向AI的搜索机制

        深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解

        前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动+懒加载+瀑布流模块及优化策略

        el-table实现动态数据的实时排序,一篇文章讲清楚elementui的表格排序功能

        JavaScript双问号操作符(??)详解,解决使用 || 时因类型转换带来的问题

        内存泄漏——海量数据背后隐藏的项目生产环境崩溃风险!如何避免内存泄漏

      【前端实战】如何让用户回到上次阅读的位置?

        MutationObserver详解+案例——深入理解 JavaScript 中的 MutationObserver

        JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、DOM操作等

        高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图

Read more

【C++】 map/multimap底层原理与逻辑详解

【C++】 map/multimap底层原理与逻辑详解

【C++】 map/multimap底层原理与逻辑详解 * 摘要 * 目录 * 一、`map` * 1. 类模板认识 * 2. 构造函数认识 * 3. 迭代器和范围for的使用 * 4. insert的使用 * 5. empty 和size的使用 * 6. erase的使用 * 7. swap 和 clear的使用 * 8. find的使用 * 9. count的使用 * 11. lower_bound 和 upper_bound的使用 * 12. equal_range的使用 * 13. operator= 的使用 * 14. operator[ ] 的使用 * 二、`multimap` * 1. 模板和类模板的认识 * 2. insert的使用 * 3.

By Ne0inhk
RPC魔法揭秘:从原理到BRPC实战,用C++玩转分布式通信

RPC魔法揭秘:从原理到BRPC实战,用C++玩转分布式通信

文章目录 * 本篇摘要 * 一.什么是rpc * 简单理解 * 核心特点 * RPC 工作原理 * 常见 RPC 框架 * 典型使用场景 * 二.BRPC介绍 * 是什么? * 比gRPC强在哪? * 三.基于brpc实现简单的服务调用 * brpc安装教程 * 简单实现客户端向brpc服务端口请求服务完成应答过程(以echo回显为例) * 测试效果 * 代码汇总 * 四.封装每个服务的channels及所有服务管理者 * 五.基于etcd实现服务上下线监控来完成brpc服务调用 * 测试效果 * 代码汇总 * 六.本篇小结 本篇摘要 本文从RPC核心概念出发,阐释其“透明远程调用”的本质与工作原理,对比主流框架后聚焦百度开源的C++高性能RPC框架BRPC,详解其安装、Echo服务示例代码(含客户端/服务端实现),并延伸介绍基于ETCD的服务注册发现与信道管理封装,完整呈现分布式通信方案落地过程。 一.什么是rpc 简单理解 RPC(远程过程调用)就是让程序调用

By Ne0inhk
Java 中间件:RabbitMQ 延迟队列(死信交换机实现)

Java 中间件:RabbitMQ 延迟队列(死信交换机实现)

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Java中间件这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * Java 中间件:RabbitMQ 延迟队列(死信交换机实现) ⏳ * 什么是延迟队列?🤔 * 典型应用场景 🌟 * RabbitMQ 原生不支持延迟队列?那怎么办?🚫➡️✅ * 核心思想 💡 * 关键概念详解 🔑 * 1. TTL(Time-To-Live)⏱️ * 2. 死信(Dead Letter)⚰️ * 3. 死信交换机(DLX) & 死信路由键(DLK)🔄 * 4. 延迟队列的构建逻辑 🧩 * 环境准备 🛠️ * 启动 RabbitMQ(Docker 方式) * Spring Boot 项目搭建 🏗️ * 定义交换机、队列与绑定关系 📦 *

By Ne0inhk
【已解决】VScode 配置 Java 开发环境(2024新)Visual Studio Code 手把手教你 超详细教程 小白 jdk class

【已解决】VScode 配置 Java 开发环境(2024新)Visual Studio Code 手把手教你 超详细教程 小白 jdk class

配置 Visual Studio Code (VSCode) 以进行 Java 开发涉及几个步骤。以下是一个详细的指南,帮助你在 VSCode 中设置 Java 开发环境: 1. 安装 Java Development Kit (JDK) 下载并安装JDK 确保你的系统上已经安装了 JDK。你可以从 Oracle 或 Adoptium 下载最新版本的 JDK。 配置环境变量 安装完成JDK后,设置环境变量 JAVA_HOME 指向你安装的 JDK 目录,并将 %JAVA_HOME%\bin 添加到系统的 PATH 环境变量中。 2. 安装 Visual Studio Code 如果你还没有安装

By Ne0inhk