文档章节

NodeJs学习---模块

hosealee
 hosealee
发布于 2015/08/20 20:11
字数 703
阅读 131
收藏 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
粉丝 15
博文 13
码字总数 9552
作品 0
海淀
程序员
私信 提问
加载中
请先登录后再评论。
Node.js 入门到干活,10 个优质项目就够了!

Node.js 在很多大公司都有不错的实践,比如:淘宝、天猫 Web 版,很多页面都是在 Node 服务器上渲染的。还有各种脚手架、前端打包发布工具、构建生态的小工具,也基本都是 Node.js 编写的。 ...

osc_j89isia8
2019/10/25
17
0
Node.js学习笔记一

一、Node.js是什么? "Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用 V8 引擎,同样,Node.js 实现了类似 Apache...

苦咖啡21
2013/07/28
207
0
学习 Node.js 笔记(一)

学习一种语言并不难, 学习这种语言背后的生态环境可就不那么容易了. 虽然我用 javascript 也不少时间了, 但实际关注的大多是(数学)算法, 较少关注 js 的其它部分, 而现在为了学习别的开源软件...

刘军兴
2015/11/26
117
0
【学习笔记】node.js重构路由功能

摘要:利用node.js模块化实现路由功能,将请求路径作为参数传递给一个route函数,这个函数会根据参数调用一个方法,最后输出浏览器响应内容 1.介绍 node.js是一个基于Chrome V8引擎的JaveScr...

osc_cenl5m72
2019/02/25
2
0
Xufun’s Node.js Primer

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

蓄丰
2012/09/25
119
0

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序|navigator组件-实现页面跳转

欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。 问题描述 现在大家所用的各种微信小程序都是看似结构简单、内容精炼...

算法与编程之美
03/31
6
0
【leetcode刷题】20T26-最后一个单词的长度

木又同学2020年第26篇解题报告 leetcode第58题:最后一个单词的长度 https://leetcode-cn.com/problems/length-of-last-word/ 【题目】 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回...

唐建权
03/01
8
0
我的电脑不联网,很安全。黑客:你还有风扇呢!

点击蓝色“ Python空间 ”关注我丫 加个“星标”,每天一起快乐的学习 转自机器之心 从 1988 年第一个网络蠕虫病毒诞生以来,「互联网危机四伏」的观念就已经深入人心。如果只是这样,不给电...

Rocky0429
05/10
11
0
[codeforces 1372D] Omkar and Circle 圆上区间动归

Codeforces Round #655 (Div. 2) 参与排名人数15842 天天熬夜打比赛,身体吃不消,作了一个充满幸福感的决定,赛后第二天再刷 [codeforces 1372D] Omkar and Circle 圆上区间动归 总目录详见htt...

osc_9mt0ncuk
26分钟前
10
0
不断进化的分支和需求管理

昨天有朋友在公众号私信问我几个关于代码分支管理的问题,这几个问题是我去年写的《在团队中使用GitLab中的Merge Request工作模式》一文结尾时抛出的几个问题: 如果系统上线后有紧急Bug需要...

冯威
2019/06/07
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部