Node.js学习笔记(一)module.exports与exports

在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块。如将函数作为模块的方法导出:

var printName=function(name){
        console.log(name);
};
exports.printName=printName;

然后在index.js文件中请求这个模块,使用该模块的方法:

var name=require(‘./name‘);

name.printName(xiaomu);     //xiaomu

其实module.exports才是模块公开的接口,每个模块都会自动创建一个module对象,对象有一个exports的属性,初始值是个空对象{}。而exports只不过是module.exports的一个辅助工具。请求加载模块时最终返回给调用的是moudle.exports而不是exports。关系:

exports = module.exports = {};

所以exports 和 module.exports 的区别:

1. exports 是指向的 module.exports 的引用;

2.module.exports 初始值为一个空对象 {},所以 exports 初始值也是 {};

3.require() 返回的是 module.exports 而不是 exports;

4.是Module.exports本身不具备任何属性和方法,如果,Module.exports已经具备一些属性和方法,那么exports对象收集来的信息将被忽略。因为Module.exports通过赋值的 方式已经和exports指向的内存不同了。

关于使用场合:如果想把模块作为一个特定的类型就用Module.exports。如果你想你的模块是一个典型的“实例化对象”就用exports。

时间: 2024-10-17 14:31:40

Node.js学习笔记(一)module.exports与exports的相关文章

Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)

笔记来自<Node入门>@2011 Manuel Kiessling JavaScript与Node.js Node.js事实上既是一个运行时环境,同时又是一个库. 使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器. 一个基础的HTTP服务器 server.js:一个可以工作的HTTP服务器 var http = require("http"); http.createServer(function(request, response) { r

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e

系列文章--Node.js学习笔记系列

Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql) Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识 Nodejs学习笔记(七)--- Node.js + Exp

Node.js学习笔记【3】NodeJS基础、代码的组织和部署、文件操作、网络操作、进程管理、异步编程

一.表 学生表 CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY  (`stuNum`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 学生分数表 CREATE TABLE `t_stu_score` ( `id` int(11

node.js学习笔记目录

1.node.js学习笔记(1)--Node.js简介及环境安装 2.node.js学习笔记(2)--使用Express快速创建应用 3.node.js学习笔记(3)--Express创建的项目分析 4.node.js学习笔记(4)--使用Express完成简单的登陆 5.node.js学习笔记(5)--MongoDB下载及安装 6.node.js学习笔记(6)--MongoDB简单入门 7.node.js学习笔记(7)--Node.js与MongoDB简单交互 8.node.js学习笔记(8)

Node.Js学习01: Module System 以及一些常用Node Module

Node.Js学习就按照这本书的流程来. 在第7章结束与第10章结束时分别自己出一个小项目练练手.Node.Js的入门学习计划是这样. 目录:, QQ:1045642972 欢迎来索书以及讨论Node.Js. Node.Js Demo Node.Js官网提供了一个最基本的Demo Code: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type':

Node.js学习之(第二章:exports和module.exports)

前言 Node中,每个模块都有一个exports接口对象,我们需要把公共的方法或者字符串挂载在这个接口对象中,其他的模块才可以使用. Node.js中只有模块作用域,默认两个模块之间的变量,方法互不冲突,互不影响,这样就导致一个问题,我们怎样使用加载进来的模块中的方法呢?这就需要在另外一个模块exports接口对象中挂载模块中公共的方法. exports 我们在a.js中有以下代码: let foo = 'hello' function add (x, y) { return x+y } exp

【Node.js学习笔记三】什么是Node封装模块?(Node Packaged Module.module)

Node封装模块是一个打包的库,它可以很容易的在不同的项目中被共享.重用和安装. 有很多可用于多种用途的不同模块. 例如: Mongoose模块为MongoDB提供了一个ODM Express扩展了Node的HTTP功能 Node.js模块由不同的第三方机构创建,提供现有Node.js所缺乏的重要功能. 每个Node封装模块包含一个 package.json文件,该文件包含元素数据信息,如: 名称 版本 作者 贡献者 以及控制元数据,比如依赖和执行诸如安装与发布动作时,Node包管理器将使用的其

node.js 学习笔记1-mocha

1.mocha是什么 mocha是一款流行的额JavaScript测试框架. 2.mocha的基本用法 1.使用npm 安装mocha包,我并没有选择全局安装.只是在mocha的文件夹里的Package.json添加mocha的依赖. 如下图 { "name": "mocha-test", "version": "0.0.1", "dependencies": { "koa": &quo