当前位置: 首页 > article >正文

相对路径的详细用法

为什么可以通过nginx访问打包的vue项目,但是直接用浏览器打开vue打包生成的index.html就是一片空白,请问这是什么原理?

server {
    listen       80;
    server_name  yourdomain.com;

    location /project1/ {
        alias /path/to/project1/;
        try_files $uri $uri/ /project1/index.html;
    }

    location /project2/ {
        alias /path/to/project2/;
        try_files $uri $uri/ /project2/index.html;
    }
}

答:当我们在本地使用npm run build命令打包 Vue 项目时,会生成一个dist目录,里面包含了静态资源文件和index.html文件。这个index.html文件中的静态资源文件路径都是相对路径,比如/js/app.xxx.js,这个路径指的是在当前网站的根目录下的js目录下的app.xxx.js文件。假设我们将这个dist目录部署到了服务器上,同时使用 Nginx 配置反向代理,那么请求http://example.com/project1/时,Nginx 会把请求转发到/path/to/project1/目录下的index.html文件,此时由于 Nginx 配置了location中的alias,因此 Nginx 会把相对路径中的/解析为/path/to/project1/,所以/js/app.xxx.js实际指向的是/path/to/project1/js/app.xxx.js,这个文件的路径是正确的,可以被加载。但是如果直接在浏览器中打开index.html文件,这时候的相对路径中的/会被解析成浏览器当前所在的路径,比如file:///C:/Users/xxx/Desktop/index.html,此时的/js/app.xxx.js实际指向的就是file:///C:/js/app.xxx.js,这个路径是不存在的,因此浏览器无法加载静态资源文件,导致页面空白。

在相对路径中“/js/app.xxx.js”和“js/app.xxx.js”什么区别?

答:在相对路径中,“/js/app.xxx.js"和"js/app.xxx.js"有很大的区别。”/js/app.xxx.js"表示相对于根目录的路径,而"js/app.xxx.js"表示相对于当前页面的路径。
举个例子,假设我们有一个网站根目录为"/home/user/www/“,其中包含一个index.html页面和一个js目录,js目录下包含一个app.xxx.js文件。如果我们在index.html中使用”/js/app.xxx.js"作为js文件的路径,浏览器会在根目录下寻找js目录并加载app.xxx.js文件;如果我们使用"js/app.xxx.js"作为js文件的路径,浏览器会在当前页面的目录下寻找js目录并加载app.xxx.js文件。
因此,"/“符号表示根目录,而没有”/"表示当前页面所在的目录。

在相对路径中,以斜杠(/)开头的路径表示相对于根目录的路径,而不以斜杠开头的路径表示相对于当前页面所在的目录的路径。

例如,假设当前页面的 URL 是 https://example.com/path/to/index.html,那么:

相对路径 /js/app.xxx.js 表示 https://example.com/js/app.xxx.js;
相对路径 js/app.xxx.js 表示 https://example.com/path/to/js/app.xxx.js。
因此,在使用相对路径时需要根据具体的情况选择使用以斜杠开头的路径还是不以斜杠开头的路径。


http://www.kler.cn/news/18136.html

相关文章:

  • 行为型模式-中介者模式
  • 武忠祥老师每日一题||定积分基础训练(十)
  • 9大Python常用技巧 经验之谈
  • 安全访问服务边缘 (SASE) 技术的优缺点及工作原理
  • 基于海鸥算法改进的随机森林回归算法 - 附代码
  • 美句分享~程序员的放松时间~
  • 并发编程01:基础篇
  • Linux常用命令,你需要了解多少呢?
  • Java字符串的用法、原理、性能分析和总结
  • 杜甫经典长诗“三吏”“三别”赏析
  • FAST协议解析2 FIX Fast Tutorial翻译【PMap、copy操作符】
  • 代码随想录算法训练营day30 | 332. 重新安排行程,51. N 皇后,37. 解数独
  • Ubuntu22.04.2 LTS 安装nvidia显卡驱动及配置pytorch
  • David Silver Lecture 4: Model-Free Prediction
  • 【Java|golang】2432. 处理用时最长的那个任务的员工
  • ES堆内存:大小和交换
  • Mermaid流程图
  • .net7 通过 JsonTranscoding 实现 gRPC 与 Web API 一鱼两吃
  • 内网:定位域管理员
  • TokenGT:Transformer是强大的图学习器
  • java反序列化cc3链分析
  • docker基础命令
  • python基础实战7-字符串的format方法
  • 【观察】更懂业务的数智平台,才能应对数智化转型的“千变万化”
  • 5件关于JavaScript中this参数的事
  • 记录--极致舒适的Vue页面保活方案
  • linux内核:笔记1-内核和操作系统的关系
  • java程序员容易被人误解?我来聊聊常见的三种情况
  • 如何用Redis实现用户关注
  • 【Linux0.11代码分析】06 之 kernel 初始化 init 进程代码分析