N

🚄Node On Rails:查找后端服务器:探索 NestJS 第 1 部分!

2025-06-07

🚄Node On Rails:查找后端服务器:探索 NestJS 第 1 部分!

Prolog:关于后端 Javascript 的思考

在 JavaScript 的前端,我们拥有 Vue.js、React.js 或 Angular 等出色的框架。它们都是非常优秀的技术。即使规模不如 Google 或 Facebook 的团队,现在也能构建出几年前无法企及的前端。

这些方面的最佳实践正在涌现。我们现在使用组件来更轻松地管理前端。Stores 用于提供更好、更易于访问的数据流。Service Worker 帮助我们提供离线支持。

后端方面,我们也有很多选择。我们有 expressjs、fastify、MeteorJS、Sails.js、Koa.js、Hapi.js、derb.js 等等。我们有很多选择。有些技术非常基础,有些则是全栈框架。大多数框架都比较开放。这些框架希望迎合所有人的需求,至少是大多数人的需求。

寻找一个更有主见的框架,通常,你会发现非基于 JavaScript 的框架,如 Laravel 或 Ruby On Rails。

文件夹结构、生成代码、内置身份验证、内置授权、安全措施、代码质量以及与数据源的连接是当今软件的标准功能。

即使你有不同的需求,你也需要前面提到的功能。找到最佳实践并非易事,而且容易让人沮丧。有时感觉就像我们在一次又一次地重新发明轮子。

寻找“Node On Rails”的后端技术是一项比我想象的更困难的任务。

我想带你踏上寻找合适后端技术的旅程。谈谈它的优点和缺点。

今天我们就从nestjs开始。

nestjs 简介

来自 nestjs 网站:

Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,完全基于 TypeScript 构建并支持 TypeScript(但仍允许开发人员使用纯 JavaScript 编写代码),并融合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数式响应式编程)的元素。

让我们一步一步地浏览该文本块。

第一句话就你想知道的流行语来说,很贴切。真是个绝妙的玩笑。跟我说说更多吧。

第二句话比较长。我们把它分成两部分。第一部分是从开头到“and combinations”的部分,第二部分是剩下的部分。

第一部分对我来说很重要。我们可以使用 Typescript,但不必非得用。Typescript 现在很流行。唯一的问题是,相比纯 JavaScript 开发人员,如何找到精通 Typescript 的开发人员。您可以根据团队的构成来决定使用 Typescript 还是 JavaScript。

第二部分,啊,内容好多。OOP、FP 和 FRP。单独学习 OOP 就已经很费劲了,更不用说学习这三个了。我也不确定把它们结合起来是不是个好主意。我更希望只学习 OOP 或 FP 和 FRP。找到高效且了解何时使用什么的开发人员比找到了解 OOP 或 FP/FRP 的开发人员要难得多。我不确定我是否喜欢这种自由。这可能会导致代码混乱。controller例如,代码库中的每个 都以不同的方式实现。开发团队有责任拥有清晰的结构和方法来实现应用程序的各个部分。这将引发一场本可以避免的讨论。

下一部分介绍:

在底层,Nest 使用了强大的 HTTP 服务器框架,如 Express(默认),并且可以选择配置为使用 Fastify!

Nest 在这些常见的 Node.js 框架(Express/Fastify)之上提供了更高的抽象级别,并将它们的 API 直接暴露给开发者。这使得开发者可以自由地使用底层平台提供的大量第三方模块。

这两句话说的是同一件事。一个是关于正确的实现(expressjs/fastify)。另一个是关于抽象。总的来说,抽象是件好事。目前,expressjs 是最流行的框架,但这种情况在 2020 年或 2021 年可能会发生变化。能够轻松快速地在底层更改 HTTP 服务器对我来说始终是一个优势。

NestJS 的哲学

好的,下一个主题是

Nest 提供了开箱即用的应用程序架构,允许开发人员和团队创建高度可测试、可扩展、松散耦合且易于维护的应用程序。

太棒了!我想要的都有!可惜的是,这里说的都是架构。按 CTRL+F 并搜索“架构”或使用搜索功能,结果为零。如果 NestJS 有人看到这篇文章:请将此章节/页面添加到文档中。如果您需要帮助,请在任何平台上给我留言。我非常乐意提供帮助。

看看剩下的声明。可测试性对我来说是必须的。我不会使用那些难以编写测试的框架。我曾经参与过一些需要可维护性的大型项目。测试是必需的,不应该讨论这个问题。

通常,松耦合的代码也是可扩展的代码。框架可以帮助提高代码的可维护性。通常,可维护的代码是团队合作的结果,而非框架的功劳。

安装 nestjs

首先,您可以使用 Nest CLI 搭建项目,或者克隆一个启动项目(两者都会产生相同的结果)。

从上面的句子来看,CLI 似乎克隆了一个 git repo。

本节的剩余部分将讨论如何设置一个新项目。我将用我自己的话来描述。

您有两种选择。使用 nestjs CLI 工具,或者直接克隆两个 git 仓库中的一个。
您可以使用 npm 或 yarn 安装 nestjs CLI,如下所示:

sudo npm i -g @nestjs/cli
#or
yarn global add @nestjs/cli

现在您应该可以使用该nest命令了。

nest --version

要使用 Typescript 和 npm 创建新项目,您可以运行以下命令:

nest new MyProjectName

如果您想使用 Javascript 或 Yarn,您可以向new命令添加参数。

nest new MyProjectName --language JavaScript --package-manager Yarn

您可以根据需要混合和搭配参数!

第二种方法是克隆以下两个 repos 之一。

打字稿仓库:

 git clone https://github.com/nestjs/typescript-starter.git MyProject

Javascript 仓库:

git clone https://github.com/nestjs/javascript-starter.git MyProject

然后需要运行以下命令来安装所有依赖项并启动服务器:

cd MyProject
npm install # or `yarn`
npm run start # or yarn start

现在您有一个在http://localhost:3000下运行的开发服务器

如果您想阅读所有这些内容而不考虑我的评论,您可以在这里找到:https://docs.nestjs.com/

本周就到这里!下周我们将继续探索 NestJS!记得点个关注哦。

如果您喜欢此内容,请点击心形或独角兽!

如果想稍后阅读,请点击独角兽下方的书签按钮!

👋打个招呼! Instagram | Twitter | LinkedIn | Medium | Twitch | YouTube

文章来源:https://dev.to/lampewebdev/node-on-rails-finding-the-backend-server-exploring-nestjs-5753
PREV
🦕🦀用 Rust 编写 WebAssembly 并在 Deno 中运行它!
NEXT
💻 我发布了自己的 Visual Studio Code 扩展包,你也可以这样做!简介 我的扩展包 如何创建你的扩展包 向你的扩展包添加扩展 运行/测试你的扩展包 发布你的扩展 结论