00:01
那最后要说的一个问题是关于browse root的问题。他有一个什么问题呢?我来给大家说一下。来先呢,把我们的开发环境。里面的hush route改成but。没问题是吧,好改一下啊,把先引路改一下,接着把我们的这一个。标签名改一下。好,接着我们来去在开发环境里面用一下,是没有任何问题的,是可以访问的。OK,你怎么刷新也是对的,对吧。我们前面就用的是这种模式。但是一旦到了生产环境,即使没有跨越的问题。我们用上b root也会出现一些状况,我们来看一下。那首先呢,我们要对上的这个代码进行一个生产环境打包,对吧。
01:04
PM。好,需要一点时间啊,我们稍微等待一下。好。这个打包了,终于完成了。那现在呢?我们来去把生成的打包的所有资源。给它拷贝到我们后台应用的public下面,先把以前的给它删掉。拷贝记录,我们现有的新的也用上root的版本。把我们的服务器呢,重新的运行一把。那运行起来以后呢,我们需要访问的账号是5000啊,因为我们后台应用运行的是5000对吧?好,那我们呢,很自然的去访问5000。
02:09
好,这个没有任何问题,大家看着也能定位到我们的home,因为我们已经登录了是不是。但是一旦你去做刷新的操作。它就会出现异常什么问题了,我们来看一下。啊,有报错,实际上通过network也能看得很清楚。也就是说我们请求的这个5000下面的home。他没有找到对应的资源来处理。这一个就要说一个事情了。那我们前面在有井号的时候,我们以前前面写的是井号后。单前面是5000啊,斜杠井号斜杠后,而现在就是缺了一个,少了一个井号之后。
03:02
就出现了一个异常的状况。先要说清楚为什么。好,那这个地方我们先说一下啊,这个井号斜杠后,如果我去刷新这一个路径。我去请求这个路径。它本身啊,这个是它有自动跳转啊,就是路由已经实现了一个处理,我如果请求的这个路径在后,它这一个部分是不会携带给后台的,也就是他总是请求的是我们项目的跟路径。而项目根路径对应的。是后台会给我返回的,是index。点HTML。能听懂吗?而现在啊,我们没有了井号,那我们是5000下面的。
04:08
Home。那这一个后台收到的是这一个路径的请求,前面我们可以不管它。那这一个路径,我后台拿到以后,是把它看成后台路由来处理的,而我们是希望它是前台路由处理才是对的。那也就是说啊,我们。在这里面要有一个事情要说一说一个事情补充一下,我们前台应用运行的还是3000。对吧,这地方说我如果这一个啊,开环境用的3000,我去刷新这个是没有任何问题的,为什么没有问题。我们来看一下network,你就能知道啊,是一个什么原因刷新。
05:01
大家看一下我们。请求的是这个路径,但是啊,我们的开环境的服务器总是给我的是首页。而我们没有了,呃,开源环境的那个,他帮我的处理,那我们就实际上。如果我没有这个井号。对吧,我就去刷新它。那这个时候他就会找不到对应的资源来处理,因为我们的后台确实没有这个处理他的一个路由。而要想正确,应该是有我们的后台应用,以及我们收到的应用。来去,给我们去返回一个index页面。但它的区别看来些请求它需要返回index页面,哪些请求应该是交给后台路由处理。
06:01
当然我们知道。啊,后台路由它是有相应的路由注册的。来打开我们的server。我们是在这里面注册路由器,从而注册所有的后台路由的。大家知道我们用express里面,它是用的中心键来处理我们的请求的。那一旦我某一个请求不能匹配我们某一个路由的话,它就会继续往下走。那我就可以做一件事情,做一件什么事呢?诶,这个代码我已经写了,只是没有打开。给它打开一下。这里面我用了一个啊,中间自定义的中间件来去干嘛呢,一旦你的请求没有路由器中的某一个路由帮你处理的话,那我就会去读取。我的index页面,给你返回index页面所对应的数据。
07:04
啊,这样就能实现啊,只要我。前台应用啊,输入一个路径去请求的话,后台没有路由处理,就会返回给我前台一个index页面,而index页面里面的JS会将这个路径作为前台路由。来进行处理,那就达到了我们开环境类似的一个效果,也就实现了我们的需求,解决了404的问题。来,我们来看一下。在这里呢,我需要去把我们的后台应用给重新的运行一下。来运行一下以后呢,再去访问啊,我们的5000。好,来刷新。诶,大家看到现在就给我返回的就是我的前台页面。
08:06
那是因为我去请求刷新这个路径的时候,没有后台路由能够处理,最终返回的是我的首页页面,而我的首页页面会去解析这个路径,作为前台路由路径去处理。最后我们的。整个应用就没有任何问题了。好,这个其实是我们面试经常问的一个问题,就是如果我们用root刷新某一个路由路径时,会出现404。那原因是什么?你怎么解决?原因就是我们项目的跟路后面的pass会被当成后台路由路径处理,而后台没有对应的路由来处理这个路径,那自然就是零四了。那解决办法,我们当前是使用一个制定中心线去解决这个问题的。
09:00
当。实际上我们这个解决方法相当于配了一个后台的404页面。那这个东西其实后台的服务器也是可以做这样类似的配置的,只是说代码会跟这个不太一样。但这一个我们当前的需要注意。我们这样其实是有个要求的,我们的前台路由路径不要跟我的后台路由。啊,像重复一样。那样的话会产生一个错误的处理。因为我们刚才说过啊,我们的前台路由路径去请求的时候,后台路由没有处理,才会交给我的这个自定中文键去返回首页。那如果他们重复了,那这样的话就会返回后台数据,这不是我们想要的效果。啊,这地方要注意这样一个事情。
10:02
好行,那我们这个项目相关的东西呢,到这里面基本上就讲完了好。
我来说两句