Node 入门 | 青训营笔记

74 阅读2分钟

前言

最近在做实践项目,分析npm管理的依赖关系,需要用到Node的相关路径以及文件操作,刚上手node还有很多操作需要一步一步搜索查找,掘金中有很多相关内容的分享,这里整理了我在项目中用到的一些知识点,下次再用就熟能生巧了。

包管理机制

npm包查找机制

  1. 寻找当前目录下的node_modules目录下是否安装有require的npm包
  2. 如果step1没有找到,查询父级目录中的node_modules,热然没有则沿着路径向上递归,直至根目录下的node_modules
  3. 找到包的位置后会加载package.json中main指向的文件,如果没有package.json则依次查找index.js、index.json、index.node

package.json

依赖配置

  • dependencies:生产环境需要的依赖
  • devDependencies:开发环境需要的依赖
  • peerDependencies:同伴依赖,用于指定当前包的兼容宿主版本,并不会被自动安装
  • optionalDependencies:可选依赖
  • bundleDependencies:打包依赖

常用模块操作

path模块

const path = require('path')

path.join('a', 'b.js') // 输出 a/b.js 
path.join('')   // 返回. 代表当前文件夹

path.parse('a/b/c/d.js') /* 返回对象
{
	root: '/',
	dir: 'a/b/c',
	base: 'd.js',
	ext: 'js',
	name: 'd'
} */
path.relative('/user/a/b/c', '/user/a/e/f') // 返回'../../e/f'
  • 路径拼接与拆分

    • path.join()方法

      传入字符串路径片段作为参数,返回拼接好的路径(根据win或linux系统选择对应的分隔符)

    • path.sep 属性

      平台的文件路径分隔符,配合split使用 'foo/bar/baz'.split(path.sep), 返回['foo', 'bar', 'baz']

  • 路径对象

    • path.parse()

      将路径字符串解析为对象

    • path.format()

      将对象转化为路径字符串

    • path.basename()

      返回路径参数对应的文件名

    • path.dirname()

      返回路径参数对应的目录部分

    • path.extname()

      返回路径参数对应的文件拓展名,即路径中最后一个'.'之后的部分;如果一个路径中并不包含'.'或该路径只包含一个'.' 且这个'.'为路径的第一个字符,则此命令返回空字符串

  • 相对路径与绝对路径

    • path.resolve([from...], to)

      将 to 参数解析为绝对路径,给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径

    • path.relative(from, to)

      返回从 from 到 to 的相对路径

    • path.isAbsolute(path)

      判断path是否是绝对路径

  • 常用路径

    • __dirname:文件所在目录的绝对路径
    • __filename:文件的绝对路径
    • process.cwd():运行node命令时所在的目录

fs模块

const fs = require('fs')
  • 文件读取

    • fs.readFile( filename [,encoding, callback(error, data)] ) 异步方式读取文件
    • fs.readFileSync( filename [,encoding, callback(error, data)] ) 同步方式
  • 文件写入

    • fs.**writeFile**(filename,data,[options],callback) 写入文件
    • fs.append**File**(filename,data,[options],callback) 追加内容
  • 检查文件/路径是否存在

    • fs.exists( path, callback) 查看文件与目录是否存在
    • fs.existsSync( path, callback) 同步方式