在 2024 年如何启动一个 Node.js 项目

现代 Node.js 的开发体验,已经不输 Golang、Rust 这些新兴编程语言。而且,比起使用它的兄弟语言 Deno、Bun,使用 Node 开发项目,坑更少一些,生态也更好一些。

Node.js 的一个特点就是轻便。这个特点我想主要是相比 Java 这种略显笨重的语言来说的。据说,国外的创新项目大部分都是用 Node 来开发的。(在很久以前,是用 PHP 或者 Ruby on Rails 开发。)猜测其原因之一,是前后端统一用一种编程语言能方便代码复用减少切换。国内的项目,由于前后端职责分离,后端程序员使用 Java、Golang 较多。

在 2024 年,创建一个全新的 Node.js 项目并获得不错的开发体验,例如类型校验、格式化、风格检查、单元测试、打包部署,变得非常简单。我们采用的开发工具有:

  • vscode - 开源免费 IDE
  • pnpm - Node 包管理器

创建空项目

pnpm init
mkdir src
mkdir test

设置 TypeScript

pnpm add -D typescript @types/node

更新 package.json,采用 ESM 并加上构建脚本。

{
    "type": "module",
    "scripts": {
        "build": "tsc"
    },
}

增加 tsconfig.json,含有下面这些选项。

{
    "compilerOptions": {
        "module": "nodenext",
        "moduleResolution": "nodenext",
        "target": "esnext",
        "sourceMap": true,
        "outDir": "dist"
    },
    "include": [
        "src",
        "test"
    ]
}

试运行

在 src 下增加项目的源文件,比如 hello.ts

import { createServer } from 'node:http';
const server = createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World!\n');
});
// starts a simple http server locally on port 3000
server.listen(3000, '127.0.0.1', () => {
    console.log('Listening on 127.0.0.1:3000');
});

构建并运行

pnpm install
pnpm build
node dist/hello.js
> Listening on 127.0.0.1:3000

为了获得最佳的开发体验,可以选用以下配置

格式化和风格检查

pnpm add -D -E @biomejs/biome
pnpm biome init
pnpm biome check src
pnpm biome check src --apply

推荐安装 vscode 的插件,在保存的时候自动格式化。

单元测试

在 test 下增加测试用例的源文件,比如 hello.test.ts

import assert from 'node:assert';
import test from 'node:test';
test('that 1 is equal 1', () => {
    assert.strictEqual(1, 1);
});
test('that throws as 1 is not equal 2', () => {
    // throws an exception because 1 != 2
    assert.strictEqual(1, 2);
});

构建并运行测试用例

pnpm build
node --test dist/test

断点调试

在 .vscode 下新增 launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Debug",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}/src/hello.ts",
            "outFiles": [
                "${workspaceFolder}/dist/**/*.js",
                "!**/node_modules/**"
            ]
        }
    ]
}

打包成单文件(部署)

pnpm add -D -E esbuild
pnpm esbuild src/hello.ts --bundle --platform=node --target=node18 --outfile=dist/main.js

生成的 dist/main.js 能在任何安装了 node18 的环境下运行,不需要安装依赖。

总结

最终项目的目录像这个样子

.
├── biome.json
├── package.json
├── tsconfig.json
├── src
│   └── hello.ts
└── test
    └── hello.test.ts

使用到下面这些命令

pnpm install
pnpm build
pnpm biome check src test
node --test dist/test
node dist/src/hello.js

在 2024 年, Node.js 及其生态已经出现了一些现代化的开发工具,能够简洁的创建项目并获得不错的开发体验。一个支持类型校验、格式化、风格检查、单元测试的新项目只包含 5 个文件,极大程度的降低了新项目的门槛和“样板代码”的数量。

最后

关于Node的内容已经说完了,但是我还想说点别的,主要想说一下我们应该学习哪些技术才能让它更加保值。

在我看来,越偏向于业务的技术越不容易过时,为什么呢?需求在变,技术一直在变,业务也一直在迭代。前端技术的发展非常快,也涌现出很多的框架(例如 HTML4 到 HTML5 的升级,或者从jQuery 到前端三大框架的转变),但是总归就是两个字:效率。

作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。

介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

JNPF可以实现应用从创建、配置、开发、测试到发布、运维、升级等完整生命周期的管理。减少了传统应用程序的代码编写量,通过图形化、可视化的界面,以拖放组件的方式,即可快速生成应用程序的产品,大幅降低了开发企业管理类软件的难度。

当然,我更建议大家成为一个全栈,不要把自己的定位局限于前端。

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值