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