Node JS模块

所谓的Node JS模块其实就是指Node JS package,即nodejs包。

一 什么是NodeJS模块?

  在说这个问题之前,我们有必要提出一个概念,即模块规范。

现阶段JavaScript领域大体有三种比较流行的模块规范,一种是AMD规范,一种是CMD规范,

还有一种就是CommonJS规范。前两种专注于客户端,后者是服务端的规范。

  CommonJS规范说,一个单独的文件其实就是一个模块。在NodeJS红,一个模块可以是一个

单独的文件,也可以是一个包含多个文件(子模块)的目录。。CommonJS规范还要求模块都采用

统一的格式  exports或者module.exports导出模块接口。

二、如何导出NodeJS模块?

      首先,我们来回顾一下基础。

  在Node中,require一个文件实际上是在require这个文件定义的模块。所有的模块都拥有一个

  对隐式module对象的引用,当你调用require时实际上返回的是没module.exports属性。对于

  module.exports的引用同样也能写成exports。

  在每一个模块的第一行都隐式的包含了一行下面的代码:

注意:如果你想要导出一个函数,你需要将这个函数赋值给module.exports。将一个函数赋值给exports将会为

exports引用重新赋值,但是module.exports依然会指向原始的空对象。

因此我们可以像这样来定义一个function.js模块来导出一个对象:

然而在另一个文件中require这个模块:

require的一个重要行为就是它缓存了module.exports的值并且在未来再次调用require时返回同样的值。

以上就是全部内容了!!!

Node Js模块讲解的更多相关文章

  1. 如何发布一个自定义Node.js模块到NPM(详细步骤)

    咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...

  2. 如何发布一个自定义Node.js模块到NPM(详细步骤,附Git使用方法)

    咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...

  3. npm学习(六)之如何创建 Node.js 模块

    如何创建 Node.js 模块 Node.js 模块是一种可以发布到 npm 的包.当你创建一个新模块时,创建 package.json 文件是第一步. 你可以使用 npm init 命令创建 pac ...

  4. Node.js模块

    每一个Node.js都是一个Node.js模块,包括JavaScript文件(.js).JSON文本文件(.json)和二进制模块文件(.node). mymodul.js function Hell ...

  5. 编写原生Node.js模块

    导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...

  6. 编写原生的Node.js模块

    导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...

  7. Node.js模块封装及使用

    Node.js中也有一些功能的封装,类似C#的类库,封装成模块这样方便使用,安装之后用require()就能引入调用. 一.Node.js模块封装 1.创建一个名为censorify的文件夹 2.在c ...

  8. 10、Node.js模块系统

    ##################################################################################介绍Node.js模块系统为了让No ...

  9. node.js 模块和其下载资源的镜像设置

    以前安装 electron 时总是失败,然后就在淘宝镜像上下载好相应版本的文件放到用户目录来解决问题. 后来研究发现 npm 不仅可以设置 node.js 模块仓库的代理, 同样可以设置像 elect ...

随机推荐

  1. beego框架学习--beego orm映射

    什么是ORM 即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作 ...

  2. 添加ssh服务构建新镜像-docker commit 方式01

    添加ssh服务构建新镜像-docker commit 方式 1:docker commit构建自定义镜像---一般不推荐使用这种方式构建新镜像 1:ubuntu基础镜像下载 ubuntu@ubuntu ...

  3. 2019-11-20:xss学习笔记

    xxe漏洞防御使用开发语言提供的禁用外部实体的方法phplibxml_disable_entity_loader(true); 卢兰奇对象模型,bom由于现代浏览器实现了js交互性方面的相同方法和属性 ...

  4. Linux常见的Shell命令

    1.具体的shell命令用法可以通过help或man命令进入手册来查询其具体的用法.2.终端本质上对应着linux上的/dev/tty设备,linux的多用户登录就是通过不同的/dev/tty设备完成 ...

  5. Linux查看系统基本信息、版本信息等

    Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号 1.uname -a   (Linux查看版本当前操作系统内核信息) 2.cat /proc/version (L ...

  6. CCNA 之 十 ACL 访问控制列表

    ACL 访问控制列表 ACL(Access Control List) 接入控制列表 ACL 的量大主要功能: 流量控制 匹配感兴趣流量 标准访问控制列表 只能根据源地址做过滤 针对曾哥协议采取相关动 ...

  7. vsftpd架设(配置pam模块)

    Vsftpd 是很安全的ftp软件 VSFTPD的目录结构 /usr/sbin/vsftpd: VSFTPD的可执行文件 /etc/rc.d/init.d/vsftpd:启动脚本 /etc/vsftp ...

  8. R 语言学习笔记(3)—— 基础绘图

    R 中图形的概念 在 R 中图,就像 photoshop 中的图层一样,每一个元素都是层层向上延展构建的,最终形成了我们视觉上所形成的平面图形.这些元素包含了常见的图形的标题(title).坐标轴(a ...

  9. ViewGroup dispatchTouchEvent方法中 mFirstTouchTarget标志是否为空的含义

    在ViewGroup dispatchTouchEvent方法中首次出现mFirstTouchTarget的语句为: if (actionMasked == MotionEvent.ACTION_DO ...

  10. TypeScript躬行记(1)——数据类型

    TypeScript不仅支持JavaScript所包含的数据类型,还额外扩展了许多实用的数据类型,例如枚举.空值.任意值等. 一.JavaScript的数据类型 JavaScript的数据类型包括6种 ...