每天の收获
关于html里经常找不到资源,或者说路径问题
说起来,接触前端也有两年了吧。其实有时候一直闹不懂有的时候资源为什么找不到,为什么又能找到。很困扰,就算成功引入了也其实并不是那么清楚。
故今天借此机会特开一篇博,详解路径地址问题
1.先说说使用项目的环境
IDE使用的是2019款的IntelliJ IDEA,使用的SpringBoot框架,前端使用的html5,前端引擎使用的thymeleaf。
thymeleaf配置如下:(其实就是默认配置啦,你也可以根据你的项目需要将thymeleaf扫描位置配置到你需要的地方)
spring:
thymeleaf:
cache: false
prefix: classpath:/templates/
check-template: true
suffix: .html
encoding: UTF-8
servlet:
content-type: text/html
mode: HTML
其中prefix为tymeleaf去扫描的位置的前缀,可以根据你项目需要扫描的位置不同去调整,默认是在templates文件夹下。
2.关于访问url的误区
我在这里先以自己的项目内容举个例子:
这里是我resource下面的项目结构,现在我们假定要访问views/user路径下的index界面,那我们该怎么访问?
一开始我是像上面这也访问的,你也可以看到路径是views/user/index.html,看上去也没问题对吧?这里我们再看下index.html这个文件里的资源引用是如何引用的呢?
感觉是不是就有点不对劲了? 虽然…/…/这样写,在逻辑上也没问题,因为就是退回上一级的上一级再去访问,IDE也不会报错,但是其实犯了一个很致命的错误。我们来细细探讨一下,其实这是在去访问静态的页面,就像你的图片一样,他是静态的放置着的,我们都知道视图解析器这一东西一直在运作,但是这样其实只是单纯的访问资源,并没有通过解析器生成页面。
3.如何理解通过解析器生成的页面
通过第二点,我们可以清楚的了解到,我们访问界面很明显需要通过解析器后再生成界面,而不是直接访问静态的资源,那么这一小点我们就来详细描述做法。
还是以我这个项目里的东西举例:
- 将你写的静态页面放到你配置的引擎模板扫描目录下:
- 在Controller里配置相应的页面生成代码:
- 在网页输入正确的url而不是像.html这样去访问静态页面
- 接下来的是我想说的关于路径最重要的一个东西了:资源路径
对,大伙儿肯定会很好奇,你这不是还是加了…/吗?那你这样做的意义何在。
之所以这里会加…/,是因为当你在第二步生成了html页面之后,这个页面是放置在你输入的url: admin/这个子文件之下的。
你可以理解为他生成的页面是放在和css文件夹同级的admin文件夹下,故他需要…/退出当前文件夹再到css文件夹下去寻找资源。
最后页面结果如下: