如何启动一个静态的前端工程的服务

使用场景

在前端开发过程中,可能会要对发布到生产的包做验证或者要本地运行一个开源的包的实例,这时候就需要在本地启动一个前端服务,一般有以下两种方式

运行方式

Live-Server

通过VsCode去安装插件LiveServer,然后打开静态工程,点击右下角的Live Server按钮 即可运行工程

  • 优点:使用简单,方便快捷
  • 缺点:不支持自定义配置,如工程里面需要代理请求,则无法实现

express

使用express结合http-proxy-middleware来代理请求运行静态工程

  1. 在项目根目录 运行命令,初始化工程
shell 复制代码
npm init -y
  1. 然后安装库nodemonexpresshttp-proxy-middlewaremime-types
工具 介绍
nodemon^[1](#工具 介绍 nodemon1 是一个工具,可在检测到目录中的文件更改时自动重新启动Node应用程序,从而帮助开发基于 Node.js 的应用程序。 express2 适用于Node.js的快速、不拘一格、简约的 Web 框架。 mime-types3 帮助Node.js程序识别mime-types类型的插件 http-proxy-middleware4 http代理中间件,使Node.js 代理变得简单。轻松配置connect、express、next.js等代理中间件。 "#user-content-fn-1")^ 是一个工具,可在检测到目录中的文件更改时自动重新启动Node应用程序,从而帮助开发基于 Node.js 的应用程序。
express^[2](#工具 介绍 nodemon1 是一个工具,可在检测到目录中的文件更改时自动重新启动Node应用程序,从而帮助开发基于 Node.js 的应用程序。 express2 适用于Node.js的快速、不拘一格、简约的 Web 框架。 mime-types3 帮助Node.js程序识别mime-types类型的插件 http-proxy-middleware4 http代理中间件,使Node.js 代理变得简单。轻松配置connect、express、next.js等代理中间件。 "#user-content-fn-2")^ 适用于Node.js的快速、不拘一格、简约的 Web 框架。
mime-types^[3](#工具 介绍 nodemon1 是一个工具,可在检测到目录中的文件更改时自动重新启动Node应用程序,从而帮助开发基于 Node.js 的应用程序。 express2 适用于Node.js的快速、不拘一格、简约的 Web 框架。 mime-types3 帮助Node.js程序识别mime-types类型的插件 http-proxy-middleware4 http代理中间件,使Node.js 代理变得简单。轻松配置connect、express、next.js等代理中间件。 "#user-content-fn-3")^ 帮助Node.js程序识别mime-types类型的插件
http-proxy-middleware^[4](#工具 介绍 nodemon1 是一个工具,可在检测到目录中的文件更改时自动重新启动Node应用程序,从而帮助开发基于 Node.js 的应用程序。 express2 适用于Node.js的快速、不拘一格、简约的 Web 框架。 mime-types3 帮助Node.js程序识别mime-types类型的插件 http-proxy-middleware4 http代理中间件,使Node.js 代理变得简单。轻松配置connect、express、next.js等代理中间件。 "#user-content-fn-4")^ http代理中间件,使Node.js 代理变得简单。轻松配置connect、express、next.js等代理中间件。
shell 复制代码
npm i nodemon express http-proxy-middleware mime-types -D
  1. 编写入口文件app.js
javascript 复制代码
const express = require('express')
const path = require('path')
const mine = require('mime-types')
const { createProxyMiddleware } = require('http-proxy-middleware')
const app = express();
const gateWayProxy = createProxyMiddleware('/api', {
	target: 'http://172.18.0.197',// 设置要代理的目标服务器
	changeOrigin: true, //  启用跨域
	// pathRewrite: {
	// '^/api': '',// 将请求路径中的'/api'替换为空白
	// },
});
// 使用代理中间件
app.use(gateWayProxy);
// 使用静态文件中间件处理静态文件请求
app.use(express.static(path.join(__dirname), {
	setHeaders: (res, path) => {
		// 根据文件扩展名设置正确的 MIME 类型
		const mimeType = mine.lookup(path);
		// console.log(mimeType)
		if (mimeType) {
			res.setHeader('Content-Type', mimeType);
		}
	}
}))

// 处理根路径请求,发送index.html
app.get('/', (req, res) => {
	res.sendFile(path.join(__dirname, 'index.html'));
})

const port = 3001;
app.listen(port, () => {
	console.log(`Server is running on port ${port}`);
});
  1. 在package.json文件中的scripts节点中添加运行脚本
javascript 复制代码
{
	"scripts":{
		"dev":"nodemon app.js"
	}
}
  1. 执行命令,启动静态工程
shell 复制代码
npm run serve

Footnotes

  1. nodemon

  2. express

  3. mime-types

  4. http-proxy-middleware

相关推荐
清风细雨_林木木28 分钟前
Node.js 和 Python 的关系
node.js
吴声子夜歌29 分钟前
Node.js——Express框架
node.js·express
吴声子夜歌2 小时前
Node.js——异常处理
node.js
FreeBuf_4 小时前
谷歌将Axios npm供应链攻击归因于朝鲜APT组织UNC1069
前端·npm·node.js
阿正的梦工坊5 小时前
pnpm和npm前端包管理工具有什么不同?
前端·npm·node.js
叶半欲缺5 小时前
Node.js 安装教程
node.js
吴声子夜歌5 小时前
Node.js——Web模板引擎
前端·node.js
雪碧聊技术5 小时前
linux下载node.js(这里面已经包含了npm)
npm·node.js
摇滚侠17 小时前
搭建前端开发环境 安装 nodejs 设置淘宝镜像 最简化最标准版本 不使用 NVM NVM 高版本无法安装低版本 nodejs
java·开发语言·node.js
tumeng07111 天前
Node.JS 版本管理工具 Fnm 安装及配置(Windows)
windows·node.js