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'));

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

相关推荐
brief of gali8 分钟前
记录一个奇怪的前端布局现象
前端
Json_181790144801 小时前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
风尚云网1 小时前
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
前端·css·学习·html·html5·风尚云网
木子02042 小时前
前端VUE项目启动方式
前端·javascript·vue.js
GISer_Jing2 小时前
React核心功能详解(一)
前端·react.js·前端框架
捂月2 小时前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端
深度混淆2 小时前
实用功能,觊觎(Edge)浏览器的内置截(长)图功能
前端·edge
Smartdaili China2 小时前
如何在 Microsoft Edge 中设置代理: 快速而简单的方法
前端·爬虫·安全·microsoft·edge·社交·动态住宅代理
秦老师Q2 小时前
「Chromeg谷歌浏览器/Edge浏览器」篡改猴Tempermongkey插件的安装与使用
前端·chrome·edge
滴水可藏海2 小时前
Chrome离线安装包下载
前端·chrome