Skip to content

Node

作者:Yuan Tang
更新于:5 个月前
字数统计:1.1k 字
阅读时长:4 分钟

Node 简介

什么是 node

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

各个浏览器厂商会开发解析 Javascript 的引擎如 google chromeApple safari。因为不同厂商的引擎对 ecmascript 的解析程序不同,所以有些功能可能在有的浏览器有效,但在其他的浏览器无效。

比较著名的引擎是 chromev8,它是由 c++ 编写的,而且它有个特点可以内置到其他C++ 程序中,这就为 node.js 的实现提供的基础。所以可以把 nodejs 简单来理解为使用 v8 引擎可以解析 javascript 语法,同时也可以调用 c++ 功能进行文件操作,网络通信等功能。

Nodejs vs Browser

运行环境

  • v8 引擎
  • 内置 API:fs、path、http、js 内置对象、querystring、etc...

注意:

  1. 浏览器是 JavaScript 的前端运行环境
  2. node.js 是 JavaScript 的后端运行环境
  3. node.js 无法使用 DOM 和 BOM 等浏览器的内置 API

可实现效果

  1. 基于
    Express
    http://www.expressjs.com.cn/
    框架,可以快速构建 Web 应用
  2. 基于
    Electron
    https://electronjs.org/
    框架,可以构建跨平台的桌面应用
  3. 基于
    restify
    http://restify.com/
    框架,可以快速构建 API 接口项目
  4. 读写和操作数据库、创建实用的命令行工具辅助前端开发、etc...

安装运行

下面我们来安装开发用到的软件,访问

网站下载 LTS 版本,因为 nodejs 是开源的你也可以访问
github (opens new window)
https://github.com/nodejs/node
了解源码。

image-20230109014001481

安装后执行以下命令,查看安装的 nodejs 版本

sh
node -v

下面编写 index.js 内容如下

js
console.log('hello node.js')

然后在命令行执行该文件,好可以查看到当前目录的 node.js 执行结果

sh
node index.js

拓展:终端快捷键

  1. ↑:上一次执行的命令
  2. tab:补全路径
  3. esc:清空当前已输入的命令
  4. cls:清空终端

类型支持

开发中经常需要使用 typescript 进行开发,所以我们来配置 Node 的 typescript 开发环境。

安装软件

首先安装 Ts 环境需要的软件

执行以下命令进行安装

txt
pnpm add -g add ts-node nodemon typescript @types/node

文件结构

最终的项目文件结构如下

txt
├── package.json
├── pnpm-lock.yaml
└── src
    ├── http.ts
    └── index.ts

package.json

创建 package.json 文件

txt
pnpm init

package.json 文件内容为

  • 将主文件修改为 index.ts
  • 因为会自动调用 ts-node 命令,所以 dev 命令可以简写为 dev:nodemon
txt
{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "index.ts",
  "scripts": {
    "dev": "nodemon"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/node": "^18.7.8",
    "ts-node": "^10.9.1",
    "typescript": "^4.7.4"
  }
}

tsconfig.json

然后创建 tsconfig.json 文件

txt
tsc --init

配置项内容如下

txt
{
  "compilerOptions": {
    //ts编译为的ES的版本
    "target": "ESNext",
    //使用的模块规范
    "module": "NodeNext",
    //兼容common.js模块到ESM
    "esModuleInterop": true,
    //开启严格类型校验
    "strict": true,
    //允许导入扩展名为.json的模块
    "resolveJsonModule": true
  },
  //我们代码位置
  "include": ["./**/*"]
}

运行测试

下面我们来运行项目,项目的主文件是 src/index.ts,文件内容如下

txt
import os from 'os'

console.log(os.version())

接着执行命令来运行项目

txt
pnpm run dev

Contributors

Yuan Tang