Node.js迈向后端世界:从"Hello World"到"Hello Backend!"

前言

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,用于构建快速、可扩展的网络应用。它采用事件驱动、非阻塞 I/O 模型,使其特别适合实时数据处理和高并发场景。Node.js 能够利用单线程异步编程的优势,同时通过事件循环处理大量请求,从而提高应用程序的性能和吞吐量。通过 npm(Node 包管理器),开发者可以轻松访问丰富的开源库和工具,快速构建各种类型的应用,包括 Web 服务、后端 API、实时应用程序等。

接下来让我们初步认识node.js.

1.初始化

我们创建一个文件夹,在终端输入npm init -y初始化为后端文件。

然后我们引入一个好用的node框架express,采用npm i express.

这个时候就会发现我们的dependencies里多了这样子一个依赖。

express

javascript 复制代码
const express = require('express')

const app = express()
const port = 3000

app.get('/', (req, res) => {
    res.send('welcone to node!!!')
})

app.listen(port, () => {
    console.log('项目已启动在3000端口');
})

我们采用commonjs即默认的方式去引入这个模块然后进行实例化,我们用它来构建一个简单的web服务。我们在3000端口构建web端的服务,然后当前端采用默认的get方式去访问这个端口的时候打印welcone to node!!!。

我们去运行这份js,然后去进行这个端口的访问,就会发现它会弹出我们要的信息。

如果我们采用npx nodemon + 项目名称的话,每次修改端口响应时,就不需要重新跑一遍了,非常方便。

2.scripts

我们可以在这个里面添加指令去运行我们的代码。

比如我们添加了server,hello,dev三段指令。我们通过npm run + 指令 的方式去运行。

对应执行效果如下。

3.模块化

为了代码编写的优雅和效率,node编写中采用了模块化的思想。

commonjs

这是node官方提供的老版模块化方法。

javascript 复制代码
function add(a, b) {
    return a + b
}

function minus(a, b) {
    return a - b
}
module.exports.add = add
module.exports.minus = minus
<------------------------------------------------------------------------->

const { add } = require('./a/b.js')
const { minus } = require('./a/b.js')

console.log(add(1, 2));
console.log(minus(1, 2));

我们在一个js文件里书写内容,然后module.exports进行挂载属性进行抛出,在另一个js文件里去结构得到抛出的对象属性就可以正常调用啦!

ESM

这是js官方为了方便和高效,也打造且被node官方兼容的语法规范,比commonjs发布时间要晚。

javascript 复制代码
function add(a, b) {
    return a + b
}

function minus(a, b) {
    return a - b
}

export default {
    add,
    minus
}
-------------------------------------------
import model from './a/b.js'
console.log(model.add(1, 2));

我们采用export default的方式在接收时不需要解构,直接接收这个对象。

javascript 复制代码
export function add(a, b) {
    return a + b
}

export function minus(a, b) {
    return a - b
}

---------------------------------
import { add, minus } from './a/b.js'
console.log(add(1, 2));
console.log(minus(1, 2));

当我们export抛出的时候,则要进行解构操作。

3.global

首先我们要记住一点浏览器的全局是window,而node里的全局是global,那么我们挂载在浏览器上的全局变量是可以直接用而不用window.a去使用的,因此我们global上的属性也是可以直接用的。

javascript 复制代码
console.log(global);

global是一个对象

javascript 复制代码
console.log(Object.getOwnPropertyNames(global));

我们还可以打印这个对象身上许多可以用的属性。

arduino 复制代码
console.log(__dirname);
console.log(__filename);

分别代表当前js文件所在文件夹的绝对路径和当前文件的绝对路径。

less 复制代码
console.log(Buffer.from('hello world'));

console.log(Buffer.from([0x68]));

console.log(Buffer.from('hello world').toString());

buffer流是node里提供的一种新的十六进制数据结构,我们可以进行把字符串转为buffer流,把十六进制数组转化为buffer流结构以及buffer流转为字符串的操作。

4.fs

ini 复制代码
const fs = require('fs')

const fileContent = fs.readFileSync('./text.txt', 'utf-8')
console.log(fileContent);

我们通过引入这个fs对象来使用里面很多好用的方法实现对文件的读取和写入操作。

Sync表示的是同步进行读取。"utf-8"表示我们读取的形式,如果我们不采用这种形式最后读取到的数据就会是默认的buffer流。

arduino 复制代码
fs.writeFileSync('./abc.md', 'hello world')

这是我们进行的同步写入操作,用于往文件里写入信息。

arduino 复制代码
console.log(fs.statSync('./text.txt'));

我们也可以去获取我们文件的相关信息。

相关推荐
Henry_Lau61732 分钟前
主流IDE常用快捷键对照
前端·css·ide
陶甜也37 分钟前
使用Blender进行现代建筑3D建模:前端开发者的跨界探索
前端·3d·blender
我命由我123451 小时前
VSCode - Prettier 配置格式化的单行长度
开发语言·前端·ide·vscode·前端框架·编辑器·学习方法
HashTang1 小时前
【AI 编程实战】第 4 篇:一次完美 vs 五轮对话 - UnoCSS 配置的正确姿势
前端·uni-app·ai编程
JIngJaneIL1 小时前
基于java + vue校园快递物流管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js
asdfg12589632 小时前
JS中的闭包应用
开发语言·前端·javascript
kirk_wang2 小时前
Flutter 导航锁踩坑实录:从断言失败到类型转换异常
前端·javascript·flutter
静小谢2 小时前
前后台一起部署,vite配置笔记base\build
前端·javascript·笔记
用户47949283569153 小时前
改了CSS刷新没反应-你可能不懂HTTP缓存
前端·javascript·面试