Node.js的模块系统
    Node.js中使用"Module(模块)"来规划不同的功能对象。
  模块的分类:
 (1)核心模块——nodejs的内置模块

    
 (2)第三方模块(https://www.npmjs.com  常用的第三方模块:express、less、grunt...)
 (3)自定义模块: 每一个被加载的.js文件对应一个模块对象,包含相应的功能和函数。
    模块中声明的变量或函数的作用域是“模块作用域”,不是golbal的成员,默认只能在当前js文件(即当前模块)中使用。
    Node.js启动时运行的第一个模块,称为“主模块”。——mail module,也是自身模块。
    除主模块之外的其他模块,称为“子模块”。
    获取主模块对象:process.mainModule  require.main
    每一个模块都可以导出(exports)自己内部的对象供其他模块使用,也可以引入(require)并使用其他模块中导出的对象。
    每一个模块内部都可以使用一个变量叫“module”,指向当前模块自己。
    判断当前模块是否是主模块:module===process.mainModule

 创建模块:文件式自定义模块

    

 加载模块:其他js文件中调用

     

  
   预定义的模块作用域成员:
    __dirname      当前模块文件所在的目录
    __filename     当前模块文件所在目录及文件名
    module          指向当前模块的引用
    module.exports  指向当前模块中待导出的供其他模块使用的对象
    exports          指向module.exports对象的引用
    require          引入其他模块,使用其他模块的module.exports对象

自定义模块:
    (1)文件模块
        没有后缀的文件模块,被作为js文件加载;.js后缀的文件模块,被作为js文件加载; .json后缀的文件模块,被作为JSON字符串加载,自动转换为对象;.node后缀的文件模块,被作为C/C++二进制加载;

   
    (2)目录模块:在引入是只需要引入目录名的四种形式:
        包含package.json文件的目录:package.json中包含一个main属性,指向该模块的js文件——> {"main":"xx.js"};
        包含index.js文件的目录;
        包含index.json文件的目录;
        包含index.node文件的目录;
      模块查找顺序:(1)文件/目录模块的缓存;(2)原生模块的缓存;(3)原生模块;(4)文件/目录模块;
  包(package):是根据CommonJS规范,对模块进行标准封装;
       包规范:包是一个目录;目录中包含一个包说明文件package.json,存放于包顶级目录下;目录中包含js文件,放在lib目录下,如果有index.js,可以放到顶级目录下;二进制文件应该放到bin目录下;文档应该放到doc目录下;单元测试文件应该放到test目录下;
      CommonJS规范要求,包应该位于当前目录或者父目录下的node_modules文件夹下,require函数由近及远进行查找。
  npm——包管理器
      Node.js的包管理工具,用于下载、安装、升级、删除包,或者发布并维护包。
      npm官网:www.npmjs.com
      包的下载安装:
      (1)下载到当前目录:npm install 包名 会安装到指定目录下的node_modules文件夹下 查看目标路径:npm root
      (2)下载到全局:npm install 包名 -g  会下载到npm目录下  查看目标路径:npm root -g
      包的生成:使用npm init 命令可以在当前目录下生成一个package.json文件;
      包的发布:将自定义的包发布到npmjs.com上:
        (1)在www.npmjs.com注册账号;
        (2)使用npm  adduser命令注册或者登陆已有账号;
        (3)进入到配置完成的包目录,使用npm publish命令发布包;
        (4)搜索或下载使用;
      更新包:npm update 包名;  删除包:npm uninstall 包名;
  
Node.js核心模块
1、console
    global.console    用于向stdout和stderr执行输出
    console class    console模块中的Console构造函数,可以向任意输出流(文件)中执行输入
  
2、Query String:提供了处理url中“查询字符串”部分的相关操作
    parse()    //从查询字符串中解析出数据对象,参数为要解析的查询字符串
    stringify()    //将数据对象转换为查询字符串格式,参数1,要转换的对象;可选参数2,指向键值对之间的分隔符;可选参数3,执行键和值之间的分隔符;

    
3、Url模块: 提供了处理url中不同部分的相关操作
    parse()    //解析出url中的各个组成部分,参数1:要解析的url字符串;可选参数2:将查询字符串部分(query)解析为对象,值为true或false
    format()    //将对象反向格式化为url格式,参数为url对象
    resolve()    //根据基地址解析出相对url,参数1:基地址;参数2,相对地址

    
4、Path模块:提供了对文件路径进行操作的相关方法
    parse()    //解析一个路径为对象,参数为路径字符串
    format()    //将路径对象格式化为字符串,参数为路径对象
    resolve()    //根据基础路径解析出一个目标路径的绝对地址,参数1:基础路径;参数2,目标路径
    relative()    //根据基础路径,获取目标路径与其的相对关系,参数1:基础路径;参数2,目标路径

    
5、Dns模块: 提供了域名到IP地址的双向解析功能
    lookup()    //将一个域名解析为IP地址,从操作系统中查询(缓存)
    resolve()    //将一个域名解析为一个dns记录解析数组,从dns服务器上查询
    reverse()    //把一个IP地址反向解析为一组域名(很多情况下解析不出来你没)

    

  
6、Util模块:工具模块
    format()    //使用带占位符的方式格式化字符串
    inspect()    //返回一个对象的字符串表示
    inherits()    //实现构造方法之间的继承

    
7、Buffer: 缓冲区,一块专用于存储数据的内存区域;它是全局对象Global的成员,使用时无需引入。

  
8、fs模块:fs模块提供了文件读写、更名、删除、遍历目录等操作
    常用class:
    fs.stats    //文件或目录的统计信息描述对象
    fs.ReadStream    //stream.Readable接口的实现对象
    fs.WriteStream    //stream.Writeable接口的实现对象
    fs.FSWatcher    //可用于监视文件修改的文件监视器对象

  ---------------------------------------------------------------------------------------
    常用方法:
    fs.mkdir()        //创建目录
    fs.rmdir()        //删除目录
    fs.readdir()    //读取目录下的内容
    fs.readFile()    //读取文件的内容
    fs.writeFile()    //向文件中写入内容
    fs.appendFile()    //向文件中追加内容
    fs.unlink()        //删除文件
    fs.rename()    //重命名文件
    fs.stat()        //用于返回一个文件或目录的统计信息对象(fs.stats对象)
    以上方法中都有异步和同步(Sync)两种;所有的异步方法都有一个回调函数,回调函数中的第一个参数都是I/O错误对象err
    ---------------------------------------------------------------------------------------
    fs.stat() & fs.statSync()    //用于返回一个文件或目录的统计信息对象(fs.stats对象)
    fs.stats对象方法:
        stats.isFile()            //是否为文件
        stats.isDirectory()    //是否为目录
    ---------------------------------------------------------------------------------------
    操作目录:
    fs.mkdir()     & fs.mkdirSync()       //创建目录
    fs.rmdir()     & fs.rmdirSync()       //删除目录
    fs.readdir()   & fs.readdirSync()    //读取目录下的内容

  

  

转载于:https://www.cnblogs.com/7662-scy/p/6429896.html

Node.js基础学习(第二幕)相关推荐

  1. node.js基础学习

    node.js简介 Node.js能够让javascript在服务端运行 1.node的特性 异步I/O 说到异步I/O,就不得不说一下I/O,他们分别是input和output的缩写,也就是输入.输 ...

  2. Node.js基础入门第二天

    经过第一天的学习,对Node.js有了一个初步的认识,今天继续学习Node.js,加以整理并分享,如有不足之处,还请指正. require函数 作用:在当前模块中加载另外一个模块 语法:require ...

  3. 【前端】-【node.js基础】-学习笔记

    [前端]-[node.js]-学习笔记 1 node.js介绍 1.1 node.js优点 1.2 node.js 不足之处 1.3 nodejs与java的区别 2. node中函数 3. 浏览器和 ...

  4. Node.js基础笔记

    Node.js基础笔记 1. NodeJS入门基础 1.1 NodeJS 介绍 1.1.1 NodeJS 是什么 1.1.2 NodeJS 的优势 1.1.3 NodeJS 的技术特性 1.1.4 N ...

  5. 构建node.js基础镜像_在Android上构建Node.js应用程序

    构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...

  6. 前端工程化----Node.js基础篇

    文章目录 1.认识Node.js Node.js是什么 Node.js应用场景 2.Node.js安装和版本管理 Node.js安装 Node.js版本工具 3.Node.js执行文件 4.Node. ...

  7. Node.js基础入门第九天

    经过前面几天对Node.js的学习,基本的开发知识已经逐渐掌握,所谓工欲善其事必先利其器,今天进一步学习Node.js的开发框架Express.利用Express框架可以快速的进行Web后端开发,本文 ...

  8. Node.js(一、Node.js基础、模块加载机制、包等)

    Node.js(一.Node.js基础.模块加载机制.包等) 1.Node.js基础 1.1.Node是什么 1.2.Node环境安装失败解决方法 1.2.1.Node环境搭建 1.2.2.错误代码2 ...

  9. 构建node.js基础镜像_我如何使用Node.js构建工作抓取网络应用

    构建node.js基础镜像 by Oyetoke Tobi Emmanuel 由Oyetoke Tobi Emmanuel 我如何使用Node.js构建工作抓取网络应用 (How I built a ...

最新文章

  1. 促使网站关键词排名稳定的技巧有哪些?
  2. eclipse Plugin execution not covered by lifecycle configuration:maven.***.plugin
  3. 【ArcGIS微课1000例】0021:ArcToolBox工具箱功能与环境概述
  4. 手把手教你搭建Maven项目
  5. 手持终端的时候应该有数据线
  6. SQL 比较全的银行列表、带名称缩写、带银行logo
  7. GIS软件的发展现状总结
  8. PTP Precision Time Protocol精确时间协议 IEEE1588解决方案(含PTP和PPS)
  9. c++源码逆向UML工具踩坑
  10. 1620:质因数分解
  11. 赶快来了解一下职场达人进化论吧,它都有哪些实战技巧?
  12. Android 视频播放器
  13. VBA之FormulaR1C1属性
  14. 2023四省联考 数学 题解
  15. 安装银河麒麟系统失败是什么原因
  16. Cesium for Unreal 数据加载 场景漫游 粒子效果 视频监控 VR预览
  17. 利用VS安装项目打包软件的做法
  18. 新玺配资:金融之后地产也来凑热闹 风格转向蓝筹
  19. Unable to resolve service for type`***` while attempting to activatre `***`
  20. 靠谱的IT人力外包企业有哪些?

热门文章

  1. 事务不是与当前连接无关联就是已完成_mysql索引锁事务
  2. mysql外键可以是空吗_带外键的表列可以为NULL吗?
  3. Spark读Hive分区表报错:Caused by: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist
  4. linux服务器安装nexus,Linux下搭建maven服务器nexus
  5. 因果推断中期学习小结
  6. R︱mlr包挑选最适机器学习模型+变量评估与选择(案例详解)
  7. WINDOWS平台上扩展SGA,把你的内存用起来吧
  8. 研究:三分之一英国人或因机器人“丢饭碗”
  9. 21-python-time,random模块的应用
  10. 七、【应用的主要框架】