Node.js的轻量级服务器端应用开发框架有哪些?
- 内容介绍
- 相关推荐
本文共计544个文字,预计阅读时间需要3分钟。
目录+前言+Buffer+结构+底层实现+Buffer+对象+转换+字符串转Buffer+Buffer转字符串+总结+前言+JavaScript+对字符串(string)的操作十分友好,无论是宽字符节串还是单字节字符串,都被统一处理。
目录
- 前言
- Buffer 结构
- 底层实现
- Buffer 对象
- Buffer 转换
- 字符串转Buffer
- Buffer转字符串
- 总结
前言
JavaScript 对于字符串(string)的操作十分友好,无论是宽字节字符串还是单字节字符串,都被认为是一个字符串。
console.log("你好,世界!".length); // 6 console.log("hello,world!".length); // 12 console.log("\u00cc".length); // 1
作为对比,Rust 中的字符串则相对难以理解:
let str = String::from("你好,世界!"); println!("{}", str.len()); // 18
这是因为 Rust 中的 String 类型本身就是基于数组 vec 进行的封装,数组每个元素都是一个 u8 类型的元素,而 JavaScript 的 String 类型的抽象程度要更为高。这符合这两种语言的应用面(一个作为系统编程语言,一个为脚本语言)。
而这种高抽象层次,在 Nodejs 拓展了 JavaScript 的应用面之后,就显得有些力不从心了。在 Nodejs 中,应用需要处理网络协议、操作数据库、处理图片、接收上传文件等,在网络流和文件的操作中,还要处理大量二进制数据。 JavaScript 原有的字符串远远不能满足这些需求,于是 Buffer 应运而生。
Buffer 结构
Buffer 是一个像 Array 的对象,但它主要用于操作字节。
底层实现
Buffer 是一个 JavaScript 与 C++ 结合的模块,它将性能相关部分用 C++ 实现,将非性能相关的部分用 JavaScript 实现:
本文共计544个文字,预计阅读时间需要3分钟。
目录+前言+Buffer+结构+底层实现+Buffer+对象+转换+字符串转Buffer+Buffer转字符串+总结+前言+JavaScript+对字符串(string)的操作十分友好,无论是宽字符节串还是单字节字符串,都被统一处理。
目录
- 前言
- Buffer 结构
- 底层实现
- Buffer 对象
- Buffer 转换
- 字符串转Buffer
- Buffer转字符串
- 总结
前言
JavaScript 对于字符串(string)的操作十分友好,无论是宽字节字符串还是单字节字符串,都被认为是一个字符串。
console.log("你好,世界!".length); // 6 console.log("hello,world!".length); // 12 console.log("\u00cc".length); // 1
作为对比,Rust 中的字符串则相对难以理解:
let str = String::from("你好,世界!"); println!("{}", str.len()); // 18
这是因为 Rust 中的 String 类型本身就是基于数组 vec 进行的封装,数组每个元素都是一个 u8 类型的元素,而 JavaScript 的 String 类型的抽象程度要更为高。这符合这两种语言的应用面(一个作为系统编程语言,一个为脚本语言)。
而这种高抽象层次,在 Nodejs 拓展了 JavaScript 的应用面之后,就显得有些力不从心了。在 Nodejs 中,应用需要处理网络协议、操作数据库、处理图片、接收上传文件等,在网络流和文件的操作中,还要处理大量二进制数据。 JavaScript 原有的字符串远远不能满足这些需求,于是 Buffer 应运而生。
Buffer 结构
Buffer 是一个像 Array 的对象,但它主要用于操作字节。
底层实现
Buffer 是一个 JavaScript 与 C++ 结合的模块,它将性能相关部分用 C++ 实现,将非性能相关的部分用 JavaScript 实现:

