全局对象 global 是全局变量的宿主

全局变量
在最外层定义的
全局对象的属性
隐士定义的变量(未定义直接赋值的变量)

当定义一个全局变量时 这个变量同时也会成为全局对象的属性 反之亦然

注意:
Node.js中你不可能在最外层定义变量 因为所有用户代码都是属于当前模块的 而模块本身不是最外层上下文

process
process.argv 是命令行参数数组 第一个元素是node 第二个元素是脚本文件名称 第三个开始是每个元素的运行参数
例子
//argv.js
console.log(process.argv);
执行命令 node argv.js 1991 name=byvoid --v "Carbo Kuo"
输出
[ 'node',
'/home/byvoid/argv.js',
'1991',
'name=byvoid',
'--v',
'Carbo Kuo'
]

process.nextTick(callback) 功能:为事件循环设置一项任务 Node.js 会在 下次事件 环调 应时调用 callback?????????????????

Node.就是适合I/O密集型应用 而不是计算密集型应用 因为一个node.js进程只有一个线程 因此在任何时刻都只有一个事件在执行
如果这个事件占用大量的CPU时间 执行事件循环中的下一个事件就要等待很久 node.js的一个编程原则就是尽量缩短每一个事件的执行时间

console
console.log()
接受一个参数 直接打印字符串
两个参数时 第二个参数替换掉占位符
console.log("abc"); //"abc";
console.log("abc%cba") //"abc%cba";
console.log("abc%cba", 1991)//"abc1991cba";

console.error() 用法同上 只是向标准错误流输出
console.trace() 向标准错误流输出当前的调用栈

常用工具的util

util.inherits(constructor, superConstrutor);
是一个实现对象间原型继承的函数
只继承自原型上的函数 构造函数内部的不继承
console.log不打印原型中定义的函数

util.inspect(object, [showHidden], [depth], [colors]);
用于将任意对象转换成字符串方 通常用于调试和输出错误
至少接受一个 object参数
showHididen true 时将会输出更多隐藏信息 参数可选
depth 表示最大递归的层数 如果对象很复杂 你可以指定层数以控制输出信息的多少 不指定默认递归2层 null表示不限制次数
color true 输出格式将会以ANSI颜色编码 通常用于终端显示更漂亮的效果

其他自行百度

事件驱动evnets
events 模块只提供了一个对象 events.EventEmitter
EventEmitter的核心就是事件反射与事件监听器功能的封装

常用API
EventEmitter.on(event, listener); 为指定事件注册一个监听器 接受一个字符串event 和一个回调函数listener
EventEmitter.emit(event, [arg1], [arg2], [...])发射event事件 传递若干个可选参数到事件监听器的参数表
EventEmitter.once(event, listener); 为指定事件注册一个单次见监听器 即监听器最多只会触发一次 触发后立即解除该监听
EventEmitter.removeListener(event, listener) 移除指定事件的某个监听器 listener必须时该事件已经注册过的监听器

EventEmitter.removeAllListener([event]) 移除所有事件的所有监听器 如果指定event 则移除指定事件的所有监听器

EventEmitter error事件 一般要为发射error事件的对象设置监听器 避免遇到错误后整个程序崩溃

文件系统fs
所有的fs模块操作都提供了同步和异步的两个版本

fs 函数定义和功能

fs.readFile(fileName, [encoding], [callback(err, data)]);
参数介绍
fileName 读取的文件名
encoding 表示文件的编码格式
callback 回调函数 用于接收文件 如果定义了encoding data为编码之后的字符串 未定义data将会以buffer形式表示二进制的数据

fs.readFileSync(fileName, [encoding]);
返回结果是一个data
如果文件未找到 将会抛错
同步需要用try{}catch(e){console.log(e)};

fs.open(path, flags, [mode], [callback](err, fd));
是POSIX open函数的封装 类似于C语言的fopen函数
参数
path文件的路径
flags可以是以下值
r 以读取模式打开文件
r+ 以读写模式打开文件
w 以写入模式打开文件 如果文件不存在则创建
w+ 以读写模式打开文件 如果文件不存在则创建
a 以追加模式打开文件 如果文件不存在则创建
a+ 以读取追加模式打开文件 如果文件不存在则创建
mode 参数用于创建人间时给文件指定权限 默认 0666
回调函数传递一个文件描述符fd 非负整数 表示操作系统内核为当前进程所维护的打开文件的记录表索引

fs.read(fd, buffer, offset, length, position, [callback(err, bytesRead, buffer)]);
是POSIXread函数的封装 相比readFile提供了更底层的接口
功能:从指定的文件描述符fd中读取数据并写入buffer指向的缓存区对象
参数介绍
offset buffer的写入偏移量
length 要从文件中读取的字节数
position 是文件读取的起始位置 值为null 则会从当前文件指针的位置读取
回调函数传递的bytesRead 和 buffer 分别表示读取的字节数 和缓存区对象

一般来说 非必要不要使用这俩种方式读取文件 因为它要求你手动管理缓存区和文件指针 尤其是不知道文件大小 很麻烦

HHTTP服务器
http.createServer(callback(req, res));
req 请求对象 res 响应对象

?????????????疑惑?????????????

1: process.nextTick(callback) 怎么就减少事件的执行时间了
2: fs.open()怎么使用

负载均衡 四部交换机 dns轮转 不能用session 只能用cookie 有的cookie不支持

node.js核心模块的更多相关文章

  1. Node.js核心模块_全局变量、util学习

    全局对象 javascript的全局对象是window,他及其所有属性都可以在程序的任何地方访问.即全局变量. 而在node中全局对象是global,所有全局变量都是global对象的属性,包括其本身 ...

  2. Node.js核心模块-fs文件系统

    fs是file-system的简写,文件系统的意思.在Node中如果想要进行文件操作,就必须引入fs这个核心模块. 引入 const fs = require('fs') fs.readFile(pa ...

  3. Node.js核心模块-http

    通过node中的http模块可以创建编写服务器 引入 const http = require('http') http举例使用: const http = require('http') //引入 ...

  4. 10.Node.js核心模块

    1.全局对象2.常用工具3.事件机制4.文件系统访问5.HTTP服务与客户端 一.全局对象(Global Object), 与window对象一样 process ==> 全局变量, 描述当前N ...

  5. Node.js核心模块API之文件操作

    参考:https://www.runoob.com/nodejs/nodejs-fs.html 异步I/O 1,文件操作 2,网络操作 在浏览器中也存在异步操作 1,定时任务 2,事件处理 3,Aja ...

  6. Node.js核心模块-net

    net.Socket 类 socket.remotePort 访问服务器的远程端口 const http = require('http'); const server = http.createSe ...

  7. Node.js之模块机制

    > 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. ![file](https://img2018.cnblogs.com/blog/830272/20 ...

  8. Node.js核心入门

    前言: 因为以前学习Node.js并没有真正意义上的去学习它,而是粗略的学习了npm的常用命令和Node.js一些模块化的语法,因此昨天花了一天的时间看了<Node.js开发指南>一书.通 ...

  9. Node.js的模块载入方式与机制

    Node.js中模块可以通过文件路径或名字获取模块的引用.模块的引用会映射到一个js文件路径,除非它是一个Node内置模块.Node的内置模块公开了一些常用的API给开发者,并且它们在Node进程开始 ...

随机推荐

  1. C#WinCE程序(.NET Compact Framework 3.5)项目重构面向抽象设计

    重构关注点 遵循开闭原则 面向抽象设计 实现设备程序端可动态配置 重构的需求 领导想省事提出需求,将现有PDA程序修改为支持PC端由电器工程师根据实际的生产流程可配置,PDA程序在读取配置文件后动态生 ...

  2. Java中ArrayList与LinkedList的区别

    Java中ArrayList与LinkedList的区别 一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向 ...

  3. Ubuntu Bash and Dash

    http://blog.sina.cn/dpool/blog/s/blog_5f16b0590100r1ub.html?vt=4

  4. golang其实也可以优先调度

    线上一个服务有个严重问题,处理消息数1k/s提升不上去,经过查看是阻塞在了一个新加的函数上,这个函数负责收集信息,送到一个channel上,再由某个函数处理,这个处理函数很简单,看不出任何问题,最大的 ...

  5. python之dictionary

    1.python3字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 d ...

  6. ssh框架遇到的问题总结

    1.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource ...

  7. CSS(四)float 定位

    一.文档流 网页默认的定位方式 1.行级元素: 从左到右 2.块级元素: 从上到下 文档流的流动方式  从右下 到 左上 ↖ 二.浮动 1.浮动的定义 , 是元素脱离文档流  遇到父级边界 或相邻浮动 ...

  8. es6 模板字变量和字符串占位符

    开发者一直在寻找一种创建多行字符串的形式,但要使用单引号双引号字符串一定要在同一行才行. 老办法: 还有其他办法,虽然能实现,但是太啰嗦 es6模板自变量 使用反撇好(`)替换了单双引号 反撇好中的所 ...

  9. GO开发[三]:fmt,strings,strconv,指针,控制结构

    一.fmt包 %v 值的默认格式表示.当输出结构体时,扩展标志(%+v)会添加字段名 %#v 值的Go语法表示 %T 值的类型的Go语法表示 %% 百分号 %t 单词true或false %b 表示为 ...

  10. iptables网络安全服务详细使用

    iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具. centos6.9  --- 默认防火墙工具软件iptables centos7    --- 默认防火墙工具软件fire ...