前端项目部署

视频教程:前端项目部署

1、本地的服务器部署(node环境)

service.js

js 复制代码
const express = require('express')
const app = express()
const history = require('connect-history-api-fallback')
const { createProxyMiddleware } = require('http-proxy-middleware')

// 中间件设置静态资源目录
app.use(history())

// 解决刷新404的问题:方法二 - 设置中间件
app.use(express.static(__dirname + '/public'))

// 解决刷新404的问题:方法一 - 使用统配
// app.get('*', (req, res) => {
//   res.sendFile(__dirname + '/public/index.html')
// })


// 解决前端部署以后,ajax 发送不成功的问题
/**
 * 关于 ajax 发送失败原因:
 * vue项目中,vue.config.js 或者 vite.config.js 配置了代理,这个代理在开发环境中可以用,是由脚手架提供的,
 * 但是打包完了以后,打包出来的是 html、css、js 纯文件,没有脚手架了,也就没有代理服务器对接口进行转发了,
 * 那 ajax 访问的地址也就是错误的
 */
app.use(
  '/dev',
  createProxyMiddleware({
    target: 'http://sph-api.atguigu.cn',
    changeOrigin: true,
    pathRewrite: { '^/dev' : '' }
  })
)

app.listen(3000, () => {
  console.log('服务启动成功。。。')
})

将打包出来的文件放到 node 环境下,指定的静态资源目录下,访问的时候,出现两个问题:

1、页面刷新 404

解决办法:

1)配置 vue 路由模式,将 history 模式改为 hash 模式,但是这种模式,地址栏比较丑,一般网站不会使用这种模式

2)node 环境修改,使用

js 复制代码
 app.get('*', (req, res) => {
   res.sendFile(__dirname + '/public/index.html')
 })

3)node 环境修改 - 使用 connect-history-api-fallback 中间件

js 复制代码
const history = require('connect-history-api-fallback')
app.use(history())
2、ajax 请求失效了

出现这种情况的原因是:开发环境中,由脚手架提供了代理服务器,由代理服务器将接口进行转发。

而在生产环境中,使用的是打包出来的 html、css、js 这种纯文件,没有脚手架了,也就没有代理服务器对接口进行转发了,所以 ajax 访问的地址是错误的了。

vite.config.js

js 复制代码
server: {
  proxy: {
      [env.VITE_APP_BASE_API]: {
        // 获取数据的服务器地址
        target: env.VITE_SERVE,
        // 是否允许跨域
        changeOrigin: true,
        // 路径重写
        rewrite: (path) => path.replace(/^\/api/, '')
      },
    }
  },

解决办法:

1)使用 http-proxy-middleware 中间件

service.js

js 复制代码
const { createProxyMiddleware } = require('http-proxy-middleware')
app.use(
  '/dev',
  createProxyMiddleware({
    target: 'http://sph-api.atguigu.cn',
    changeOrigin: true,
    pathRewrite: { '^/dev' : '' }
  })
)

如何解决?

2、nginx 服务器部署

  • 将打包出来的文件,放到对应的目录
  • 修改 nginx.config 文件
    nginx.config
js 复制代码
...
location / {
	root	D:\dist		# root 指向打包的文件所在的目录
	index	index.html 	index.htm	# 默认访问的文件
	try_files	$uri/ $url/ /index.html;	# 解决刷新 404(没有办法匹配资源时,匹配 index.html)
}

location /dev/ {
	# 设置代理目标
	proxy_pass	http://sph-api.atguigu.cn/;	# 解决 ajax 地址错误的问题
}

3、云服务器部署

相关推荐
孟陬31 分钟前
Foobar 技术周刊#160:大模型让大规模形式化软件验证成为现实丨AI写C++代码之后会发生什么?丨我们真的需要alpha() 函数吗丨重试,有时会让故障更
前端·后端·typescript
flash俊杰1 小时前
屏幕感知双通道:截图之外,为什么还要一份 UIA 控件清单
前端
熟的生菜1 小时前
从零造一个腱绳驱动灵巧手——仿真器篇3:VTK 渲染与 3D 交互——看得见、点得着、转得动
前端
Henry-SAP2 小时前
SAP PP中的核心业务流程——离散制造、重复制造、流程制造三大模式解析
前端·数据库·人工智能·制造
徐小夕2 小时前
下载量超 30 万的开源智能体 Prime Agent:它把自己从 TypeScript 重写成了 Rust
前端·vue.js·github
Zhao-Jichao3 小时前
AI Prompting for Everyone 课程笔记 - P20 实验与期末项目 Lab and Final Project
前端·人工智能·笔记
Moment3 小时前
为什么这么多 Agent Harness 都选择 TypeScript
前端·后端·面试
toooooop83 小时前
CRMEB 故障排查笔记:安全网关只放行 GET/POST 怎么办
前端·javascript·vue.js·thinkphp6·crmeb
涛涛ing3 小时前
我现在最怕的不是 AI 写不出代码,是它写得太快,快到我不好意思说“等一下”
前端
AllData公司负责人3 小时前
【产品便捷使用一】AIIData 数据中台:企业基础版核心能力支持,一站式全链路数据处理实操指南
大数据·前端·数据治理·数据可视化·数据开发·数据服务·数据接入