zoukankan      html  css  js  c++  java
  • 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()    //读取目录下的内容

      

       

  • 相关阅读:
    每日日报2020.12.1
    每日日报2020.11.30
    981. Time Based Key-Value Store
    1146. Snapshot Array
    565. Array Nesting
    79. Word Search
    43. Multiply Strings
    Largest value of the expression
    1014. Best Sightseeing Pair
    562. Longest Line of Consecutive One in Matrix
  • 原文地址:https://www.cnblogs.com/7662-scy/p/6429896.html
Copyright © 2011-2022 走看看