土拨鼠公主

Node.js

1.简介

  • http://nodejs.cn/
    Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型, 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。

Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,V8引擎执行Javascript的速度非常快,性能非常好,基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。

2.npm部分常用命令

  • npm -v 查询npm的版本
  • npm -version 查看所有模块的版本
  • npm search +包名 搜索包
  • npm install/i +包名 安装包
  • npm remove/r +包名 删除包
  • npm install/i +包名 --save 安装包并添加到依赖中
  • npm install 下载当前项目所依赖的包
  • npm install +包名 -g 全局安装包(全局安装的包一般都是一些工具)

通过npm下载的包都放到node_modules文件中,通过npm下载的包,直接通过包名引入即可

3.配置cnpm

可以使用定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
$ npm install -g cnpm --registry=https://registry.npmmirror.com

4.Buffer(缓冲区)

  • Buffer的结构和数组很像,操作的方法也和数组类似,它的元素为16进制的两位数.
  • 一个元素就表示内存中的一个字节.
  • Buffer中的内存不是通过JavaScript分配的,而是在底层通过C++申请的.
  • 也就是我们可以直接通过Buffer来创建内存中的空间.
  • 数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据
  • 使用Buffer不需要引入模块,直接使用即可.
  • Buffer所有构造函数都是不推荐使用的.
  • Buffer的大小一旦确定,则不能修改,Buffer实际上是对底层内存的操纵

5.文件系统(File System)

  • 文件系统简单来说就是通过Node来操作系统中的文件
  • 使用文件系统,需要先引入fs模块,fs是核心模块,直接引入不需要下载

5.1同步和异步调用

  • fs模块中所有的操作都有两种形式可供选择:同步和异步
  • 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码.
  • 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回.

5.1.1同步文件的写入:

手动操作的步骤:

  1. 打开文件
    fs.openSync(path, flags[, mode])
  • path 要打开文件的路径
  • flags 打开文件要做的操作的类型:
    r 只读的
    w 可写的
  • mode 设置文件的操作权限,一般不传(参)
  1. 向文件写入内容
    fs.writeSync(fd, string[, position[, encoding]])
  • fd 文件的一个描述符,需要传递要写入的文件的描述符
  • string 要写入的内容
  • position 写入的起始位置
  • encoding 写入的编码 默认UTF-8
  1. 保存并关闭文件
    fs.closeSync(fd)
  • fd 要关闭的文件的描述符(哪个文件 )

5.1.2异步文件的写入

  1. 打开文件
    fs.open(path[, flags[, mode]], callback)
  • 用来打开一个文件
  • 异步调用的方法,结果都是通过回调函数的参数返回的
  • 回调函数两个参数:
    err 错误对象,如果没有错误则为null
    fd 文件描述符
  1. 向文件写入内容
    fs.writeSync(fd, string[, position[, encoding]],callback)
  • 用来异步写入一个文件
  1. 保存并关闭文件
    fs.close(fd,callback)

image

5.2简单文件写入

image

常用的:(读:r,写:W,追加:a)

  • 打开状态
    image
  • 范例:
    image

5.3流式文件写入

同步-异步-简单文件的写入都不适合大文件的写入,性能较差,容易造成内存溢出.
image

image

image

image

5.4简单文件读取与流式文件读取

image
image

  • 简单读取:
    image
  • 流式读取:
    image

以上内容真正写项目时反而不使用,这些东西都是服务器或框架底层使用的.

5.5 fs其他模块

image

  • 使用范例代码:

image

image
image

image

image

image

image

image

image
image

posted on 2021-11-16 11:41  土拨鼠公主  阅读(32)  评论(0编辑  收藏  举报

导航