博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模块和包
阅读量:7067 次
发布时间:2019-06-28

本文共 1462 字,大约阅读时间需要 4 分钟。

问题:

1、什么是模块
2、如何创建并加载模块
3、如何创建一个包
4、如何使用包管理器

什么是模块

模块是Node.js应用程序的基本组成部分,文件和模块式一一对应的。换言之,一个Node.js文件就是一个模块,这个文件可能是Javascript代码,JSON或者编译过的C/C++扩展。 例如: var http=require('http'),其中http是Node.js的一个核心模块,其内部实现是用C++实现的,外部用Javascript封装。我们通过require

函数获取了这个模块,然后才能使用其中的对象。

创建及加载模块

1>创建模块

   在Node.js中,创建一个模块非常简单,因为一个文件就是一个模块,我们要关注的问题仅仅在于如何在其他文件中获取这个模块。Node.js提供了exports和require两个对象,其中exports是模块公开的接口,require用于从外部获取一个模块的接口,即所获取模块的expors对象下面来举个例子:

创建一个模块 Module.js

var name;
exports.setName=function (thyName)
{
name=thyName;
}

exports.sayHello=function(){

console.log('Hello'+name +'你已经学会创建Node.js包咯哦,太聪明~\(≧▽≦)/~啦啦啦');
}

获取模块 GetModule.js

var myModule=require('./Module');
myModule.setName('Darren');
myModule.sayHello();

运行GetModule.js 即可得到如下内容

HelloDarren你已经学会创建Node.js包咯哦,太聪明~(≧▽≦)/~啦啦啦

以上示例中,module.js通过exports对象吧setName和sayHello作为模块的访问接口,在getmodule.js中通过require('./module')加载这个模块,

然后就可以直接访问module.js中exports对象的成员函数啦
这种接口封装方式比许多语言要简洁的多,同时也不失优雅,未引入违反语义的特性,符合传统的编程逻辑。在这基础上,我们可以构建大型的应用
程序,npm提供的上万个模块都是通过这种简单的方式搭建起来的。

2>单次加载

上面的例子有点类似于创建一个对象,但实际上和对象又有本质的区别,因为require不会重复加载模块,也就是说无论调用多少次require,获得 的模块都是同一个,我们在getmodule.js的基础之上稍作修改:

var myModule=require('./Module');
myModule.setName('Darren');
myModule.sayHello();

var myModule2=require('./Module');

myModule2.setName('jesn');
myModule2.sayHello();

运行后,发现结果是 “Hellojesn你已经学会创建Node.js包咯哦,太聪明~(≧▽≦)/~啦啦啦”

这是因为变量myModule1和myModule2都是指向同一个实例,因为myModule2的结果会覆盖myModule1的结果

转载于:https://www.cnblogs.com/jesn/articles/3728835.html

你可能感兴趣的文章
树的遍历
查看>>
11.24 静态元素过期时间
查看>>
20.34 批量远程执行命令
查看>>
mongodb嵌套文档结构设计
查看>>
导入项目后遇到页面报错如何解决
查看>>
有哪些新手程序员不知道的小技巧?
查看>>
SSM框架
查看>>
10.1 使用w查看系统负载 10.2 vmstat命令 10.3 top命令 10.4 sar命令 10.5 nload命令
查看>>
vue 之 .sync 修饰符
查看>>
SpringBoot就是这么简单
查看>>
Android环境下hanlp汉字转拼音功能的使用介绍
查看>>
Slack将新增更多功能免写程序就能自动排工作流程
查看>>
(四)鸿鹄云架构一服务注册中心
查看>>
CentOS程序包管理、下
查看>>
Linux(Ubuntu)解决乱码问题
查看>>
Spring Security 基于表达式的权限控制
查看>>
mysql高可用方案之主从架构(master-slave)
查看>>
单例模式的N种写法(Java版)
查看>>
Dynamic Properties in PHP and StdClass
查看>>
ARM9 S3C2440 定时器中断
查看>>