express整合webpack的打包文件dist

对于我来说,第一次接触前后端整合问题的小白,刚开始是一脸懵逼,这个问题整整坑了我一个晚上加一个早上,现在写出来总结;

前端开发:vue-cli+webpack;

后台开发:nodejs框架express;

 

前端开发之后,使用localhost能正确访问vue-cli自带的服务器。

而在后台方面,一开始我是直接在expres的views和public上开发前端页面,因此在一些配置方面都是上个项目的,现在整合新项目,让我有点方。

 

过程:

1、进入前端目录,npm run build 命令直接将前端项目打包成dist文件;

2、我是直接将dist文件复制到服务器的根目录;

3、更改routes文件夹下的index文件,将路由访问'/'改成渲染dist文件下的index.html;

结果:访问服务器,静态资源404;

 

二次改进过程:(经过大量的查资料)

1、找到vue-cli项目下的config文件夹下的index.js文件,找到build部分的assetsPublicPath;(接下来会说一下assetsPublicPath的作用)

2、将assetsPublicPath更改为'http://localhost:5777/dist';

3、整合到express服务器上

结果:

src="http://localhost:5777/dist/static/js/manifest.0d43cb9e3c7036b97742.js" 

 这个时候我就懵逼了,这不就是正确的路径吗?

可是还是404,这就尴尬了。

乱入一下assetsPublicPath知识点:

看了一下官方文档,蹩脚英语的我又懵逼了,我说一下大致意思,assetsPublicPath可以指定输出文件的公共地址在浏览器的引用。

首先,webpack在打包的时候已经为你写好了dist文件中静态资源的引用,也就是'./static/js|css/***',也就是客户端访问dist可以加载静态资源。

但当dist部署到express上的时候,访问服务器时候,静态资源的url为:assetsPublicPath  +  './static/js | css/ ***';

也就是上面代码所表示的。

 

可为什么还是404呢?这就关乎到express的问题了。

在app.js的配置中,有这样一行代码:

app.use(express.static(path.join(__dirname, '/dist')));  (默认为/public)

这句话的意思是设置express访问静态资源的目录,也就是express需要访问静态文件时都是从public入口。

所以第二种情况的地址实际上访问的是   src="http://localhost:5777/dist/dist/static/js/manifest.0d43cb9e3c7036b97742.js" 

也就是assetsPublicPath中的localhost:5777和express.static中的dist重复了。

 

总结来说:只需要将assetsPublicPath改为 'localhost:5777' + express.static的 '/dist' + 前端默认路径 '/static/js |css /***';

 
 

 

转载于:https://www.cnblogs.com/Yoriluo/p/7000291.html

项目经过webpack打包后会生成一个dist文件夹,其中包含了经过处理和压缩后的最终产物。dist文件夹下的内容是部署到服务器或发布到线上环境的静态资源文件dist文件夹的结构取决于webpack的配置以及项目的需求。通常它会包含一个或多个JS文件,包括应用的逻辑代码和依赖的第三方库,以及一个或多个CSS文件,包含项目的样式代码。此外,还会包含一些字体文件、图片或其他静态资源,这些文件在构建过程中被处理并复制到dist文件夹中。 在项目开发过程中,dist文件夹不会被直接修改,而是由webpack根据配置和源代码生成。webpack处理过程中会进行代码的压缩、合并、混淆等操作,以减小文件大小并提高加载速度。此外,webpack还会处理一些前端框架或工具的特定需求,例如处理jsx代码、提取公共模块等。 通过打包后的dist文件,我们可以快速查看打包后的效果,验证代码是否正确地被处理和运行。同时,dist文件也是发布项目到线上环境的基础,我们可以将dist文件夹中的内容直接上传到服务器进行部署,并通过浏览器访问项目的最终版本。 总的来说,dist文件夹是经过webpack处理后的项目产物,包含了所有打包后的静态资源文件。它具有优化过的代码和资源,适合部署和发布到线上环境使用,能够提供更好的性能和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值