Vercel 部署 Node 服务

简介: Vercel 部署 Node 服务

引子


之前在写面试常客:HTTP 缓存[1]时,曾经就强缓存和协商缓存写过两个demo,但缓存要在服务端做,只能贴上代码,不能在网页上感受(虽然我贴了gif)


笔者的所有 demo 例子都放在 github page 上,其特点是不需要服务器即可部署静态资源,但它不具备部署服务端应用能力


最近笔者在了解 CI/CD 方面的知识点,想起了 Vercel,就想着能否将服务端应用架在 vercel 上呢?

Vercel 是什么


Vercel 是一个开箱即用的网站托管平台,方便开发者快速部署自己的网站。它在全球都拥有 CND 节点,因此比 Github 官方自带的 github pages 更加稳定,访问速度更快


Koala聊开源[2] 曾经对其有过介绍:Vercel 与 Next.js:开源全明星团队背后的商业逻辑[3]


文字版:Vercel 与 Next.js:开源全明星团队背后的商业逻辑[4]


简单的说,它能极简部署应用到服务端,且是免费不用买服务器


官网


Vercel 官网[5]

Vercel 工作流官网[6](网页效果炫酷)


常见命令行


将 Vercel 下载到全局(npm i vercel -g),不知道有什么命令就-h

微信图片_20221031103835.png


vercel帮助

笔者对其了解有限,这里罗列下笔者知道的命令

  • vercel login:登录 Vercel 账号
  • vercel dev:本地开启服务
  • vercel dev --bug:本地开启服务并打印日志
  • vercel:部署本地资源到 Vercel 上
  • vercel --prod:更新本地网页

vercel 可以用 vc 来代替,vc 是 Vercel 的缩写


部署静态服务


我们现在已经对 vercel 有所了解,前文中说到 Vercel 能简化开发者部署服务,那它能简化到什么程度呢?


这里我们从零部署一个简易静态服务

本地安装 Vercel

npm i vercel -g


登录 Vercel

vercel login

image.png


vercel login

选择好连接的方式后,会在网站弹出

image.png


哟哟,man。what's your name?

创建一个HTML文件,后续我们要将其上传至 Vercel 服务器上

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vercel Demo</title>
</head>
<body>
    <h1>Vercel Demo</h1>
</body>
</html>


本地测试一番,输入命令行

vercel dev

image.png


vercel dev

因为我们这是第一次执行,根目录下没有.vercel,所以要填写一些必要信息,这时你的本地和 Vercel 服务器就绑定好了


部署服务

vercel

image.png

vercel部署

https://vercel-sample-ten.vercel.app/ 中能访问到我们的静态服务

在截图中我们也看到了这句话Deployed to production. Run vercel --prod to overwrite later,后续我们要更新资源,用 vercel --prod 即可

好了,除去必要的登录,我们就用了三个命令就把本地服务部署到 Vercel 服务器上

  • vercel dev :开发时使用,查看应用是否跑得起来
  • vercel:部署服务
  • vercel --prod:更新应用(资源)

可以登录 Vercel 后台查看部署情况

image.png

vercel 后台


部署 Node 服务


回归主题,最终我们想部署的是 Node 服务,是后端服务,而非前端静态资源服务,这是关键


同样建立新项目

mkdir vercel-koa2
cd vercel-koa2
npm init -y
npm i koa -S
touch index.js


编写 index.js 中的内容

const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
    ctx.body = 'Hello Vercel';
});
app.listen(3008, () => {
    console.log('3008项目启动')
});

PS:3000端口默认会被 Vercel 使用,所以 Koa 服务要换个端口


使用命令vercel dev

image.png


vercel koa dev

发现给我报错了,理由是 package.json 的 scripts 中没有 build 快捷符,修改之

...
"scripts": {
    "build": "node index.js",
},
...


再次使用 vercel dev,node 服务跑起来了

于是乎我们部署它

vercel

image.png


vercel 部署失败

搞半天没部署上去,后台查看也是无果,呜呼悲哉

google后,发现原来还有一个 vercel.json,可以用 vercel.json 配置和覆盖 vercel 默认行为


下载 @vercel/node

npm i @vercel/node -S


填写配置:

{
  "version": 2,
  "builds": [
    {
      "src": "index.js",
      "use": "@vercel/node"
    }
  ]
}

执行 vercel 部署服务

image.png


vercel koa

访问地址:https://vercel-koa2-t511069160.vercel.app

至此,就完成了 Koa 服务的部署

与部署静态资源多了两个步骤

下载 @vercel/node 和配置 vercel.json


延伸思考


Vercel 当然不止笔者所说的这一功能,它还可以自定义域名、serverless、全球支持的 CDN等等


可以毫不夸张地说,用 Vercel 来代替繁琐的云服务器,配合 Github Action 做 CI/CD,就


个人开发者或小团队而言,这或许就是神器

后续笔者也会尝试用 Vercel 部署一些小应用,实践出真理

附上项目地址:https://github.com/johanazhu/vercel-demo


参考资料

[1]面试常客:HTTP 缓存: https://fe.azhubaby.com/HTTP/HTTP%E7%BC%93%E5%AD%98.html

[2]Koala聊开源: https://space.bilibili.com/489667127

[3]Vercel 与 Next.js:开源全明星团队背后的商业逻辑 视频版: https://www.bilibili.com/video/BV1gR4y1u76v

[4]Vercel 与 Next.js:开源全明星团队背后的商业逻辑 文字本: https://juejin.cn/post/7057333396359348255

[5]Vercel 官网: https://vercel.com/

[6]Vercel 工作流官网: https://vercel.com/workflow

相关文章
|
14天前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实战指南
【9月更文挑战第6天】在数字化时代的潮流中,后端开发作为支撑现代Web和移动应用的核心,其重要性不言而喻。本文将深入浅出地介绍如何使用Node.js及其流行的框架Express来搭建一个高效、可扩展的后端服务。通过具体的代码示例和实践技巧,我们将探索如何利用这两个强大的工具提升开发效率和应用性能。无论你是后端开发的新手还是希望提高现有项目质量的老手,这篇文章都将为你提供有价值的见解和指导。
|
25天前
|
存储 负载均衡 监控
检索服务elasticsearch节点(Node)
【8月更文挑战第23天】
37 5
|
23天前
|
消息中间件 JavaScript 中间件
函数计算产品使用问题之WebIDE编写的Node.js代码是否会自动进行打包部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
24天前
|
JavaScript 前端开发 中间件
构建高效后端服务:Node.js与Express框架的完美搭档
【8月更文挑战第28天】在追求高性能、可扩展和易维护的后端开发领域,Node.js和Express框架的组合提供了一种轻量级且灵活的解决方案。本文将深入探讨如何利用这一组合打造高效的后端服务,并通过实际代码示例展示其实现过程。
|
27天前
|
资源调度 JavaScript Linux
【Azure 应用服务】本地Node.js部署上云(Azure App Service for Linux)遇到的三个问题解决之道
【Azure 应用服务】本地Node.js部署上云(Azure App Service for Linux)遇到的三个问题解决之道
|
18天前
|
JavaScript 前端开发 Windows
NodeJS的环境部署
介绍如何在Windows操作系统上安装Node.js环境,包括下载长期支持版本的Node.js、安装程序、编写测试代码并执行,以及如何在WebStorm集成开发环境中配置和运行Node.js。
33 1
|
24天前
|
监控 JavaScript 前端开发
深入浅出Node.js: 打造高效的后端服务
【8月更文挑战第27天】在这个数字化飞速发展的时代,后端技术成为支撑互联网服务的基石。Node.js作为其中的佼佼者,以其非阻塞I/O模型、事件驱动架构和丰富的生态系统,赢得了开发者的青睐。本文将带领读者深入理解Node.js的核心概念,通过实际案例分析其应用模式,并探讨如何利用Node.js构建高效、可扩展的后端服务。无论你是初学者还是有经验的开发者,都能在这篇文章中找到提升你的Node.js技能的灵感和知识。
|
24天前
|
JavaScript NoSQL 中间件
《Node.js后端修炼手册》——揭秘服务器搭建与部署上线的生死时速,让你一战成名!
【8月更文挑战第27天】本文详细介绍如何从零开始利用Node.js构建后端服务器并部署至生产环境。首先,通过简易步骤搭建基础服务器,包括环境安装与配置。接着,引入Express框架优化路由与中间件管理,提升开发效率。随后,利用Mongoose实现MongoDB数据库连接,增强数据交互能力。为保证系统稳定性,文中还讲解了错误处理机制。最后,通过PM2等工具部署应用至生产环境,确保高效运行。本教程辅以示例代码,帮助读者快速掌握Node.js后端开发全流程。
52 2
|
24天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的深度整合
【8月更文挑战第27天】 在现代Web开发中,后端服务的高效性至关重要。本文深入探讨了如何利用Node.js的非阻塞I/O特性和Express框架的简洁性来打造高性能的后端服务。我们将通过具体案例,展示如何在不牺牲代码可读性和可维护性的前提下,实现高效的请求处理和服务端逻辑。文章旨在为开发者提供一个清晰的指导,帮助他们在构建后端服务时做出更明智的技术选择。
|
25天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js: 打造高效后端服务
【8月更文挑战第27天】Node.js作为一款强大的后端开发平台,以其非阻塞I/O和事件驱动的特性深受开发者喜爱。本篇文章将引导你从基础到进阶,探索Node.js的核心技术与应用实践,让你能够利用这一技术构建高效、可扩展的后端服务。文章不仅包含理论知识,还会通过实际代码示例加深理解,让学习过程既系统又富有趣味。