当前位置: 首页 > 后端技术 > Node.js

node+express搭建web服务器部署前端项目

时间:2023-04-03 23:44:54 Node.js

传统前端项目部署依赖tomcat服务作为静态资源服务器,随着前后端分离的过程,前端项目需要单独部署。对于前端部署,除了使用nginx搭建静态资源服务器外,我们还可以使用node搭建web服务器。下面给大家分享下如何使用node搭建web服务器:一、在服务器上安装node环境1、进入weblogic目录,下载node二进制文件包(免编译)sudowgethttps://nodejs。org/dist/v8.14.0/node-v8.14.0-linux-x64.tar.gz如果没有wget,可以先下载wget:sudoyum-yinstallwget2,解压文件sudotarzxvfnode-v8。14.0-linux-x64.tar.gz3,配置节点环境变量sudovim/etc/profile添加NODE_HOME,配置exportpathexportNODE_HOME=/home/weblogic/node-v8.14.0-linux-x64.tar.gz执行命令使文件生效source/etc/profile4,安装npmcurlhttps://npmjs.org/install.sh|sh5。检查环境是否安装成功。执行node--version和npm-v查看版本号2.服务器脚本1、server.js脚本如果能点nodejs,脚本就很好理解了,下面是server.js启动脚本的内容:该脚本使用express框架,并将我们打包的dist目录用作静态资源。收到客户端请求后,由于vue项目是单页面应用,我们只需要将index.html返回给客户端即可。constfs=require("fs");constpath=require("path");constexpress=require("express");constapp=express();app.use(express.static(path.resolve(__dirname),"./dist")));app.get("*",function(req,res){console.log(req);consthtml=fs.readFileSync(path.resolve(__dirname,"./dist/index.html"),"utf-8");res.send(html);});app.listen(8082,()=>{console.log("服务器运行于http://10.29.43.152:8082");});这是一个非常简单的脚本,将express用作Web服务。如果你的vue项目使用的是mock服务,不涉及后端接口,那么以上内容可以满足纯前端部署。如果涉及接口调用,跨域方案,接口地址代理建议使用http-proxy,http-proxy-middleware中间件2,中间件模块constproxy=require('http-proxy-middleware');varoptions={target:'http://10.29.43.152:8090',//你的服务器端口changeOrigin:true,};varexampleProxy=proxy(options);app.use('/',exampleProxy);//'/'表示将上述代码添加到所有请求代理中。3、日志模块如果你想搭建一个比较完善的expressweb服务,你可能还需要一个优秀的日志模块。推荐使用摩根中间件。可以点此链接查看详细使用方法:https://www.npmjs.com/package/morgan4、其他中间件当然你也可以使用其他express中间件如:应用级中间件、路由级中间件、error处理中间件、内置中间件、第三方中间件(大家可以根据项目的实际情况选择对应的中间件配合搭建)这里就不多说了,大家可以参考express框架https://www.expressjs.com.cn/4x/api.html三、打包部署1、上传server.js和前端工程到服务端打包server.js和前端工程并上传到服务端frontEnd目录.2.启动服务在server端添加package.json,安装server.js启动依赖的快递包。执行npminstall命令自动安装。接下来我们运行:nodeserver.jsstartservice:运行成功后,可以看到我们的web服务器已经启动成功了。3、打开验证页面,点击登录,我们可以看到项目页面注:由于我这里使用的是mock服务,不涉及后端接口调用,所以可以当做纯静态的前端资源.在实际项目中,会用到代理和跨域方案。如果以上内容还是不能满足你的需求,可以在评论区留言,一起讨论!!