前端项目部署

视频教程:前端项目部署

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、云服务器部署

相关推荐
崔庆才丨静觅3 分钟前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅24 分钟前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅1 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment1 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅1 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊1 小时前
jwt介绍
前端
爱敲代码的小鱼1 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Cobyte2 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc
NEXT062 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
剪刀石头布啊2 小时前
生成随机数,Math.random的使用
前端