春风得意马蹄疾
一日看尽长安花

NodeJS介绍与使用

NodeJS是什么

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

NodeJS并不是一门语言,JavaScript才是一门语言,他是一个运行时,如果想要在服务器端运行就需要运行时。

nodeJS使用了一个事件驱动非阻塞式I/O的模型

非阻塞式I/O

I/O:就是input,output,计算机输入输出的意思。键盘,打印机这些都是输入输出设备。对计算机来说就是读写磁盘或者进行网络操作,数据库操作都是I/O操作。

阻塞式I/O:I/O时进程休眠等待I/O完成后进行下一步。

非阻塞式I/O:I/O时函数立即返回,进程不等待I/O完成就执行下一步,I/O完成后通知主程序。

事件驱动(发布订阅模式)

I/O等异步操作结束后的通知

运行node

方式1:

  1. 命令行执行node
  2. 进入了node的运行环境
  3. 退出执行 .exit ( 或者ctrl+c )

方式2:推荐使用在跟入口文件的同一层目录下执行

  • node 文件路径

环境

Commonjs规范

一种模块化规范

模块化:每个文件是一个模块,有自己的作用域

在模块内部module变量代表模块本身

module.exports属性代表模块对外接口

require规则

/表示绝对路径

./表示相对于当前文件的

以 ' / ' 或 ' ./ ' 认为是按照当前给的路径查找模块。

不写路径则认为是build-in模块或者各级node-modules内的第三方模块

支持js、json、node 扩展名,不写,先尝试没有后缀的文件,再依次尝试

如果引入的是文件夹,那么会读取该文件夹下的Index文件

require特性

module被加载的时候执行,加载后缓存

一旦出现某个模块被循环加载,就只加载已经执行的部分,还未执行的部分不会输出。

注意:使用模块时,建议引入都写在文件的开头部分,输出都写在文件末尾

调试

浏览器调试

  • node --inspect-brk main.js

chrome://inspect/#devices

API

global全局对象

commonjs方法:require() module.exports

Buffer processs timer console.log

path

path模块提供用于处理文件路径和目录路径的实用工具

path.normalize

  • 规范化给定的path

path.join([...path])

  • 使用平台特定的分隔符作为定界符将所有给定的path片段连接在一起,然后规范化生成的路径。

path.resolve([...paths])

  • 将路径或路径片段的序列解析为绝对路径。

path.basename(path[,ext])

  • 返回path的最后一部分,尾部的目录分隔符将被忽略

path.dirname(path)

  • 返回path的目录名

path.extname(path)

  • 返回path的扩展名

path.parse(path)

  • dir root base name ext

path.format(pathObject)

  • 从对象返回路径字符串。 与 path.parse() 相反。
  • __dirname 是执行代码的文件所在系统的绝对目录
  • __filename 是执行代码的文件所在系统的绝对文件路径

注意:

  1. __ dirname、__filename 返回执行文件所在系统的绝对路径
  2. process.cwd()总是返回执行node命令所在文件夹
  3. 在require方法中指相对当前文件所在文件夹
  4. 在其他地方和process.cwd()一样,相对node执行所在文件夹

fs文件系统

fs.readFile()

fs.writeFile()

fs.appendFile()

fs.stat()

fs.mkdir()

fs.readdir()

fs.rename()

fs.rmdir()

fs.unlink()

util

util.promisify()

url

url.format()

url.parse()

querystring

querystring.escape()

querystring.unescape()

querystring.parse()

querystring.stringify()

http(作为客户端)

http.get(options[, callback])

http.request(options[, callback])

http(作为服务器)

http.createServer(options)

response.statusCode

response.statusMessage

response.setHeader(name, value)

response.writeHead(statusCode[, statusMessage] [, headers])

response.write(chunk[, encoding] [, callback])

response.end([data[, encoding]] [, callback])

buffer

用于读取或操作二进制数据流的机制,实例类似整数数组,大小固定

Buffer.alloc()

Buffer.from()

Buffer.isBuffer()

Buffer.concat()

buf.length

buf.toString()

buf.fill()

buf.equals()

buf.indexOf()

buf.copy()

Stream

fs.createReadStream()

fs.createWriteStream()

events

大多数 Node.js 核心 API 构建于惯用的异步事件驱动架构,其中某些类型的对象(又称触发器,Emitter)会触发命名事件来调用函数(又称监听器,Listener)。

  • emitter.addListener(eventName, listener)
  • emitter.emit(eventName[, ...args])
  • emitter.off(eventName, listener)
  • emitter.on(eventName, listener)
  • emitter.once(eventName, listener)
  • emitter.removeAllListeners([eventName])
  • emitter.removeListener(eventName, listener)

Like
Like Love Haha Wow Sad Angry
赞(0) 打赏
未经允许不得转载:栗子纪blog » NodeJS介绍与使用
分享到: 更多 (0)
0 0 vote
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments

创作不易,打赏一下作者买瓶洗发露

支付宝扫一扫打赏

微信扫一扫打赏

0
Would love your thoughts, please comment.x
()
x