NodeJs学习—模块

NodeJs学习—模块

最近在学习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

185200_Afhh_1019341.jpg

结果显示调用输出了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); //增加一行输出

结果:

185813_Z1qk_1019341.jpg

看最后一行,输出的变量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();

直接运行看结果:

193915_jLPR_1019341.jpg

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

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

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

console.log(example);

结果:

194245_3uF0_1019341.jpg

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

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

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

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

结果:

185200_Afhh_1019341.jpg

Bingo!

总结一下:

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

                   使用— var xxx = require(‘yyy’);

                               xxx.zzz();

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

                使用 — var xxx = require(‘路径’);

                             var yyy = new xxx();


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

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

转载于:https://my.oschina.net/u/1019341/blog/495257

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109366.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月8日 下午1:00
下一篇 2021年9月8日 下午2:00


相关推荐

  • 全网最简洁Archlinux 安装教程

    全网最简洁Archlinux 安装教程Archlinux 安装教程先从 mirrors ustc edu cn 下载 archlinux 安装镜像然后下载刻录工具 etcherWindow 版 Windows 版 Linux 版 Linux 版 Mac 版 Mac 版然后使用 etcher 把镜像刻录到 u 盘里然后重启 使用 u 盘启动启动完之后执行 ls sys firmware efi efivars 如果提示目录不存在 就是 bios 否则是 uefiUEFI 版安装 1 先联网 如果你用的是有线网 可以跳过 iwctldevicel 以

    2026年3月18日
    2
  • C++ 数字与字符串之间相互转换(多种方法)

    C++ 数字与字符串之间相互转换(多种方法)使用系统提供的库函数 1 字符串传数字 1 使用 atoi charstr3 10 数字简单 所以转数字一个参数 longlonga atoi str3 cout lt

    2026年3月19日
    2
  • 淡蓝风格的手机登录HTML模板

    查看效果:http://hovertree.com/texiao/mobile/10/或者手机扫描二维码查看效果:效果图:代码如下:转自:http://hovertree.com/h/bjaf/l

    2021年12月22日
    41
  • 响应式布局的实现方法

    响应式布局的实现方法响应式布局可以让网站同时适配不同分辨率和不同的手机端 让客户有更好的体验 一共有以下五种方法实现响应式布局 百分比布局 2 媒体查询布局 3 rem 响应式布局 4 vw 响应式布局 5 flex 弹性布局 1 百分比布局 百分比布局很简单 就是对盒子的属性设置百分比来适配不同的屏幕 媒体查询布局 媒体查询就是对不同分辨率的屏幕编写不同的 css 样式

    2026年3月17日
    2
  • [DSP] Butterworth (巴特沃斯)数字滤波器设计参考

    [DSP] Butterworth (巴特沃斯)数字滤波器设计参考Butterworth nbsp 巴特沃斯 滤波器设计参考在嵌入式音频产品开发过程中经常会到 LPF LowPassFilte 低通滤波器 和 HPF HighPassFilt 高通滤波器 一般情况下都是离线用工具 如 Matlab 设计好滤波器的参数 FilterCoeffi 再应用到产品中去 但有些状况下需要用户自己根据需求来实时 Real time 调整 FilterFreque 滤波器频率响应 这种情形下就需要在嵌入式系统中实时根据客户的设定需求来产

    2026年3月17日
    1
  • 连接本地数据库和远程连接他人数据库?

    连接本地数据库和远程连接他人数据库?新装navicat如何连接本地数据库?1是localhost,2是127.0.0.1言简意赅:本地数据库IP一般是127.0.0.12.连接之后3.,来验证一下是不是你的数据库。4.输入密码后回车,进入5.showdatabases;回车经验证,无误。———————————————–…

    2022年5月31日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号