Node.js学习笔记(二) --- CommonJs和Nodejs 中自定义模块
一、 什么是 CommonJs?
JavaScript 是一个强大面向对象语言,它有很多快速高效的解释器。 然而, JavaScript
标准定义的 API 是为了构建基于浏览器的应用程序。并没有制定一个用于更广泛的应用程序
的标准库。 CommonJS 规范的提出,主要是为了弥补当前 JavaScript 没有标准的缺陷。 它的终
极目标就是: 提供一个类似 Python, Ruby 和 Java 语言的标准库,而不只是停留在小脚本程序
的阶段。用 CommonJS API 编写出的应用, 不仅可以利用 JavaScript 开发客户端应用, 而且
还可以编写以下应用。
•服务器端 JavaScript 应用程序。( nodejs)
•命令行工具。
•桌面图形界面应用程序。
CommonJS 就是模块化的标准, nodejs 就是 CommonJS( 模块化) 的实现。
二、 Nodejs 中的模块化
Node 应用由模块组成,采用 CommonJS 模块规范。
2.1 在 Node 中,模块分为两类:
一类是 Node 提供的模块,称为核心模块;另一类是用户编写的模块,称为文件模块。
• 核心模块部分在 Node 源代码的编译过程中,编译进了二进制执行文件。在 Node 进
程启动时,部分核心模块就被直接加载进内存中,所以这部分核心模块引入时,文件定位和
编译执行这两个步骤可以省略掉,并且在路径分析中优先判断,所以它的加载速度是最快的。
如: HTTP 模块 、 URL 模块、 Fs 模块都是 nodejs 内置的核心模块,可以直接引入使用。
• 文件模块则是在运行时动态加载,需要完整的路径分析、文件定位、编译执行过程、
速度相比核心模块稍微慢一些,但是用的非常多。 这些模块需要我们自己定义。 接下来我
们看一下 nodejs 中的自定义模块。
2.2 CommonJS( Nodejs) 中自定义模块的规定:
1.我们可以把公共的功能抽离成为一个单独的 js 文件作为一个模块, 默认情况下面这
个模块里面的方法或者属性, 外面是没法访问的。如果要让外部可以访问模块里面的方法或
者属性, 就必须在模块里面通过 exports 或者 module.exports 暴露属性或者方法。
2. 在需要使用这些模块的文件中, 通过 require 的方式引入这个模块。这个时候就可以
使用模块里面暴露的属性和方法。

2.3 定义使用模块:
// 定义一个 tools.js 的模块
//模块定义
var tools = {
sayHello: function() {
return 'hello NodeJS';
},
add: function(x, y) {
return x + y;
}
};
// 模块接口的暴露
// module.exports = tools;
exports.sayHello = tools.sayHello;
exports.add = tools.add;
var http = require('http');
// 引入自定义的 tools.js 模块
var tools= require('./tools');
tools.sayHello(); //使用模块
三、 npm init 生成 package.json
npm init --yes
Node.js学习笔记(二) --- CommonJs和Nodejs 中自定义模块的更多相关文章
- node (02 CommonJs 和 Nodejs 中自定义模块)顺便讲讲module.exports和exports的区别 dependencies 与 devDependencies 之间的区别
CommonJS 规范的提出,主要是为了弥补当前 JavaScript 没有标准的缺陷.它的终极目标就是:提供一个类似 Python,Ruby 和 Java 语言的标准库,而不只是停留在小脚本程序的阶 ...
- [转]node.js学习笔记(二)
二.express 1.安装 express4 npm --registry=http://registry.npmjs.org install -g express-generator (全局) 2 ...
- 系列文章--Node.js学习笔记系列
Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...
- 一点感悟:《Node.js学习笔记》star数突破1000+
写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...
- Node.js学习笔记(1):Node.js快速开始
Node.js学习笔记(1):Node.js快速开始 Node.js的安装 下载 官方网址:https://nodejs.org/en/ 说明: 在Windows上安装时务必选择全部组件,包括勾选Ad ...
- Node.js学习笔记(3):NPM简明教程
Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...
- Node.js学习笔记(2):基本模块
Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...
- Node.js学习笔记(4):Yarn简明教程
Node.js学习笔记(4):Yarn简明教程. 引入Yarn NPM是常用的包管理工具,现在我们引入是新一代的包管理工具Yarn.其具有快速.安全.可靠的特点. 安装方式 使用npm工具安装yarn ...
- Node.js学习笔记(三) --- package.json 及cnpm
一.包 Nodejs 中除了它自己提供的核心模块外,我们可以自定义模块,也可以使用第三方的模块.Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依赖关系的模块进行统一管理. 完全符合 ...
随机推荐
- Linux 开启路由转发功能
想让一台Red Hat Enterprise Linux 7开通iptables的nat转发功能 A服务器:192.168.30.20/24 B服务器:192.168.30.1/24,eth0; 19 ...
- 【bzoj4889】: [Tjoi2017]不勤劳的图书管理员 分块-BIT
[bzoj4889]: [Tjoi2017]不勤劳的图书管理员 题目大意:给定一个序列(n<=50000),每个数有一个编码ai(ai<=50000)和权值vi(vi<=100000 ...
- request.getSession()、reqeust.getSession(false)和request.getSession(true)
getSession()/getSession(true):当session存在时返回该session,否则新建一个session并返回该对象 getSession(false):当session存在 ...
- mysql5.7解压版版安装步骤详情
mysql有安装版和解压版之分: 安装版:以msi结尾的,这种版本优点是安装便捷,全是傻瓜式的下一步:缺点是会不自觉的安装一些我们根本不需要的组件. 解压版:以zip或者其他压缩格式结尾的,这种版本虽 ...
- Git的一些用法
三. Git的一些用法 1. .gitignore文件 屏蔽文件 : .gitignore文件是告诉Git哪些目录或者文件需要忽略, 这些文件将不被提交; 常用场景 : 写完代码后会执行变异调试等操作 ...
- 数据库表的约束constraints
数据库表的约束constraints 数据完整性约束 表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系. 在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性. 约束条 ...
- python的builtins模块
builtins模块详解 1.简介 builtins是python的内建模块,所谓内建模块就是你在使用时不需要import,在python启 动后,在没有执行程序员编写的任何代码前,python会加载 ...
- mAP(mean Average Precision)应用(转)
原文章地址来自于知乎:https://www.zhihu.com/question/41540197 1. precision 和 recall 的计算(没什么好说的,图片示例相当棒): 图1 图中上 ...
- linux下 git使用小记下
之前都是自己windows做脚本,完成文件的备份和管理,第一次使用git 转发一个博主很有用的笔记 ,并在此做了一点补充学习了 引用:https://www.cnblogs.com/chenfuli ...
- WordCount C语言实现求文本的字符数,单词数,行数
1.码云地址: https://gitee.com/miaomiaobobo/WordCount 2.psp表格 PSP2.1表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) P ...