Vite笔记之12-为什么服务器处理路径使用path

241 阅读2分钟

1. 服务器读取文件

  1. 如果写的是相对路径 那么他会尝试去拼接成绝对路径,使用process.cwd()来进行对应的拼接。
  2. 使用require进行读取时,会转换成立即执行函数,验证是打印arguments 只有在函数中才有。并传入几个变量如__filename, __dirname 等。
  3. fs 处理文件的模块(读文件, 修改文件等一系列操作)。
  4. path本质上就是一个字符串处理模块, 它里面有非常多的路径字符串处理方法。
  5. path.resolve在拼接字符串 ,会帮你处理linux和windows的差别。linux使用 / window使用 \
  6. process.cwd: 获取当前的node执行目录。
  7. __dirname: 始终返回的是当前文件所在的目录。

2. 案例

  1. 创建一个index.js文件,加载a.js文件,可以在文件中直接打印argument验证默认变量

index.js

const fs = require('fs') // 处理文件的模块(读文件, 修改文件等一系列操作)
const path = require('path') // path本质上就是一个字符串处理模块, 它里面有非常多的路径字符串处理方法

require('./a') // require() 实际上是放在立即执行函数中执行,验证是打印arguments 只有在函数中才有

// __dirname + "/variable.css"   会帮你处理linux和windows的差别

const result = fs.readFileSync(path.resolve(__dirname, './variable.css')) // 我们希望基于main.js去进行一个绝对路径的生成

// console.log("result", result.toString(), process.cwd(), __dirname + "/variable.css", path.resolve(__dirname, "./variable.css"));

// __dirname: 始终返回的是当前文件所在的目录

a.js

console.log('打印***arguments======>', arguments)

使用node index.js,可以看到a.js转换成函数,内部可以打印出arguments.

打印结果:

/*
// 涉及到commonjs规范的一个原理 

0 module.exports require() // es6 module import export for

1 exports = module.exports = {}
2/34个成员 就是__dirname		文件地址
第5个成员 就是__filename  文件目录地址

(function(exports, require, module, __filename, __dirname) {
    require("")
    console.log("__dirname", __dirname);
}())
打印的函数
 {
  '0': {},
  '1': [Function: require] {
    resolve: [Function: resolve] { paths: [Function: paths] },
    main: Module {
      id: '.',
      path: 'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path',
      exports: {},
      filename: 'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path\\main.js',
      loaded: false,
      children: [Array],
      paths: [Array]
    },
    extensions: [Object: null prototype] {
      '.js': [Function (anonymous)],
      '.json': [Function (anonymous)],
      '.node': [Function (anonymous)]
    },
    cache: [Object: null prototype] {
      'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path\\main.js': [Module],
      'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path\\a.js': [Module]
    }
  },
  '2': Module {
    id: 'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path\\a.js',
    path: 'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path',
    exports: {},
    filename: 'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path\\a.js',
    loaded: false,
    children: [],
    paths: [
      'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path\\node_modules',
      'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\node_modules',
      'C:\\Users\\admin\\Desktop\\taoism-project\\node_modules',
      'C:\\Users\\admin\\Desktop\\node_modules',
      'C:\\Users\\admin\\node_modules',
      'C:\\Users\\node_modules',
      'C:\\node_modules'
    ]
  },
  '3': 'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path\\a.js',
  '4': 'C:\\Users\\admin\\Desktop\\taoism-project\\vite-learn\\test-path'
}

 */