노드와 프런트 엔드의 차이점
- 프런트 엔드에는 BOM과 DOM이 있지만 서버에는 없고 창이 없습니다.
- 서버에 전역 전역 개체가 있습니다(브라우저도 전역이 있지만 속성에 액세스할 때 모두 창을 통해 프록시되며 전역에 직접 액세스할 수 없으며 전역에 직접 액세스할 수 없습니다)
console.log(global);
// global 跟 window 一样,可以循环引用
console.log(global.global.global);
프로세스 프로세스(중요)
프로세스의 기본값은 전역에서 검색됩니다.
다음과 같이 쓸 수 없습니다 this.process
: 노드에 파일을 기반으로 하는 모듈식 시스템이 있고, 각 파일은 모듈이며, 모듈에서 이것은 다음과 같이 변경됩니다.{}
console.log(global.process);
(1) 플랫폼: 이 속성을 사용하여 현재 실행 시스템 환경을 판단할 수 있습니다.
console.log(process.platform);
https://nodejs.org/api/process.html#process_process_platform
(2) argv: 사용자가 전달한 매개변수를 파싱할 수 있습니다(첫 번째 매개변수: node.exe, 두 번째 매개변수: 현재 노드에서 실행 중인 파일).
노드 파일 실행node index.js a b c d
webpack --mode --config --port --process
console.log(process.argv);
예:node '28 # commander 的用法.js' --port 3000 --color red --config kaimo
let args = process.argv.slice(2);
let obj = {
};
args.forEach((item, index) => {
if (item.startsWith("--")) {
obj[item.slice(2)] = args[index + 1];
}
});
console.log(obj); // { port: '3000', color: 'red', config: 'kaimo' }
사령관
- (사령관 TJ) https://github.com/tj/commander.js/
- (yargs 웹팩)
종속성을 먼저 설치
npm init -y
npm install commander
npm의 모든 모듈을 먼저 설치하고 사용해야 합니다(모듈은 또한 모듈에서 직접 액세스할 수 있는 여러 속성을 제공합니다. 예를 들어, require는 매개변수와 동일합니다.)
const program = require("commander");
let kaimo = program
.command("create")
.action(() => {
console.log("创建项目");
})
.version("3.1.3")
.name("kaimo")
.usage("怎么使用?")
.option("-p,--port <v>", "设置你的端口")
.option("-c,--color <v>", "设置你的颜色")
.option("-cf,--config <v>", "设置你的配置")
.parse(process.argv);
구현하다:
node '28 # commander 的用法.js' -h
node '28 # commander 的用法.js' -V
node '28 # commander 的用法.js' create xxx