简单的Nodejs模块
说千遍,道万遍,不如动手做一遍,我们实现一个node所谓的模块

看下上面的图,了解一下模块自始至终的一个流程,首先是创建模块,也就是一个入口的js文件,里面加了一些特定的功能,然后导出这个模块,
export.add = funciton(){}
把这个功能和这个文件,也就是这个模块名建立关系,紧接着就是加载模块,在其他文件里面引入并加载这个模块
var teacher = require('./teacher.js)
在nodejs里面用require函数来完成这个工作,最后就是使用模块
teacher.add('Sunny')
直接调用模块中命名好的方法,来做一些特定的逻辑处理,完成某种功能
下面创建一个简单的node模块,有一个学校,学校里面有老师,学生和班级,用node启动,为学校班级添加老师和学生

teacher.js
function addTeacher(teacher){
console.log('add teacher: ' + teacher);
}
exports.addTeacher = addTeacher;
student.js
function addStudent(student){
console.log('add student: ' + student);
}
exports.addStudent = addStudent;
classGrade.js
var student = require('./student');
var teacher = require('./teacher');
function add(teacherName, students){
teacher.addTeacher(teacherName);
students.forEach((item, index) => {
student.addStudent(item);
});
}
exports.add = add;
// 或者
// module.exports = add
index.js
var classGrade = require('./classGrade');
classGrade.add('Sunny', ['白', '富', '美', '高', '帅']);
最后用node启动这个模块

exports 和 module.exports 的区别
用exports和module.exports调用的时候稍微有点区别,但是他们实现的功能是一样的
如果你想你的模块成为特别的对象类型,使用module.exports。如果你希望你的模块成为一个传统的模块实例,那就使用exports
那么module.exports 和 exports 到底是怎么一回事呢
module.exports是真实存在的东西。exports是module.exports的一个辅助方法,这个模块最终返回的module.exports给调用者。
exports挂载属性和方法,然后再把属性再赋值给module.exports,那如果说module.exports已经有了属性,那exports上面的这个属性
就会被忽略,当然我们推荐用exports这种方式,除非你想把你的模块从传统的模块实例修改为其他的
require 引用模块后,返回的是 module.exports 而不是 exports!!!!!
简单的Nodejs模块的更多相关文章
- node.js基础 1之简单的nodejs模块
模块流程: 创建模块->导出模块->加载模块->使用模块 ndoejs主要就是把项目变成模块化在管理 实现一个模块的调用,编写student.js.teacher.js.klass. ...
- nodejs nodejs模块使用及简单的示例
nodejs模块使用及简单的示例 参考菜鸟教程网:http://www.runoob.com/ 一.fs模块的使用: 1.文件操作: 读文件: //读文件 var fs=require('fs'); ...
- nodejs模块发布及命令行程序开发
前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...
- NodeJS 模块开发及发布详解
NodeJS 是一门年轻的语言,扩展模块并不太全,经常我们想用某个模块但是却找不到合适的.比如前两天我需要使用hmac和sha1来做签名,就没有找到一个比较好用的模块,这时候就需要我们自己来实现相应的 ...
- # nodejs模块学习: express 解析
# nodejs模块学习: express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子 ...
- nodejs模块xml2js解析xml的坑
在一个项目中,用到nodejs模块xml2js解析xml,xml的数据如下: <xml> <MsgId>6197906553041859764</MsgId> &l ...
- 一个简单的nodejs项目(cat-names)分析
https://github.com/sindresorhus/cat-names 一个非常简单的nodejs项目,用来方便的获取猫猫的名字: 安装: npm install --save cat-n ...
- WebStorm 简单搭建NodeJs服务
开始使用 WebStorm 搭建( WebStorm 请自行安装...... ) 在 项目 根目录 新建个 app.js 开始 编写 app,js // 引入 HTTP 模块 const http = ...
- NodeJS模块、包、NPM
1.NodeJS模块 每一个Nodejs都是一个NodeJS模块,包括JS文件,JSON文本文件,二进制模块文件. a.模块的应用 新建一个文件mytest. ...
随机推荐
- WebApi Helper帮助文档 swagger
http://www.it165.net/pro/html/201602/61437.htmlhttp://www.cnblogs.com/gossip/p/4546630.html ...
- sscanf()分割字符数组
sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源. 头文件: #include<stdio.h> 或者 #include < ...
- c++中 函数的默认参数 学习
默认参数指的是当函数调用中省略了实参时 自动使用一个默认的值. 对于带参数列表的函数,必须从右向左添加默认值 (就是说她的右边肯定是先有默认的值) fun(int ,1,2,3) 不能 fu ...
- html-3
<hr> 下划线实体:想在页面显示被浏览器解析的内容为表格添加标题<caption>跟tr同级,只在<table>下 <link> 为页面加小图标 在& ...
- 在windows上安装common lisp开发环境
(2014.1写于CSDN的文章) 最近对lisp非常感兴趣,因此在google中搜索了“common lisp install windows”, 想装一个开发环境玩玩. 第一条结果就是 “Gett ...
- 性能测试工具Jmeter04-脚本录制
Jmeter脚本录制:不推荐使用,这里就不介绍了 Badboy脚本录制 下载地址:http://www.badboy.com.au Badboy是一个强大的工具,旨在帮助测试和开发复杂的动态应用.Ba ...
- (转)Linux系统排查4——网络篇
原文:http://www.cnblogs.com/Security-Darren/p/4700387.html 用于排查Linux系统的网络故障. 网络排查一般是有一定的思路和顺序的,其实排查的思路 ...
- Kudu-Impala集成特性
不多说,直接上干货! Kudu-Impala 集成特性 CREATE / ALTER / DROP TABLE Impala 支持使用 Kudu 作为持久层来 creating(创建),alterin ...
- @enable跟@import注解
参考文章: 讲@import的相关内容:https://blog.csdn.net/u012437781/article/details/78626134 讲为什么registrar没有注入:http ...
- 揭秘企业级web负载均衡完美架构
相信很多朋友对企业级的负载均衡高可用实例非常感兴趣,此篇文章根据成熟的线上环境而写,旨在帮助大家迅速架构一个企业级的负载均衡高可用的web环境. 此系统架构仅映射内网VIP的80及443端口于外网的J ...