node.js - 开始

本系列作为在重新学习node.js的一个记录,可能会不断修改。

node.js的介绍

  随便google或者百度一下都可以找到,可以帮助我们对node有一个整体的印象

模块化

  node.js中将js代码合理得拆分成多个js文件,每个文件就是一个模块,文件路径就是模块名

  编写每个模块时都有这几个预定义好的变量可供使用 require、exports、module

  • require

  导入模块

var a = require('./foo.js');

  导入json数据

var data = require('./data.json');

 

  • exports

  代表当前模块的导出对象

// foo.js
var a = {a: 'aa'};

exports.hello = a;

// main.js
var income = require('./foo.js');
console.log(income); // {hello: {a: 'aa'}}
  • module

  包含当前模块的必要信息,形如:

{
  id: 'D:\\test\\nodejs\\1.js',
  exports: {},
  parent:
   Module {
     id: '.',
     exports: {},
     parent: null,
     filename: 'D:\\test\\nodejs\\main.js',
     loaded: false,
     children: [ [Circular] ],
     paths:
      [ 'D:\\test\\nodejs\\node_modules',
        'D:\\test\\node_modules',
        'D:\\node_modules' ]
     },
  filename: 'D:\\test\\nodejs\\1.js',
  loaded: false,
  children: [],
  paths:
   [ 'D:\\test\\nodejs\\node_modules',
     'D:\\test\\node_modules',
     'D:\\node_modules' ]
}

  最常用的用法是替换导出对象

var a = {a: 'aa'};

module.exports = a;

模块初始化

  一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。

// 1.js
let i = 0;

module.exports = function() {
  return ++i;
};

// main.js
const counter1 = require('./1');
const counter2 = require('./1');

console.log(counter1()); 
console.log(counter1());
console.log(counter2());

// 运行结果是打印1、2、3可以看出1.js中的代码并没有在require2次重新初始化

小结

  • NodeJS是一个JS脚本解析器,任何操作系统下安装NodeJS本质上做的事情都是把NodeJS执行程序复制到一个目录,然后保证这个目录在系统PATH环境变量下,以便终端下可以使用node命令。

  • 终端下直接输入node命令可进入命令交互模式,很适合用来测试一些JS代码片段,比如正则表达式。

  • NodeJS使用CMD模块系统,主模块作为程序入口点,所有模块在执行过程中只初始化一次。

 

posted on 2019-04-08 12:13  iNNoceNcee  阅读(121)  评论(0)    收藏  举报