nodejs随笔(一)

what is node js ?

nodejs是构建在chrome v8引擎上的javascript runtime。

特点:

  • 事件驱动
  • 非阻塞I/O
  • 适合处理web端的高并发(只针对i/o密集比较合适,对于CPU密集并不实用)

规范commonjs

require

  1. require(支持js,json,node,不写名字依次查找);
  2. require后会先找默认模块,找不到再去找第三方模块;
  3. module被加载的时候执行,加载后缓存;
//test01模块只会被执行一次,然后放入缓存。
const mod = require('./test01');
const test = require('./test01');

console.log(mod.testVar);

mod.testFn();
复制代码
  1. 一旦出现某个模块被循环加载,只会输出已执行的部分,未执行的部分不会输出。

系统内置模块 & 第三方引用模块

  1. 引用内置模块fs
const fs = require('fs');

const result = fs.readFile('./test.txt',(err, data) => {
    if(err){
        console.log('err:', err);
    }else{
        //readFile读出的是buffer,toString直接转成字符串
        console.log(data.toString());
    }
});

console.log('result:', result);
复制代码
  1. 引用第三方模块

新的node.modules依赖全部磨平,都在一层

  1. exports 和 module.exports 的区别

源码中定义: const exports = module.exports;

exports为module.exports的一个引用,如果给exports赋值一个对象,指向会发生变化。

  1. process

argv, argv0, execArgv, execPath

const {argv, argv0, execArgv, execPath} = process;

argv.forEach(item => {
    console.log(item)
});

console.log('argv0:', argv0);
console.log('execArgv:', execArgv);
console.log('execPath:', execPath);
复制代码

process.nextTick, setTimeout, setImmediate执行顺序:

  1. process.nextTick(出现循环调用,后面根本没有机会执行)
  2. setTimeout
  3. setImmediate

path

  1. normalize
const {normalize} = require('path');

console.log(normalize('user/bin//test'));
console.log(normalize('user/bin/../test'));
复制代码

  1. join:
const {join} = require('path');
join('/user','test','////test');
复制代码
  1. resolve(相对路径转换成绝对路径)

4.{basename, dirname, extname}

/user/bin/test/no.txt

basename: no.txt
dirname: /user/bin/test
extname: .txt

  1. parse,format

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值