Appearance
js
const path = require('path')
// 以 process.cwd 解析出一个绝对路径
path.resolve('./foo')
// 可以传入路径来查找,以该文件目录
path.resolve(__dirname, 'demo.js') // C:\Users\xNoRain\Desktop\node\demo.js
path.resolve(__dirname, './demo.js') // C:\Users\xNoRain\Desktop\node\demo.js
// 不能出现 /,否则结果会变成根路径
path.resolve(__dirname, '/demo.js') // C:\demo.js
// 可以出现 /
path.join(__dirname, 'foo', 'bar', '/') // C:\Users\xNoRain\Desktop\node\foo\bar\
path.extname('foo.min.js') // .js
path.relative('foo', 'foo/bar/baz.js') // 相减取差异
path.dirname('foo/bar.js') // 目录名
const vm = require('vm') // 执行字符串代码
const foo = 'foo'
eval('console.log(foo)') // foo,eval 执行时不会产生沙箱,能访问外层变量
const fn = new Function('console.log(a)')
fn() // undefined
global.foo = 'foo'
const fn = new Function('console.log(a)')
fn() // foo
// 和 new Function 一样,但是不同把字符串包装成函数形式。
vm.runInThisContext('console.log(foo)')