模块的引用是后端语言非常重要的一部分,那么在nodejs中,如何做到这一点呢。

在引用其他模块时,常用的就是两种方法:exports,module.exports。

接下来,我们写一个demo来分辨其中的区别

testModule.js:

function User(name,title,post){
this.name=name;
this.title=title;
this.post=post;
}
User.prototype.sayhello = function() {
console.log("hello"+this.name);
};
module.exports=User;

testExports.js:

exports.sayhello=function(name){
console.log('hello,'+name);
}

test.js:

var testmodule=require('./testmodule');
console.log(typeof(testmodule));
var newtestobj=new testmodule('mike','zhejiang','311301');
console.log(typeof(newtestobj));
var testexports=require('./testexports');
console.log(testexports);

运行test.js,依次输出:

function
object
{ sayhello: [Function] }

显而易见的是,module.exports返回的其实是一个构造函数,而exports只返回一个对象。

nodejs模块引用的更多相关文章

  1. nodejs模块中exports和module.exports的区别

    通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ ,这些核心模块被编译成二进制文件,可以require('模块名')去获取:核心 ...

  2. NodeJS模块、包、NPM

    1.NodeJS模块        每一个Nodejs都是一个NodeJS模块,包括JS文件,JSON文本文件,二进制模块文件. a.模块的应用               新建一个文件mytest. ...

  3. nodeJS学习(9)--- nodeJS模块:exports vs module.exports

    模块简介: 通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ 这些核心模块被编译成二进制文件,可以 require('模块名') ...

  4. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

  5. NodeJS 模块开发及发布详解

    NodeJS 是一门年轻的语言,扩展模块并不太全,经常我们想用某个模块但是却找不到合适的.比如前两天我需要使用hmac和sha1来做签名,就没有找到一个比较好用的模块,这时候就需要我们自己来实现相应的 ...

  6. # nodejs模块学习: express 解析

    # nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...

  7. nodejs模块xml2js解析xml的坑

    在一个项目中,用到nodejs模块xml2js解析xml,xml的数据如下: <xml> <MsgId>6197906553041859764</MsgId> &l ...

  8. react native原生模块引用本地jar包

    比如module目录结构是这样的: 然后libs中的目录是这样的: 只要在build.gradle中加入这段代码就行了 sourceSets { main { manifest.srcFile 'An ...

  9. NodeJS 模块&函数

    NodeJS 模块&函数 nodejs的多文件操作通过模块系统实现,模块和文件一一对应.文件本身可以是javascript代码.JSON或编译过的C/C++扩展 基本用法 nodeJS通过ex ...

随机推荐

  1. Android权限管理知识学习记录

    一.Android权限背景知识 在Android 6.0之前,所申请的权限只需要在AndroidManifest.xml列举就可以了,从而容易导致一些安全隐患,因此,在Android 6.0时,Goo ...

  2. IdentityServer Topics(5)- 使用第三方登录

    ASP.NET Core有一个灵活的方式来处理外部认证. 这包括几个步骤. 如果您使用的是ASP.NET Identity,则许多底层技术细节对您而言都是隐藏的. 建议您还阅读Microsoft文档并 ...

  3. Python3基础1

    Python介绍及特点 发展史 Python 2 or 3? 安装Python3 Hello World程序 变量 用户输入 模块初识 .pyc是个什么? 数据类型初识 数据运算 表达式if ...e ...

  4. JavaScript判断对象类型及节点类型、节点名称和节点值

    一.JavaScript判断对象类型 1.可以使用typeof函数判断对象类型 function checkObject1(){ var str="str"; console.lo ...

  5. bzoj:1692 [Usaco2007 Dec]队列变换&&1640 [Usaco2007 Nov]Best Cow Line 队列变换

    Description FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛”.在这场比赛中,每个参赛者都必须让他的奶牛排成一列,然后领她们从裁判席 ...

  6. C++STL中set的使用策略(详解)

    set的英文意思是“集合”, 集合都不陌生吧,集合的特点有唯一性,即:每一个元素只有一个,所以set可以用来“去重”操作,set还有默认的排序. 1.头文件——<set> 2.定义——se ...

  7. HDU 5752 Sqrt Bo【枚举,大水题】

    Sqrt Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total S ...

  8. BZOJ1304: [CQOI2009]叶子的染色

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1304 树形dp. 可以发现其实根选在哪里都是没有问题的. f[u][0],f[u][1],f[ ...

  9. c#简单操作MongoDB_2.4

    一.MongoDB的安装 MongoDb在windows下的安装与以auth方式启用服务 二.下载驱动 使用nuget搜索“mongodb”,下载“MongoDB.Driver”(这是官方推荐的一个驱 ...

  10. ThinkPHP基础知识

    1.入口文件中定义的内容 // 检测PHP环境if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 ! ...