什么是相对路径与绝对路径
上周汇报时解决了一些问题,同时也暴露了很多问题,其中一个便是相对路径与绝对路径,对于使用xampp搭建服务器的php来说,【相对路径】指的是相对于用户访问的当前文件,【绝对路径】指的是相对于htdocs这个文件。
为什么没使用绝对路径
之前听团队的其他成员说相对路径和绝对路径什么的,自己确实不太懂,但后来也没用到过,也就没去查,实际上是应该用到而自己没使用,这也和之前不太细心有关吧,一开始看教程有些知识只是过了一遍,没有太多印象,再有就是后来套模板的时候报错,说找不到CSS文件,后来就按照上面给的路径放的文件,放上去没有报错,能正常使用,也就没再管它。
为什么要使用绝对路径
开会时通过演示让我知道了绝对路径的重要性,但是当时确实没反应过来怎么整
开完会以后我觉得这么重要的问题教程上肯定会有,然后翻了翻教程
这时才明白如果没有指定,原来它默认是靠相对路径找到的CSS文件,这样也就出现了问题
teacher_id是参数名称,那么如果使用相对路径,则后面的CSS/...就不会再被认为是CSS样式,而是把它当做参数,那么就造成了引用CSS样式失败。
虽然我们通过地址找到了CSS样式的文件,但是这个地址只有我们自己理解为Student的CSS样式文件,而在他人看来,这是Student控制器下的一个CSS方法,后来的报错也证实了这一点
因为我们是在Student和Teacher控制器的V层引用的CSS样式,所以CSS/...从控制器后方出现,那么就自然而然的被当作是控制器下的方法
我们再来看一下源码
可以看到,源代码传给浏览器的时候,只是传给浏览器“css/bootstrap.min.css”等,而非确切的地址,浏览器就会根据thinkphp5/public/index/student/css这个路径去找,而此时就暴露了问题,假如URL路径改变,那么浏览器再根据路径寻找,就会出现找不到CSS样式文件的问题,因此使用绝对路径就可以避免这个问题。
这是CSS文件的存放位置
然后就是绝对路径不受地址的干扰,而相对路径会受地址的干扰,如果在public后面添加/index.php,或者像上面一样删除student或者teacher后面的index,直接输入CSS,那么就会出现错误
假如我们根据教程使用绝对地址,那么浏览器将会根据绝对地址寻找CSS样式文件,此时路径的改变,则不会造成CSS样式文件无法被引用的情况
同时,就算后来我们像上面那样删去student后面的index.html而输入CSS,也不会出现上面那样出现文件的问题,此时会报出“方法不存在的错误”,不会像之前那样出现歧义,给团队合作带来麻烦。
总结与反思
开完会回到宿舍确实挺失落的,明明该会的东西却没有掌握住,而且最近汇报总是有问题,有时候看见某些问题觉得难,或者觉得无所谓就放在一边没有管,久而久之就造成了一些比较大的失误,其实也挺感谢这次机会的,给了我一个反思的机会,也让我知道了解决问题与应用知识的重要性,不过也好在这些问题暴露了,要不然以后还是记不住,这次的收获也是蛮大的。