• node八-核心模块、包


    学会查API,远比会几个API更重要。

    核心模块意义

      -如果只是在服务器运行javascript代码,并没有多大意义,因为无法实现任何功能>读写文件、访问网络

      -Node的用处在于它本身还提供可一系列功能模块,用于与操作系统互动

      -核心的功能模块在node中内置

    常见核心模块

      -path:处理文件路径

      -fs:操作文件系统

      -child_process:新建子进程

      -util:提供一系列实用小工具

      -http:提供http服务器功能

      -url:用于解析URL

      -querystring:解析URL中的查询字符串

      -crypto:提供加密、解密功能

    包的概念>NPM

    什么是包

      -由于node是一套轻内核的平台,虽然提供了一系列的内置模块,但是不能满足开发者的需求,于是出现了包的概念

      -与核心模块类似,就是将一些预先设计好的功能或者API封装到一个文件夹,提供给开发者使用

    包加载机制

      -现在系统核心(优先级别最高)的模块中找 > 不要创建一些和现有的包重名的包

      -然后再到当前目录node_modules目录中找

    PATH > 路径操作模块

      -在文件操作的过程中,都必须使用物理路径(绝对路径)

       -相关API

        --path.join([p1],[p2],[p3])  >> 连接多个路径

        --path.basename(p,ext) >> 获取文件名,不包括后缀

        --path.basename(p) >> 获取文件名,包括后缀

        --path.dirname(p) >> 获取文件夹路径

        --path.extname(p) >> 获取文件扩展名

        --path.relative(from,to) >> 获取从from到to的相对路径

        --path.delimiter >>获取不同操作系统中默认的路径分隔符。window是";"分号,Linux是":"冒号

        --process.env 内部有一个path属性,其对应的就是环境变量

        --path.parse(pathString) >> 将一个路径字符串转换为一个对象(包含文件目录,文件名,扩展名)

        --path.format(pathObject) >> path.parse(pathString)相反

        --path.isAbsolute(p) >> 判断一个路径是否是绝对路径

        --path.normalize(p) >> 常规化路径--将一个书写不规范的路径转换成符合规范的路径

    FS > 文件读取

      -fs模块对文件的几乎所有操作都有同步和异步两种形式

        --eg:readFile() 和 readFileSync()

      -区别:

        --同步调用会阻塞代码的执行,异步则不会

        --异步调用会将读取任务下达到任务队列,知道任务执行完成才会回调

        --异常处理区别,同步必须使用 try catch方式,异步可以通过回调函数的第一个参数

      -代码测试案例

        

        测试结果

          

        --注意点:

          ---不论是同步还是异步,都会在其方法内设置编码格式,若不设置编码格式能输出结果是

          

          输出结果则是以buffer的形式读取。读取文件时没有指定默认编码,默认读取的是一个Buffer(缓冲区)

     什么是缓冲区

      -缓冲区就是内存中操作数据的容器

      -只是数据容器而已

      -通过缓冲区可以很方便的操作做二进制数据

      -而且在打文件操作时必须有缓冲区

    为什么要有缓冲区

      -JS是比较擅长处理字符串,但是早期的应用场景主要用于处理HTML文档,不会有太大篇幅的数据,也不会接触到二进制的数据。

      -而在Node中操作数据、网络通信是没办法完全以字符串的方式操作的,所以在node中引入了一个二进制的缓冲区实现buffer

    创建缓冲区

      -创建长度为4个字节的缓冲区

        -- var buffer = new Buffer(4);

      -通过指定数据内容的方式创建

        --var buffer = new Buffer([00,11]);

      -通过指定编码的方式创建

        --var buffer = new Buffer('nodon','utf8');

     

     

     

     

     

     

     

     

     

     

      

  • 相关阅读:
    服务端获取实际IP工具类
    vue-element-admin整合服务端代理api
    elemengui分页
    vue获取浏览器地址栏参数
    el-table-column动态判断显示性别男女
    nginx代理静态页面添加二级目录
    nginx配置代理指向Redis
    SpringBoot整合Redis日志反复提示Redis重连问题
    centos7安装Redis
    nohup启动jar包
  • 原文地址:https://www.cnblogs.com/nordon-wang/p/6053336.html
Copyright © 2020-2023  润新知