Node.js基础学习(第二幕)

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()    //读取目录下的内容

  

   

posted @ 2017-02-23 22:18  橙子2017  阅读(223)  评论(0编辑  收藏  举报