前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

本讲我们将探讨 Nuxt 项目的打包与部署,涉及内容如下:

  • 多种打包方式;
  • 部署为 Node.js 服务;
  • 部署为静态服务;
  • 云服务。

# 多种打包方式

与传统服务端渲染只能发布于 Node.js 服务不同,Nuxt 应用不仅可以发布在 Node.js 服务上,还能预渲染内容做为静态服务,Nuxt3 甚至可以发布在 serverless 或 cdn 等云服务环境。

打包 Nuxt 项目可以用nuxt build或nuxt generate,根据配置不同,可分为以下几种方式:

  • SSR:nuxt build。代码会被打包到.output目录,打包产物分为 public 和 server 两部分。入口为 index.mjs,可以使用 node 或 pm2 等进程管理工具启动服务,也可以配合nuxt preview启动预览服务。
  • SPA:ssr:false + nuxt generate。产物只有 .output/public 中的静态文件,发布 .output/public 即可。但是 SPA 需要在运行时访问接口获取数据,因此仍然需要提供接口服务才能正常显示页面。
  • SSG:nuxt generate。产物只有 .output/public 中的静态文件,发布 .output/public 即可。这种方式会在创建时生成页面内容,因此只需要提供静态服务即可预览。
  • 其他服务:presets,可用于其他非 node 运行时打包,例如 deno,serverless,edge worker 等。产物根据预设不同会有不同,部署需要按照对应的平台进行操作。

# 打包 SSR

默认情况下,直接执行nuxt build:

复制代码yarn build
@前端进阶之旅: 代码已经复制到剪贴板

打包结果如下:server 内会有内容,index.mjs 为入口文件。

img

# 打包 SSG

默认情况下直接执行 nuxt generate:

复制代码yarn generate
@前端进阶之旅: 代码已经复制到剪贴板

下图为 generate 结果:server是空的,只有 public 中的静态内容。

img

# 打包 SPA

配置 ssr: false,然后执行 nuxt generate:

arduino
复制代码export default defineNuxtConfig({
  ssr: false,
})
复制代码yarn generate
@前端进阶之旅: 代码已经复制到剪贴板

下图为 generate 结果:server是空的,跟 SSG 略有不同,动态的 detail 没有了,会作为前端动态路由出现。

img

# 使用 presets

配置 nitro.preset选项即可。

img

例如,我们准备发布到 vercel,可以设置 nitro.preset 为 vercel 或 vercel edge。

# 部署为 Node.js 服务

针对前面介绍的 SSR 方式打包,访问页面需要服务器实时渲染,因此需要启动 node server。

# 启动 node.js 服务

执行如下命令启动服务:

bash
复制代码node .output/server/index.mjs
fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏