Node.js模块,内存,缓冲区

模块标识

什么是模块标识?使用的require()引入外部模块时,使用的就是模块标识 ,可以通过模块标识来找到指定的模块

   例如: var 对象=require("./02.module");

模块分成两大类

      核心模块

         -由node引擎提供的模块

         -核心模块的标识就是,模块的名字

Node.js模块,内存,缓冲区

 

      文件模块

         -由用户自己创建的模块

         -文件模块的标识就是文件的路径(绝对路径,相对路径)

            相对路径使用 . 或 .. 开头

在node中有一个全局对象叫global,它和网页中的window类似

      在全局中创建的变量都会作为global的属性保存

      在全局中创建的函数都会作为global的方法保存

Node.js模块,内存,缓冲区

 

  在node执行模块中的代码,它首先会在代码的最顶部,添加如下代码:

      function (exports, require, module, __filename, __dirname) {

       在代码最底部 添加如下代码:

      }

所以,这里声明的变量全都是局部变量,实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递进了五个实参:

exports

-该对象用来将变量或函数暴露到外部

Node.js模块,内存,缓冲区

 

require

 -函数,用来引入外部的模块

Node.js模块,内存,缓冲区

 

module

-module代表的是当前模块本身

    -exports就是module的属性

Node.js模块,内存,缓冲区

 

__filename

-当前模块的完整路径

__dirname

-当前所在的文件夹的完整路径

exports和 module.exports

      -通过exports只能使用.的方式来向外部暴露内部的值

          exports.xxx=xxx;

      -而module.exports既可以通过.的形式,也可以直接赋值

          module.exports.xxx=xxx;

          或者

          module.exports={

              xxx:xxx;

          }

栈内存和堆内存

Var obj=new Object();

obj.name=123;

Var obj1=obj;

obj1.name=xxx;//这是在改对象的属性,对obj有影响,这就相当于module.exports的作用

Var obj2=obj;

obj2=123;//这是在改变量对obj没有影响,相当于exports的作用

Node.js模块,内存,缓冲区

 

Package(包)

NPM(Node Package Manager(管理))包管理器

-帮助其完成第三方模块的发布,安装和依赖,写Node的时候需要包可以到NPM下载

Buffer (缓冲区)

      -Buffer的结构和数组很像,操作方法也和数组类似

      -数组不能存储二进制的文件,而Buffer就是专门用来存储二进制数组的

      -使用Buffer不需要引入模块,直接使用即可

      -在Buffer中存储的都是二进制数据,但在显示时都是以16进制的形式显示

          在Buffer中每一个元素的范围是00-ff 0-255

         Buffer中的一个元素,占用内存的一个字节

      -Buffer的大小一旦确定,则不能修改,Buffer实际上是对底层内存的直接操作

Node.js模块,内存,缓冲区

Node.js模块,内存,缓冲区 

 

Buffer.from(str) 将一个字符串转换为Buffer

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

Buffer.allocUnsafe(size) 创建一个指定大小的Buffer,但可能包含敏感数据

buf.toString() 将缓冲区的数据转换成字符串

上一篇:从数据库到架构,OceanBase CTO 杨传辉邀你聊透分布式


下一篇:OceanBase再破纪录!核心成员陈萌萌:坚持HTAP就是坚持我们做数据库的初心