高性能服务器Nodejs快速入门 1

简介: 高性能服务器Nodejs快速入门

1 初识 Nodejs

nodejs与es6总结必知必会:https://blog.csdn.net/ZGL_cyy/article/details/107516604

Nodejs 基础

官网传送门(opens new window)

区分 LTS 版本和 Current 版本的不同

① LTS 为长期稳定版,对于追求稳定性的企业级项目来说,推荐安装 LTS 版本的 Node.js。

② Current 为新特性尝鲜版,对热衷于尝试新特性的用户来说,推荐安装 Current 版本的 Node.js。但是,Current 版本中可

能存在隐藏的 Bug 或安全性漏洞,因此不推荐在企业级项目中使用 Current 版本的 Node.js


查看已安装的 Node.js 的版本号

打开终端,在终端输入命令 node –v 后,按下回车键,即可查看已安装的 Node.js 的版本号。

Windows 系统快速打开终端的方式:

使用快捷键(Windows徽标键 + R)打开运行面板,输入 cmd 后直接回车,即可打开终端

在 Node.js 环境中执行 JavaScript 代码

① 打开终端

② 输入 node 要执行的js文件的路径

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


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


基于 Express 框架 (opens new window),可以快速构建 Web 应用

基于 Electron 框架 (opens new window),可以构建跨平台的桌面应用

基于 restify 框架 (opens new window),可以快速构建 API 接口项目

读写和操作数据库、创建实用的命令行工具辅助前端开发、etc…

2 Buffer 缓冲区

Buffer 缓冲区文档(opens new window)

Buffer 的结构与数组类似,操作方法也与数组类似

数组不能存储二进制文件,Buffer 是专门存储二进制数据的

Buffer 存储的是二进制数据,显示时以 16 进制的形式显示

Buffer 每一个元素范围是 00~ff,即 0255、0000000011111111

每一个元素占用一个字节内存

Buffer 是对底层内存的直接操作,因此大小一旦确定就不能修改

Buffer 常用方法:


Buffer.from(str[, encoding]):将一个字符串转换为 Buffer

Buffer.alloc(size):创建指定大小的 Buffer

Buffer.alloUnsafe(size):创建指定大小的 Buffer,可能包含敏感数据(分配内存时不会清除内存残留的数据)

buf.toString():将 Buffer 数据转为字符串

var str = 'Hello前端'
var buf = Buffer.from(str)
// 占用内存的大小,一个汉字3字节 13
console.log(buf.length)
// 字符串的长度 7
console.log(str.length)
// 8进制输出第一个元素 145
console.log(buf[1].toString(8))
//创建一个10个字节的buffer
var buf2 = Buffer.alloc(10)
//通过索引,来操作buf中的元素
buf2[0] = 88
buf2[1] = 255
buf2[2] = 0xaa
buf2[3] = 255
var buf3 = Buffer.allocUnsafe(10)
console.log(buf3)

3 fs 文件系统模块

  • fs 模块中所有的操作都有两种形式可供选择:同步和异步
  • 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码
  • 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回
  • 实际开发很少用同步方式,因此只介绍异步方式

打开模式:

模式 说明
r 读取文件,文件不存在抛异常
r+ 读写文件,文件不存在抛异常
rs 同步模式下打开文件用于读取
rs+ 同步模式下打开文件用于读写
w 写文件,不存在则创建,存在则覆盖原有内容
wx 写文件,文件存在打开失败
w+ 读写文件,不存在创建,存在截断
wx+ 读写,存在打开失败
a 追加,不存在创建
ax 追加,存在失败
a+ 追加和读取,不存在创建
ax+ 追加和读取,存在失败

3.1 读取文件

简单文件读取

语法格式:

fs.readFile(path[, options], callback)

1

  • path:文件路径
options
  • :配置选项,若是字符串则指定编码格式
  • encoding:编码格式
  • flag:打开方式
callback
  • :回调函数
  • err:错误信息
  • data:读取的数据,如果未指定编码格式则返回一个 Buffer
const fs = require('fs')
fs.readFile('./files/1.txt', 'utf-8', function(err, data) => {
  if(err) {
    return console.log('failed!' + err.message)
  }
  console.log('content:' + data)
})
// 复制文件内容
fs.readFile("C:/Users/笔记.mp3", function(err, data) {
  if(!err) {
    console.log(data);
    // 将data写入到文件中
    fs.writeFile("C:/Users/hello.jpg", data, function(err){
      if(!err){
        console.log("文件写入成功");
      }
    } );
  }
});

流式文件读取

  • 简单文件读取的方式会一次性读取文件内容到内存中,若文件较大,会占用过多内存影响系统性能,且读取速度慢
  • 大文件适合用流式文件读取,它会分多次将文件读取到内存中
var fs = require('fs')
// 创建一个可读流
var rs = fs.createReadStream('C:/Users/笔记.mp3')
// 创建一个可写流
var ws = fs.createWriteStream('a.mp3')
// 监听流的开启和关闭
// 这几个监听不是必须的
rs.once('open', function () {
  console.log('可读流打开了~~')
})
rs.once('close', function () {
  console.log('可读流关闭了~~')
  //数据读取完毕,关闭可写流
  ws.end()
})
ws.once('open', function () {
  console.log('可写流打开了~~')
})
ws.once('close', function () {
  console.log('可写流关闭了~~')
})
//要读取一个可读流中的数据,要为可读流绑定一个data事件,data事件绑定完毕自动开始读取数据
rs.on('data', function (data) {
  console.log(data)
  //将读取到的数据写入到可写流中
  ws.write(data)
})

简便方式:

var fs = require('fs')
var rs = fs.createReadStream('C:/Users/lilichao/Desktop/笔记.mp3')
var ws = fs.createWriteStream('b.mp3')
// pipe()可以将可读流中的内容,直接输出到可写流中
rs.pipe(ws)


目录
相关文章
|
1月前
|
缓存 负载均衡 监控
性能优化:Node.js高效服务器开发技巧与最佳实践
【10月更文挑战第29天】在Node.js服务器开发中,性能优化至关重要。本文介绍了几种高效开发的最佳实践,包括使用缓存策略、采用异步编程、实施负载均衡和性能监控。通过示例代码展示了如何实现这些技术,帮助开发者构建更快、更稳定的Node.js应用。
59 2
|
2月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API 服务器
【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器
|
2月前
|
Web App开发 JavaScript 前端开发
使用Node.js和Express框架构建Web服务器
使用Node.js和Express框架构建Web服务器
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
22 0
|
3月前
|
JavaScript
Nodejs的cnpm包管理器快速入门
介绍Node.js的cnpm包管理器,包括cnpm的实现原理、如何安装cnpm、使用cnpm安装软件包,以及Node.js搜索包的流程。
113 2
Nodejs的cnpm包管理器快速入门
|
3月前
|
存储 JavaScript
Nodejs的npm包管理器快速入门
介绍Node.js的npm包管理器的快速入门,包括包的概念、结构、描述文件、npm常用命令如安装、搜索、移除软件包,以及如何处理常见的npm工具部署错误。
68 2
Nodejs的npm包管理器快速入门
|
3月前
|
JavaScript 前端开发
vue配合axios连接express搭建的node服务器接口_简单案例
文章介绍了如何使用Express框架搭建一个简单的Node服务器,并使用Vue结合Axios进行前端开发和接口调用,同时讨论了开发过程中遇到的跨域问题及其解决方案。
64 0
vue配合axios连接express搭建的node服务器接口_简单案例
|
3月前
|
JavaScript Linux 开发工具
如何将nodejs项目程序部署到阿里云服务器上
该文章详细描述了将Node.js项目部署到阿里云服务器的步骤,包括服务器环境配置、项目上传及使用PM2进行服务管理的过程。
|
20天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
25天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。