zoukankan      html  css  js  c++  java
  • node之module与fs文件系统

    命令行窗口(小黑屏)、cmd窗口、终端、shell

    开始菜单 --> 运行 --> CMD --> 回车
    常用的指令:

    dir             列出当前目录下的所有文件
    cd 目录名        进入到指定的目录
    md 目录名        创建一个文件夹
    rd 目录名        删除一个文件夹
    

    目录:

    .      表示当前目录
    ..     表示上一级目录
    

    环境变量(window系统中的变量)

    在path环境变量定义之后,在此电脑任何位置都能访问到。
    

    ​ 当我们在命令行窗口打开一个文件,或调用一个函数时,系统会首先在当前目录下寻找文件程序,如果找到了则直接打开;如果没有找到则会依次到环境变量path的路径中寻找,直到找到为止;如果没找到则报错

    模块

    模块的定义:

    在Node中,一个js文件就是一个模块
    默认情况下在js文件中编写的内容,都是运行在一个独立的函数中,外部模块无法访问
    

    导出变量和函数:

    使用 exports
        exports.属性 = 属性值;
    	exports.方法 = 函数;
    使用module.exports
    	module.exports.属性 = 属性值;
    	module.exports.方法 = 函数;
    	module.exports = {};
    

    模块的标识:

    模块的标识就是模块的名字或路径
    	我们node是通过模块的标识来寻找模块的
    	
    对于核心模块(npm中下载的模块),直接使用模块的名字对其进行引入
    	var fs = require("fs");
    	var express = require("express");
    
    对于自定义的文件模块,需要通过文件的路径来对模块进行引入
    	路径可以是绝对路径,如果是相对路径必须以./或../开头
    	var router = require("./router");
    

    node中模块执行机制:

    在node中有一个全局变量 global ,它的作用和网页中 window 类似
    	在全局中创建的变量都会作为 global 的属性保存
    	在全局中创建的函数都会作为 global 的方法保存
    	
    当node在执行模块中的代码时,它会首先在代码的最外部,添加如下代码:
    function(exports,require,module,_filename,_dirname){
        //实际上模块中的代码都是包装在一个函数中执行的,并且在执行时,同时传递了5个参数
        exports    该对象用来将变量或函数暴露到外部
        require    函数,用来引入外部的模块
        module     module代表的是当前模块本身
        		   exports就是module的属性
                   既可以使用exports导出,也可以使用module.exports导出
        _filename  当前模块的完整路径
        _dirname   当前模块所在文件夹的完整路径
    }
    
    //保存当前执行的函数对象
    arguments.callee
    

    exports 和 module.exports:

    //通过exports只能使用.的方式来向外暴露内部变量
    	exports.xxx = xxx
    //而module.exports既可以通过.的形式,也可以直接赋值
    	module.exports.xxx = xxxx
    	module.exports = {}
    

    npm的命令

    npm -v                        查看npm的版本
    npm version                   查看所有模块的版本
    npm search 包名                搜索包
    npm install / i 包名           安装包
    npm remove / r 包名            删除包
    npm install 包名 --save        安装包并添加到依赖中
    npm install                   下载当前项目所依赖的包
    npm install 包名 -g            全局安装包(全局安装的包一般都是一些工具)
    
    node命令:
    1.npm init
     //初始化node项目
    2.npm install express
    //下载express模块包
    3.npm install body-parser
    //第二步已下载
    

    node_module

    通过npm下载的包都放到node_module文件夹中
    	我们通过npm下载的包,直接通过包名引入即可
    
    node在使用模块名字来引入模块时,它会首先在当前目录的node_module中寻找是否含有该模块
    	如果有则直接使用,如果没有则去上一级目录的node_module中寻找
    	如果有则直接使用,如果没有则再去上一级目录中寻找,直到找到为止
    	直到找到磁盘的根目录,如果依然没有,则报错。
    

    Buffer(缓冲区)

    Buffer 的结构和数组很像,操作的方法也和数组类似
    数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据
    使用buffer不需要引入模块,直接使用即可
    在buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示
    	buffer中每一个元素的范围是从00-ff   0-255
    	000000000 - 11111111
    计算机 一个0 或一个1 我们成为1位(bit)
    
    8bit = 1byte(字节)
    
    buffer中的一个元素,占用内存的一个字节
    
    buffer的大小一旦确定,则不能更改,buffer实际上是对底层内存的直接操作
    

    buffer常用方法

    Buffer.from(str)               将一个字符串转换为buffer
    Buffer.allloc(size)            创建一个指定大小的Buffer
    Buffer.alloUnsafe(size)        创建一个指定大小的Buffer,但是可能包含敏感数据
    buf.toString()                 将缓冲区的数据转换为字符串
    

    fs文件系统

    概念:

    文件系统简单来说就是通过Node来操作系统中的文件
    使用文件系统,需要先引入fs模块,fs模块时核心模块,直接引入不需要下载
    

    同步文件的写入

    1.打开文件
    fs.openSync(path,flags[,model])
    	// path  要打开文件的路径
    	// flags  打开文件要做的操作的类型
    	    r  只读的
            w  可写的
        // model   设置文件的操作权限,一般不传
    返回值:
        //该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作
    2.向文件中写入内容
    fs.writeSync(fd,string[,position[,encoding]])
    		// fd      文件的描述符,需要传递要写入文件的描述符
    		// string   要写入的内容
    		// position  写入的起始位置
    		//  encoding  写入的编码,默认utf-8
     例:   fs.writeSync(fd,"今天天气真不错~~~~");
    3.保存并关闭文件
    fs.closeSync(fd)
    		//fd 要关闭的文件的描述符
    

    异步文件的写入

    1.打开文件
    fs.open(path,flags[,model],callback)
    	//异步调用的方法,结果都是通过回调函数的参数返回的
    	//回调函数两个参数:
    		err  错误对象,如果没有错误则为null 
            fd   文件的描述符
    2.写入文件
    fs.write(fd,string[,position[,encoding]],callback)
    3.关闭文件
    fs.close(fd,callback)
    

    具体用法实例:

    简单文件的写入

    fs.writeFile(file,data[,option],callback)
    fs.writeFileSync(file,data[,option])
        // file 要操作的文件的路径
        // data 要写入的数据
        // option 选项,可以对写入进行一些设置
        // callback 当写入完成以后执行的函数
    

    具体用法实例:

  • 相关阅读:
    假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为$p = (1+r)^n$ ,其中r为年增长率,n为年数,p为与现在相比的倍数
    不定积分40例
    docker容器
    Kubernetes搭建
    windows提权之mimikatz
    NodeJS沙箱逃逸&&vm
    jwt攻击手段
    yii2邮件配置教程,报Expected response code 250 but got code "553"原因
    git 撤销,放弃本地修改
    动态规划(含最短路径和正则匹配例子)
  • 原文地址:https://www.cnblogs.com/kerin/p/13498941.html
Copyright © 2011-2022 走看看