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

使用场景

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

运行方式

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

相关推荐
大布布将军1 小时前
⚡后端安全基石:JWT 原理与身份验证实战
前端·javascript·学习·程序人生·安全·node.js·aigc
闲云一鹤1 小时前
【工具篇】使用 nvm 进行 node 版本管理
前端·npm·node.js
小白咚2 小时前
npm在文件下输入运行命令,授权限制问题window
前端·npm·node.js
Dreamcatcher_AC3 小时前
Node.js留言板开发全流程解析
前端·javascript·mysql·node.js·express
『六哥』3 小时前
node.js 安装教程
node.js
程序猿的程18 小时前
Stock写给前端的股票行情 SDK: stock-sdk,终于不用再求后端帮忙了
前端·javascript·node.js
疯狂踩坑人19 小时前
【Nodejs】Http异步编程从EventEmitter到AsyncIterator和Stream
前端·javascript·node.js
WangHappy19 小时前
面试官:如何优化批量图片上传?队列机制+分片处理+断点续传三连击!
前端·node.js
岁月宁静20 小时前
AI 多模态全栈项目实战:Vue3 + Node 打造 TTS+ASR 全家桶!
vue.js·人工智能·node.js
離離原上譜1 天前
Windows 环境下 Node.js + Claude Code 安装与配置教程
windows·node.js