Node.js基础学习笔记

Node

1.命令行窗口
dir:列出当前目录下的所有文件
cd 目录名:进入指定的目录
如要打开桌面:Desktop,tab键,回车
md 目录名:创建文件夹
rd 目录名:删除文件夹

目录:
. 当前目录
… 上一级目录

环境变量(windows系统变量):
path:路径
如:C:\Users\Administrator\Desktop\hello
当在命令行窗口打开一个文件时或调用一个程序时,
系统先在当前文件中查找,找不到则一次去path的路径下查找。
找到则直接使用,最终找不到则报错。

可以将一些常用的文件或程序的路径添加到path下。

2.进程和线程
进程:负责为程序的运行提供必备的环境
相当于工厂中的车间
线程:计算机中最小的计算单位,线程负责执行进程中的程序
相当于工厂中的工人
单线程:JS
多线程:大多数软件
3.Node.js

  • Node是对ES标准一个实现,Node也是一个JS引擎

    • 通过Node可以使js代码在服务器端执行

    • Node仅仅对ES标准进行了实现,所以在Node中不包含DOM 和 BOM

    • Node中可以使用所有的内建对象
      String Number Boolean Math Date RegExp Function Object Array
      而BOM和DOM都不能使用
      但是可以使用 console 也可以使用定时器(setTimeout() setInterval())

    • Node可以在后台来编写服务器
      Node编写服务器都是单线程的服务器

    • 传统的服务器都是多线程的

      • 每进来一个请求,就创建一个线程去处理请求
    • Node的服务器单线程的

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

    I/O (Input/Output)

    • I/O操作指的是对磁盘的读写操作
  1. 模块化
    在Node中,一个js文件就是一个模块
    每一个js文件中的js代码都是独立运行在一个函数中
    而不是全局作用域,所以一个模块中的变量和函数在其他模块中无法访问

    通过 exports 向外部暴露变量和方法

  2. 引入其他的模块
    在node中,通过require()函数引入外部的模块
    require()可传递一个文件的路径作为参数,node将会自动根据该路径来引入外部模块
    相对路径:必须以.或…开头

    使用require()引入模块后,该函数会返回一个对象,这个对象代表的是引入的模块
    通过require()引入外部模块,使用的就是模块标识,通过模块标识找到指定的模块
    模块分为两类:
    核心模块:
    由node引擎提供的模块
    核心模块的标识就是模块的名字
    文件模块:
    由用户自己创建
    标识是文件的路径(绝对路径,相对路径)

  3. 在node中有一个全局对象global,它的作用和网页中window类似
    在全局创建的变量都会作为global的属性保存
    在全局创建的函数都会作为global的方法保存

当node在执行模块中的代码时:
会在代码最顶部添加如下代码:
function(exports,require,module,__filename,__dirname){

  在代码的最底部,添加如下代码:
  }

实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递了5个实参:
   exports  该对象用来将变量或函数暴露到外部
   require  函数,用来引入外部的模块
   module:
        module代表当前模块本身
        exports是module的属性
        可使用exports或者module.exports导出
   __filename  当前模块的完整路径
     C:\Users\Administrator\WebstormProjects\untitled1\01.node\04.module.js

   __dirname  当前模块所在文件夹所在路径
     C:\Users\Administrator\WebstormProjects\untitled1\01.node
  1. exports 和 module.exports
    通过exports只能使用.的方式向外暴露内部变量
    exports.xxx = xxx

    而module.exports既可以通过.的形式也可以直接赋值
    module.exports.xxx = xxx
    module.exports = { }
    8.包
    包结构:
    -package.json 描述文件
    在json里不能写注释

-bin 可执行二进制文件
-lib js代码
-doc 文档
-test 单元测试
9.NPM:Node Package Manager
npm –v 查看npm的版本
npm install /i 包名 安装包
npm version 查看所有模块的版本
npm search 包名 搜索包
npm remove/r 包名 删除包
npm install包名 –save 安装并添加到依赖中
npm install 下载当前项目依赖的包
npm install 包名 –g 全局安装包(一般是一些工具)
10.
通过cnpm下载的包都放入node_modules文件夹中
通过npm下载的包,直接通过包名引入即可

node在使用模块名字引入模块时,会从当前目录的node_modules到磁盘的根目录层层去找该模块
找到则使用,如果都没有则报错

Buffer(缓冲区)
Buffer的结构和数组很像,操作的方法也和数组类似
数组中不能存储二进制文件,Buffer专门用力啊存储二进制数据
使用buffer不需要引入模块,直接使用即可
以二进制形式存储,以16进制显示
每一个元素的范围:00-ff 0-255

 一个0 或 一个1 称为1位
 8bit = 1byte(字节)
 一个元素占有一个字节

 Buffer大小确定后不能修改
 
  Buffer.from(str) 将一个字符串保存到buffer中
 Buffer.alloc(size) 创建一个指定大小的buffer
 Buffer.allocUnsafe(size) 创建一个指定大小的buffer,但是buffer中可能含有敏感数据
 buf.toString()  将缓冲区中的数据转换为字符串

12.同步文件:有返回值
文件系统(File System)
文件系统通过Node操作系统中的文件
使用文件系统,需要先引入fs模块,fs是核心模块,直接引入不需要下载

手动操作的步骤:
1.打开文件:
fs.openSync(path,flags[,mode])
2.向文件中写入内容
fs.writeSync(fd,string[,position[,encoding]])
fd 文件的描述符, 需要传递写入的文件的描述符

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

13.异步文件
异步文件写入:
打开文件
fs.open(path,flags[,mode],callback)
异步调用的方法,结果都是通过回调函数的参数返回的
回调函数的两个参数:
err 错误对象,若无则为null
fd 文件的描述符

写入文件
fs.write(fd,string[,position[,encoding]],callback)

关闭文件
fs.close(fd,callback)
  1. 简单文件写入:
    fs.writeFile(file,data[,option],callback)
    fs.writeFileSync(file,data[,options])
    15.写路径时:/相当于\

  2. 创建一个可写流
    fs creareWriteStream(path[,option])
    option 配置的参数
    可以通过监听流的open和close事件来监听流的打开和关闭

    on(事件字符串,回调函数)
    可以为对象绑定一个事件

    once(事件字符串,回调函数)
    可为对象绑定一个一次性的事件,该事件将会在触发一次以后自动失效

读取同步文件
读取异步文件
读取简单文件
fs.readFile(path[,option],callback)
fs.readFileSync(path[,option])
path要读取文件的路径
option读取的选项
callback回调函数,通过回调函数将读取到内容返回(err,data)
err错误对象
data读取到的数据,会返回一个Buffer

读取流式文件
适用于一些大文件,可以分多次将文件读取到内存中
18.其他
验证路径是否存在
– fs.exists(path,callback)
– 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)
建立目录
-dir(path[, mode], callback)
– 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)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值