Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程(上)

简介: Nuxt.js(Vue SSR)创建项目到服务器(Nginx+PM2)部署详细流程

一、什么是 SSR ?

  • SSR 就是 服务器渲染,什么是 服务器渲染?由 服务器 组装好 DOM 元素,生成 HTML 字符串给到浏览器,也就是在浏览器里面是可以看到整个页面的 DOM 源码的。
  • SSR 解决的问题:
    SEO:搜索引擎的优先爬取级别是页面的 HTML 结构,当我们使用 SSR 的时候,服务端已经生成了与业务相关联的 HTML,这样的信息对于 SEO 是很友好的。
    内容呈现:客户端无需等待所有的 JS 文件加载完成即可看见渲染的业务相关视图(压力来到了服务端这边,这也是需要做权衡的地方,需要区分哪些由服务端渲染,哪些可以交给客户端)。
  • SSR 相关的弊端:
    代码兼容:对于开发人员来讲,需要去兼容代码在不同环境的运行 Vue SSR 所需要的服务端环境是 Node,有一些客户端的对象,比如 domwindows 之类的则无法使用。
    服务器负载:相对于前后端分离模式下服务器只需要提供静态资源来说,SSR 需要的服务器负载更大,所以在项目中使用 SSR 模式要慎重,比如一整套图表页面,相对于服务端渲染,可能用户不会在乎初始加载的前几秒,可以交由客户端使用类似于骨架屏,或者懒加载之类的提升用户体验。
  • VueVue SSR原生HTML 页面源码区别对比,在网页上右键查看源码:
    Vue SSR原生HTML 是可以看到源码标签的

    Vue 默认是看不到源码标签的,因为它是 JS 组装的。


二、什么是 Nuxt.js ?

  • 目前做 SSR 的方式有几种,大概列举一下:
    1、前端编写 原生静态页面,给到服务器,通过服务器框架进行组合数据,例如 phpWeb 开发
    2、使用 prerender-spa-plugin 插件,作者是 Vue 核心团队的成员,这种实现方式并不叫 SSR,而是 预渲染。不过效果上是一样的,甚至某种程度上来说可能要比 SSR 更好。相比官方提供的 SSR 繁琐配置prerender 配置更简单快捷。
    3、Vue 官方提供的轮子在 Node 端做 SSR, 相对于 prerender 插件来说,SSR上手真的超级复杂,有兴趣可以自行查看 Vue SSR 指南。这种方法可以做到真实数据实时渲染,完全可供 SEO 小蜘蛛尽情的爬来爬去,完全前后端同构,路由配置共享,不再影响服务器 404 请求,但是配置比较麻烦、处理流程比较复杂 (比对预渲染插件,复杂太多)约束较多,对服务器会造成较大的压力,服务器成本太高了。
    4、Nuxt.js 是使用 WebpackNode.js 进行封装的基于 VueSSR 框架,不需要自己搭建一套 SSR 程序,而是通过其约定好的文件结构和 API 就可以实现一个首屏渲染的 Web 应用。
    我这里选择使用 Nuxt.js 来做 SSR

三、通过 Nuxt.js 创建项目

  • Nuxt.js 官方安装流程,项目需要依赖 Node 环境,我这里用的包管理工具是 NPMNuxt.js 版本是 2.14.5
  • 创建项目,确保安装了 npxnpxNPM 版本 5.2.0 默认安装了):
$ npx create-nuxt-app <项目名>
$ npm create nuxt-app <项目名>
$ yarn create nuxt-app <项目名>
  • 或者用 yarn
$ yarn create nuxt-app <项目名>
  • 我这里用 npx 创建一个测试项目,例如:
$ npx create-nuxt-app nuxt-test
// 进入到文件夹,执行创建项目命令
dengzemiaodeMacBook-Pro:test dengzemiao$ npx create-nuxt-app nuxt-test
create-nuxt-app v3.5.2
✨  Generating Nuxt.js project in nuxt-test
// 项目初始配置,自己看着选,用什么选什么 不懂就选 None,后面也可以装的。
? Project name: nuxt-test
? Programming language: JavaScript
? Package manager: Npm
? UI framework: None
? Nuxt.js modules: Axios - Promise based HTTP client
? Linting tools: (Press <space> to select, <a> to toggle all, <i> to invert sele
ction)
? Testing framework: None
? Rendering mode: Universal (SSR / SSG)
? Deployment target: Server (Node.js hosting)
? Development tools: jsconfig.json (Recommended for VS Code if you're not using 
typescript)
? What is your GitHub username? dengzemiao
? Version control system: None
.....等待一段时间,就会提示创建项目成功
🎉  Successfully created project nuxt-test
// 如果是开发中,运行 npm run dev 就可以,开发者模式
To get started:
  cd nuxt-test
  npm run dev
// 如果是需要发布到线上了,需要先 build 在 start 才能正式发布
To build & start for production:
  cd nuxt-test
  npm run build
  npm run start

四、Nuxt.js 本地运行

  • 这篇文章只讲 创建项目发布服务器,以及服务器怎么部署才能通过服务器访问,其他项目细节配置放在其他文章中去写。
  • 创建完成项目之后,可以先运行项目一下,用上面 To get startedTo build & start for production 中的方式运行起来项目,只是前者是 development 模式,后者是 production 模式。
dengzemiaodeMacBook-Pro:test dengzemiao$ cd nuxt-test
dengzemiaodeMacBook-Pro:nuxt-test dengzemiao$ npm run dev
> nuxt-test@1.0.0 dev /Users/dengzemiao/Desktop/Project/web/test/nuxt-test
> nuxt
   ╭───────────────────────────────────────╮
   │                                       │
   │   Nuxt @ v2.14.12                     │
   │                                       │
   │   ▸ Environment: development          │
   │   ▸ Rendering:   server-side          │
   │   ▸ Target:      server               │
   │                                       │
   │   Listening: http://localhost:3000/   │
   │                                       │
   ╰───────────────────────────────────────╯
  • 然后通过上面的 http://localhost:3000/ 打开浏览器进行访问,但是这个是开发环境。
  • pages 里面的 .vue 文件都会被自动转成路由,文件夹也是一样。
  • 例如:项目 pages 文件夹里面有个 index.vue 文件,它会被编译成 index.html,在路由中也就是 /index,可以尝试修改 index.vue 里面的内容,或者新建一个 .vue 文件进行测试内容。
  • 例如:我在 pages 里面创建一个测试文件 dzm.vue,运行起来项目,访问的路径就是 http://localhost:3000/dzm

<template>
  <div>
    dzm 测试页面 {{ env }}
  </div>
</template>
<script>
export default {
  data () {
    return {
      // 当前启动的环境 development: 开发环境 production: 生产环境
      env: process.env.NODE_ENV
    }
  }
}
</script>

五、Nuxt.js 直接 ip 访问项目(生产和开发都适用)

  • 运行开发环境 $ npm run dev
╭───────────────────────────────────────╮
   │                                       │
   │   Nuxt @ v2.14.12                     │
   │                                       │
   │   ▸ Environment: development          │
   │   ▸ Rendering:   server-side          │
   │   ▸ Target:      server               │
   │                                       │
   │   Listening: http://localhost:3000/   │
   │                                       │
   ╰───────────────────────────────────────╯
  • 运行生产环境 $ npm run build + $ npm run start
╭──────────────────────────────────────────╮
   │                                          │
   │   Nuxt @ v2.14.12                        │
   │                                          │
   │   ▸ Environment: production              │
   │   ▸ Rendering:   server-side             │
   │   ▸ Target:      server                  │
   │                                          │
   │   Memory usage: 29.1 MB (RSS: 73.1 MB)   │
   │                                          │
   │   Listening: http://localhost:3000/      │
   │                                          │
   ╰──────────────────────────────────────────╯
  • 通过上面的两个运行的结果,得到的地址都是 http://localhost:3000/,这个是固定本地 localhost:3000 才可以进访问,需要改成支持本地 ip 也能访问,也就是你拿到本机电脑的 ip 加上端口也能进行访问到,例如: http://10.0.93.169:3000

相关文章
|
6月前
|
存储 弹性计算 网络协议
阿里云服务器ECS自定义购买流程:亲测图文全解析
本文详细图解阿里云ECS自定义购买全流程,涵盖付费模式、地域选择、实例规格、镜像、存储、网络、安全组及登录设置等核心配置,助您轻松掌握专业级云服务器搭建方法。
241 0
|
6月前
|
Shell 网络安全 开发工具
服务器已经搭建好的项目如何关联至gitee对应仓库并且将服务器的项目代码推送至gitee-优雅草卓伊凡
服务器已经搭建好的项目如何关联至gitee对应仓库并且将服务器的项目代码推送至gitee-优雅草卓伊凡
397 5
|
6月前
|
弹性计算 网络协议 Linux
阿里云服务器简介及使用教程,附送云服务器ECS自定义创建流程
阿里云ECS是安全可靠、弹性灵活的云计算服务,支持多种实例规格与操作系统,可快速创建和管理云服务器。本文详解ECS介绍、购买流程及使用教程,涵盖配置选择、网络设置、安全组规则等,助您轻松上手。
623 16
|
6月前
|
存储 弹性计算 网络协议
超详细的阿里云服务器购买流程,ECS自定义购买配置教程
本文详细图解阿里云ECS服务器自定义购买全流程,涵盖付费模式、地域选择、网络配置、实例规格、镜像、存储、安全组及登录设置等核心步骤,助您轻松掌握专业级云服务器搭建方法。
|
7月前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
422 18
|
6月前
|
弹性计算 网络协议 Linux
阿里云服务器ECS创建流程(新手详细图文教程)
本文图解阿里云ECS自定义购买全流程,涵盖付费模式、地域选择、实例规格、镜像、存储、网络、安全组及登录设置等关键步骤,助您快速掌握云服务器配置要点,适合专业用户参考操作。
436 7
|
7月前
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
534 15
|
7月前
|
弹性计算 安全 Linux
使用阿里云服务器安装Z-Blog博客网站流程,新手一键部署教程
本教程教你如何在阿里云99元服务器上,通过宝塔Linux面板一键部署Z-Blog博客。基于CentOS 7.9系统,从远程连接、安装宝塔面板、开放端口到部署Z-Blog全流程详解,操作简单,新手也能轻松搭建个人博客网站。
919 13
下一篇
开通oss服务