node.js

1.命令行窗口(小黑屏)、cmd窗口、终端、shell

常用指令:dir  列出当前目录下所有文件

                  cd  进入到指定的目录

                  md  创建一个文件夹

                  rd  删除一个文件夹

目录:. 表示当前目录

          ..  表示上一级目录

cmd中执行web  js文件(node+空格+js文件名)

2.进程和线程

进程:进城负责为程序的运行提供必备的环境。相当于工厂中的车间

线程:(js是单线程的,Java是多线程的,传统的服务器都是多线程的)计算机中的最小的计算单位,线程负责执行进程中的程序。相当于工厂中的工人

3.Node.js

(Node处理请求时是单线程的,但是在后台拥有一个I/O线程池)

Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台的JavaScript运行环境。Node.js采用V8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模式[I/O(Input/Output)  I/O操作指的是对磁盘的读写操作]等技术来提高性能,可优化应用程序的传输量和规模。

用途:Web服务API,比如REST

           实时多人游戏

           后端的web服务,例如跨域,服务器端的请求

           基于web的应用

           多客户端的通信,如即时通信

4.模块化【模块引用】【模块定义】【模块标识】

在Node中,一个js文件就是一个模块(每一个js文件中的js代码都是独立运行在一个函数里的,而不是全局变量,所以一个模块中的变量和函数在其他模块中无法访问;

可以通过exports向外暴露变量和方法);

在Node中,通过require()函数引入外部模块,(如果使用相对路径,必须以.或者..开头;使用require()引入模块后,该函数会返回一个对象--即引入的模块);

在Node中有一个全局对象global,他的作用和window类似,在全局变量中创建的变量和函数都会作为global的属性和方法保存;

实际上模块中的代码都是包装在一个函数中执行的,在执行时,同时传递5个参数:

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

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

module 代表的是当前模块本身,exports就是module的属性,

              既可以用exports导出,也可以用module.exports导出

—filename 当前模块的完整路径

—dirname 当前模块所在文件的完整路径

  

exports 和  module.exports

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

       exports.XXX = XXX

通过module.exports既可以使用.的方式,也可以直接赋值【建议使用module.exports】 

      module.exports.XXX =XXX         

      module.exports = { }

好处:降低耦合性;  方便代码复用

5.包文件   package

Common JS的包规范包括包结构(用于组织包中的各种文件)和包描述文件(描述包的相关信息,以供外部读取分析)

【实际开发做项目时,先把package.json创建出来】

【json文件里不能写注释】

 6.NPM (Node Package Manage)

NPM帮助node完成第三方模块的发布、安装和依赖等。借助NPM,node与第三方模块之间形成了很好的生态系统。(安装完node后自带NPM)

NPM命令:

npm-v   查看npm版本

npm   帮助说明

npm version   查看所有模块的版本

npm search 包名   搜索模块包

npm install / i 包名    安装包

npm remove / r 包名    删除包

npm install 包名 -g    全局模式安装包(一般都是工具,在计算机里使用)

npm install 包名 --save    安装包并添加到依赖中

npm install    下载当前项目所依赖的包

npm install 文件路径    从本地安装

npm install 包名 -registry=地址     从镜像源安装

npm config set registry 地址     设置镜像源

【一般在git上下载项目里都没有人去上传node_modules  原因:1.上传或下载速度慢 2.不能保证是最新的】

7.Buffer缓冲区

buffer的结构、操作的方法与数组很相似。

数组不可以存储二进制的文件,而Buffer是专门存储二进制文件的,以十六进制的形式显示。

Buffer不用引用模块,直接使用即可

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

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

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

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

8.文件系统(fs)

文件系统就是通过node来操作系统中的文件

使用文件系统,需要先引入fs模块。fs是核心模块,直接引入不需要下载

使用fs模块,需要先对其进行加载   -const fs = require("fs");

fs模块中所有操作都包含同步(同步文件系统会阻塞程序的执行,除非操作完毕,否则不会向下执行代码)和异步(不会阻塞程序的执行,而是操作完成时,通过回调函数将结果返回)

同步文件的写入:1.打开文件  fs.openSync(path, flags[, mode ])

                                 path  要打开文件路径

                                 flags  打开文件要做的操作的类型  (r只读   w可写)

                                 mode  设置文件操作权限,一般不传

                                 返回值:该方法会返回一个文件的描述符作为结果,可以对文件进行操作。

                             2.向文件中写入内容  fs.writeSync(fd, string[, position[,encoding] ])

                                fd 文件的描述符,需要传递要写入的文件的描述

                                string   要写入的内容

                                position   写入的起始位置 ,一般不传

                                encoding  写入的编码,默认utf-8,一般不传

                             3.保存并关闭文件   fs.closeSync(fd)

                                 fd  要关闭的文件的描述符

异步文件的写入:1.打开文件  fs.open(path, flags[, mode ],callback)

                                 callback  回调函数

                                 (异步方法没有返回值,异步调用方法的结果通过回调函数的参数返回)

                             2.向文件中写入内容  fs.write(fd, string[, position[,encoding] ],callback)

                             3.保存并关闭文件   fs.closeSync(fd,callback)

简单文件写入: fs.writeFile(file, data[, options ],callback)

                           fs.writeFileSync(file, data[, options ])                  

                                 file  要操作文件的路径

                                 data  要写入的数据

                                 options  选项,可以对写入进行一些设置

                                              flag (r 只读      w  可写      a 追加)

                                 callback  写入完成以后执行的函数

简单文件读取: fs.readFile(path,[, options ],callback)

                           fs.readFileSync(path[, options ])                  

                                 path  要读取文件的路径

                                 options   读取选项 

                                              flag (r 只读      w  可写      a 追加)

                                 callback  回调函数,通过回调函数将读取到的内容返回

流式文件写入:同步、异步、简单文件不适用于大文件的写入,性能较差,易导致内存溢出 

                           fs.createWriteStream(path[, options ])

                                 path  文件路径

                                 options  配置的参数

流式文件读取:适用于较大文件,可分多次将文件存到内存里

                           fs.createReadStream(path[, options ])

可读:

可写:方法(1)

 可写: 方法(2)              [不写监听流,直接pipe]

 9.fs模块其他方法

fs.existsSync(path)    验证路径是否存在

fs.stat(path,callback)    验证路径是否存在

 fs.statSync(path)

fs.unlink(path,callback)    删除文件

 fs.unlinkSync(path)

fs.readdir(path[,options],callback)    列出文件

 fs.readdirSync(path[,options])

 fs.truncate(path,len,callback)    截断文件

 fs.truncateSync(path,len)

fs.mkdir(path[,mode],callback)    建立目录    [mode可不写]

 fs.mkdirSync(path[,mode])

fs.rmdir(path,callback)    建立目录     

 fs.rmdirSync(path )

fs.rename(oldPath,newPath,callback)    重命名文件和目录     

 fs.renameSync(oldPath,newPath) 

fs.watchFile(filename[,options],listener)   监视文件更改写入 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值