node.js

node.js模块的的分类?
内置模块(node引擎提供的模块)
文件模块(用户自己创建的模块)

用require()导入模块时,核心模块只需写模块名,而文件模块需要加上路径,比如:
require(“fs”),
require("./myAdd") (后面的.js后缀名可省;当前路径./不可省略,如果省略,就会当成是核心模块)

node全局对象?
node中没有window对象,有global对象;
全局创建的变量和函数都会变成global对象的属性和方法来保存

arguments.callee的作用?(了解)
保存的是当前执行的函数对象

node在执行我们的文件模块的时候,会用一个函数包起来
function (exports, require, module, _filename, _dirname) { }
函数在执行的时候,同时传进来五个实参:
exports: 对象,用来将变量和函数暴露到外部
require:函数,用来引入外部的模块
module: 代表当前模块本身,exports == module.exports, exports是module的一个属性
_filename: 当前文件的路径(包含至文件名)
_dirname:当前文件的目录(不包含至文件名)

exports和module.exports的区别?

两者指向的内存地址相同;
exports是module.exports的一个引用;
exports是module.exports的一个对象属性;

exports只能通过.的方式向外暴露内部变量的函数;
exports.xxx = xxxx
(这里改变的是module.exports对象的属性;如果exports = {},改变的是exports这个变量,自然不能导出模块)
module.exports可以用.的方式,也可以直接对象赋值
module.exports.xxx = xxxx
module.exports = { }

  1. exports 对象是 module 对象的一个属性,在初始时 module.exports 和 exports 指向同一块内存区域
  2. 模块导出的是 module.exports , exports 只是对它的引用,在不改变exports 内存的情况下,修改exports 的值可以改变 module.exports 的值
    3. 导出时尽量使用 module.exports ,以免因为各种赋值导致的混乱

node搜索包的过程?(比如math包)
先在当前目录搜索,没有则往上层目录搜索,一直找到根目录,若还没有找到则报错,找到则使用

buffer缓冲区?
buffer看起来和数组差不多;
buffer存储的都是二进制数据,只不过显示在计算机上是16进制(因为二进制显示太长)

将一个字符串存入buffer
var buf = buffer.from(“string”)

buffer中的一个元素占一个字节
Unicode编码一个汉字通常占2个字节(也有可能不是2个字节)
utf-8编码一个汉字通常占3个字节

创建一个指定大小的buffer:
var buffer = Buffer.alloc(10);(10个字节大小)
buffer的大小一旦创建,不能修改

//将字符串存为buffer数据
var buf = Buffer.from(str)
buf.toString() //将buffer数据转为字符串
Buffer.alloc(size) //创建大小为n的buffer
Buffer.allocUnsafe(size) //同创建buffer,但是可能包含原始内存数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值