node.js笔记(2)

一、module

①核心模块
②第三方模块
③本地模块

1.核心模块的引入

require("http")

2.第三方模块安装引入

npm install express
require("express")

3.本地模块的创建

//创建一个js文件 module1.js,内容如下:
var name = "dqf";
module.exports.name = name;

//引用
var myModule = require('./module1');
console.log(myModule.name);

//==========其他方式==========================
module.exports.sum = function(a,b){
    return (a+b);
}
var myModule = require('./module1');
console.log(myModule.sum(3,4));
//=======================================
module.exports = function(a,b){
    return a+b;
}
var myModule = require('./module1');
console.log(myModule(3,4));
//=====================================
exports.sum = function(a,b){
    return a+b;
}
var myModule = require('./module1.js');
console.log(myModule.sum(3+4));
//============错误方式==============================
exports =  function(a,b){ return a+b; }

二、module.exports 和 exports

这里简单的介绍一下两者之间的关系
在控制台打印下:

console.log(exports);
console.log(module);
{}

Module {
  id: '.',
  exports: {},
  parent: null,
  filename: '/Users/qifuguang/nodejs/learnModule/test.js',
  loaded: false,
  children: [],
  paths:
   [ '/Users/qifuguang/nodejs/learnModule/node_modules',
     '/Users/qifuguang/nodejs/node_modules',
     '/Users/qifuguang/node_modules',
     '/Users/node_modules',
     '/node_modules' ] }

可以看到,exports={},module.exports={}。module 、exports、module.exports三者之间的关系
module 中的 exports 指向 exports,注意是指向,不是等于。
所以:

exports.sum = function(a,b){
    return a+b;
}

关系图是这样的:
node.js笔记(2)_第1张图片

错误的方式

//自己的模块
exports = {
    sayHello: function() {console.log('Hello world!');}
}
//引用
myModule = require('./my_module');
myModule.sayHello()

这样之后变成了这样:
node.js笔记(2)_第2张图片

这种方式,无疑也是不对的。

module.exports = 'ROCK IT!';
exports.name = function() {
    console.log('My name is Lemmy Kilmister');
};

三、模块共享

在你引用模块后,这个模块就会创建一个实例,不管你引用多少次这个模块,都是用的一个实例。
例如:

var i = 1;
module.exports.log = function(){
    console.log(i);
    i++
}

var log1 = require('./module1.js');
log1.log(); //1
var log2 = require('./module1.js');
log2.log();//2

//console.log(log1===log2),发现是true
//说明log1和log2是同一个对象。

你可能感兴趣的:(node.js)