Nginx Tomcat部署Angular javaweb项目的操作-LINUX

首页 2024-07-06 03:02:26

一开始,我用ng build –prod –aot编译包装时。这里需要注意的是,由于官方已经内置,打包时只需输入ng build –prod就够了。这里可以比较一下我的项目体积:

ng build : 8,348,761字节
ng build –aot : 9,232,405字节
ng build –prod : 1,839,811字节
ng build –prod –aot : 1,839,811字节

最后可以看出,ng build –prod可以完成产品化的最小包装。我在这里不明白。预编译构建比传统构建更大。我希望伟大的上帝能帮助回答。

这里就不谈如何让项目变小了。

当我将dist中的文件复制到tomcat的ROOT文件夹中时,打开http://127.0.0.1时,显示了熟悉的项目页面。习惯性地按F5刷新,发现404错误。百度发现了相关问题,得出结论:第一次进入页面时,Angular的路由机制处理了正常流程和正常流程。但是,如果有刷新操作,则向后端服务发送请求。如果后端没有将您的请求重新定位到index.html(此处指单页应用入口),报404找不到页面错误。

哇,好啰嗦啊。但至少要明白原因是什么,知道原因是什么,那么就应该考虑如何解决它!

立即学习“Java免费学习笔记(深入);

解决方法1:

将Angular的url风格配置成hash风格,这种方法是我见过最多的,都是从stackoverflow上抄来的。现在H5pushstate风格普遍使用,angular官员告诉我们,如果没有足够的理由使用hash风格,最好尽量使用h5风格。你现在有一个#锚点不合适吗?而且还有人指出,如果配置hash风格,在微信支付或angular的深路径上还是会出现404的问题。如果你坚持要用,没问题。详情请参阅官方文件

解决方法2:

既然报了404,你不就把tomcat指定的错误页作为根目录吗?

描述:打开Tomcat容器目录,Tomcat/conf/web.xml,移到底部,添加以下代码:

配置完成后,重启Tomcat。不管现在怎么刷新,页面显示都没问题。但我们发现,虽然页面可以显示,但我们可以在network标签下看到404的请求。也就是说,在我们刷新的那一刻,angular找不到页面,只是被Tomcat作为404引导到index.html去了。Tomcat把一个误入歧途的人带回了正路,但同时也在他身上印上了“他曾经是坏人”的标记。先不说配错页的方法是否合适,先说这个404标记会给我们带来什么问题。首先,只要你遇到一个有404错误页面处理的平台,你就必须完成它。例如,微信,他检测到你有404页,他立即给你一个页面来帮助丢失的孩子找到家。

非常良心,非常善良,他做得很好,但你的工作会失去啊。如果你的页面放在公共账户中,一旦授权进入寻找孩子的页面,你的经理就不会杀了你。所以这种方法是否使用,你可以自己做!

解决办法3

然后你找不到页面,我的后端会指导你!我写了一个拦截器或过滤器。在您发送任何请求之前,我将重新定向您的index.html去,没问题!当然没问题。这是为了找到病因的特效药~这一切似乎都是完美的解决方案~然而,我们发现我们今天没有谈论这个主题。我们必须选择这个解决方案的一个小问题!否则,我们的最终举动似乎很平淡。
由于我们的项目前后分离,没有国家服务。后端负责数据库操作,并将相关接口数据返回到前端。前端只负责处理显示逻辑并与后端交互。频繁转发,
后端ps:你让我不用处理页面,让我转发。傻吗?如果你只是不想在后端转发,你能做什么?当然是欺负运维!

解决方案·终极

如果是运维大神,估计你可以在旁边喝茶。如果是..孟新?那么作为前端,你可以帮忙(zhuang)忙(bi)使用nginx啊!反向代理,负载平衡,balabala…

假装你有nginx环境,我在这里使用windows。打开nginx.conf文件,不写具体描述,自己看注释,如果不想看,可以直接下载配置文件。

需要注意的是,根目录配置不是location / {},这意味着所有的请求都被转发。

以上是Nginx Tomcat部署Angular 更多关于javaweb项目操作的详细信息,请关注其他相关文章!


p