Node学习2-基础知识/HelloWorld/模块调用/global/process

编辑器使用Visual Studio Code

在编辑器下方就继承了终端,可以直接看输出,非常好用

 

CommondJS规范

就是一个规范而已

模块化,因为不可能把代码都放一块,太多了。只需要实现模块化,需要什么模块的代码直接声明和使用。

Nodejs里面会有很多模块。

 

比如上面这个代码,虽然只有一行,但是Nodejs帮我们加了一些东西

 

 

每个文件是一个模块,有自己的作用域

在模块内部moudle变量代表模块本身

moudle.exports代表模块对外接口

exports就是moudle.exports的快捷方式

 

require 引用其他模块的规则

/ 绝对路径

./相对于当前文件

没有拓展名的话,会依次尝试js/json/node

 

 

模块的例子

02_run.js

console.log('this is a module');

const testVar = 100;

function test(){
    console.log('Hello World');
}

// 定义向外输出的东西
module.exports.testVar = testVar;
module.exports.testFn = test;

 

调用模块

const mod = require('./02_run.js');

//mod.testFn这个是变量名
//mod.testFn()才是函数调用
mod.testFn();
console.log(mod.testVar);

 

 

require特性

1、第一次会加载(执行该模块所有语句),以后会缓存

2、循环加载,ArequireB,BrequireA,在Nodejs里面不会死锁。

它会输出已经执行的部分,没有执行的不会输出(这一步就意味着它不会继续纠结没完成的东西了,所以不会死锁)。

但是最后都会完全加载完毕(执行到最后一句)。

所以写代码不要这样写

 

调用系统内置模块

fs:file system

 

会提醒你,回调函数所需的参数

虽然自己也应该记住

const fs = require('fs');

//读取自己,神奇吧
//文件路径
//回掉函数,也就是读取完之后会处理的操作(事件驱动)
//箭头函数
fs.readFile('./fs_run.js',(err,data)=>{

    if(err){
        console.log(err);
    }else{
        console.log(data);
} }); console.log(
'Hello');

 

可以看见,Hello会先输出。

因为程序根本没有等I待/O,而是直接执行后面的语句。IO完成后再执行回调函数。

//这样就能转换为字符串了
data.toString()

 

调用第三方模块

先安装,例如chalk

 

文件夹下会多出一个文件夹node_moudles(存放该项目的依赖,以及依赖的依赖)

chalk也依赖了别的模块

 

const chalk = require('chalk');

console.log(chalk.red('Hello World'));
console.log(chalk.yellow('Hello World'));
console.log(chalk.green('Hello World'));

 

 

 

 

global全局对象

 

//在一个模块里面给global添加了成员
global.test = 100;

//别的文件引用了这个模块之后
//可以直接
console.log(test)
//不需要exportxxx

 

 

process当前执行的进程

//注意下列的语法
//从对象里面抽取数据
const {argv,argv0,execArgv,execPath} = process;

//遍历,箭头表达式
argv.forEach(element => {
    console.log(element)
});

console.log(execArgv);

console.log(execPath)

 

posted @ 2018-07-09 17:06  朋友圈  阅读(175)  评论(0编辑  收藏  举报