文档章节

NodeJs学习---模块

hosealee
 hosealee
发布于 2015/08/20 20:11
字数 703
阅读 113
收藏 5

最近在学习NodeJs,基础知识看了看,然后就跑去看Express了,但是真正动手写代码的时候下手还是不够稳准狠。这说明基础知识是不行嘀,所以再返回来重新学习。

NodeJs的项目中,最常使用的就是模块,模块的声明、模块的调用。但是模块到底是个啥?声明都有哪些方式,调用都有哪些方式呢?直入正题,且看下文

先来个最简单的:

//main.js

 //main.js
 var example = require('./example');
 example.show();

//example.js

//example.js
function show(){
    console.log("Hi,I'm example");
}
exports.show = show;

ok,很简单吧,运行:node main.js

结果显示调用输出了example.js中的show()方法。

仔细看代码,你会发现,main.js中首先引入了example.js这个模块,然后赋值给example这个变量,调用的时候是example.show(),也就是说example的属性中有show()这个方法。事实上是这样吗,我们测试一下,改写代码

main.js

//main.js
var example = require('./example');
example.show(); 
console.log(example); //增加一行输出

结果:

看最后一行,输出的变量example是个{key:value }这样子的家伙,这是什么?是个Object呗!

整理一下

声明:exports       栗子:exports.xxx = yyy;   

调用:require       栗子:var xxx = require('yyy'); //获得的是一个{....}这样子的Object


ok,大家看完上面应该会基本的使用方法了。

那我们在example.js中可以再写几个function,然后exports.xxx = 那个function,main.js中调用。虽然这么写没什么问题,但是这里还是建议一个js文件只做一个模块使用,清晰明了一看项目结构就知道功能,这样不是更好么。


继续,现在换一种写法

//example.js

//example.js
module.exports = function(){
    console.log("Hi,I'm example");
}

//main.js

//main.js
var example = require('./example');
example.show();

直接运行看结果:

报错了吧!show()是个undefined,说明咱们调用的example模块没有show()这个属性。

输出看看example变量是个啥东东

main.js中增加入直接输出example的代码:

console.log(example);

结果:


example变成了Function对象,通过typeof也可以看到是个function

这说明,我们通过module.exports = function(){...} 是直接把一个对象封装成了模块,那么通过require获取这个模块的时候也是直接得到一个对象。

那么,怎么用这个模块呢?看代码:

//main.js
var example = require('./example');
var _example = new example();

结果:

Bingo!

总结一下:

    方式1 : 创建--- exports.xxx = function(){......}

                   使用--- var xxx = require('yyy');

                               xxx.zzz();

    方式2:创建 --- module.exports = function(){......}

                使用 --- var xxx = require('路径');

                             var yyy = new xxx();


目前能想到的就这么多,主要的点是:一个是定义在exports对象上的方法,另一个是接口对象就是要输出的对象本身。

后续的内容慢慢添加吧,先记录下来,方便以后复习。

© 著作权归作者所有

共有 人打赏支持
hosealee
粉丝 16
博文 13
码字总数 9552
作品 0
海淀
程序员
私信 提问
Node.js进阶教程第一步(基础篇)-何韬-专题视频课程

Node.js进阶教程第一步(基础篇)—18659人已学习 课程介绍 本课程从Node.js的安装配置开始,包括函数调用,模块调用,路由,文件操作,异常处理,参数接收,正则表达式,连接数据库,事件等内...

pkutao
2016/09/06
0
0
一点感悟:《Node.js学习笔记》star数突破1000+

写作背景 笔者前年开始撰写的《Node.js学习笔记》 github star 数突破了1000,算是个里程碑吧。 从第一次提交(2016.11.03)到现在,1年半过去了。突然有些感慨,想要写点东西,谈谈这期间的...

程序猿小卡_casper
2018/06/06
0
0
Xufun’s Node.js Primer

看了我的前研日志,从2012年04月开始接触Node.js,半年快过去了,今天总结一下,把自己的经历汇总,给需要学习的人提供一点参考。 Node.js是什么?不是Web服务之类,是叫“平台”,官网说明:...

蓄丰
2012/09/25
0
0
10+ 最佳的 Node.js 教程结合实例

如果你正在找Node.js的学习资料及指南,那么请继续(阅读),我们的教程将会覆盖即时聊天应用、API服务编写、投票问卷应用、人物投票APP、社交授权、 Node.js on Raspberry Pi等等。 以下是N...

noeticforce
2016/06/21
6.6K
10
效率至上的nodejs 手动实现服务器

这是一个连续的node学习笔记, 本文是第一章, 会持续更新, 持续完善 python好用,用久了就会把人的脾气养起来, nodejs不好用, 但效率很好, 也能彻底治好你的坏脾气 nodejs的回调是我用过的最蛋...

木子昭
2018/08/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL学习笔记之二

数据库的操作总结就是:增删改查(CURD),今天记录一下基础的检索查询工作。 检索MySQL 1.查询表中所有的记录 mysql> select * from apps;+----+------------+-----------------------+------...

凌宇之蓝
26分钟前
0
0
PaddlePaddle-GitHub的正确打开姿势

GitHub是一个面向开源及私有软件项目的托管平台、也是项目版本管理工具,会使用它是程序员入门的必备技能。PaddlePaddle也不例外,所有的源码及项目进展都在GitHub上开源公布。但对于刚入门写...

深度学习之路
26分钟前
1
0
最强NLP模型BERT可视化学习

摘要: 最强NLP模型谷歌BERT狂破11项纪录,全面超越人类,本文通过可视化带你直观了解它。 2018年是自然语言处理(Natural Language Processing, NLP)领域的转折点,一系列深度学习模型在智...

阿里云官方博客
33分钟前
1
0
导出功能

public void downloadD(HttpServletRequest request, HttpServletResponse res,String contractName, String contractPath) throws IOException {// FileAttach fileAttach = fileA......

卖星星的小矮人
37分钟前
1
0
gradle 打包可执行jar包

group 'android.com'version '1.0-SNAPSHOT'apply plugin: 'java'sourceCompatibility = 1.8repositories { mavenCentral()}jar { manifest { attributes ('Main-......

zdglf
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部