NodeJS学习笔记—1.CommonJS规范
由于现在web开发,越来越重视代码的复用和抽象的封装,为了解决代码的组织结构、管理、复用和部署等问题,现在普遍采用的机制是模块机制(module)。CommonJS约定桌面应用程序和服务器应用程序需要的API,如操作系统接口、数据、文件系统等,其最主要的约定就是module机制。其跟操作系统、js引擎都没有关系,只要兼容CommonJS的平台就能运行。
CommonJS是服务器端模块的规范,Nodejs采用了这个规范,所以有必要学习下。
根据CommonJS规范,一个单独的文件就是一个模块,加载模块用require方法,该方法读取模块并返回文件内的exports对象,如下:
//A.js
exports.message="hello";
exports.say=function(){
console.log("say hi");
}
使用require加载A.js
//B.js
var b=require(./A);
b.say();
require默认读取js文件,所以可以省略.js后缀。js文件名前可以是相对路径也可以是绝对路径,相对路径是相对于当前require文件的。若省略了路径,node.js默认会加载一个核心模块,或者安装在node_modules中的模块。若加载的是一个目录,默认是去读package.json文件,加载该文件main属性提到的模块,否则寻找该目录下的index.js。
复杂点的C.js
function C(){
this.say=function(){
};
this.hello=function(){
}
} exports.C=C;
调用C模块:
var d=require(./C).C;
var d1=new d();
d1.say();
NodeJS学习笔记—1.CommonJS规范的更多相关文章
- 学习笔记:CommonJS规范、AMD规范
CommonJS规范 http://wiki.jikexueyuan.com/project/webpack-handbook/commonjs.html CommonJS 规范 http://www ...
- NodeJS学习笔记—2.AMD规范
CommonJS加载模块是同步的,而AMD模块加在是非同步的,允许指定回调函数.由于Nodejs主要用于服务器编程,模块文件一般都存在于本地,所以加载很快,不需要考虑非同步加载,用CommonJS即可 ...
- Nodejs学习笔记(四)——支持Mongodb
前言:回顾前面零零碎碎写的三篇挂着Nodejs学习笔记的文章,着实有点名不副实,当然,这篇可能还是要继续走着离主线越走越远的路子,从简短的介绍什么是Nodejs,到如何寻找一个可以调试的Nodejs ...
- Nodejs学习笔记(三)——一张图看懂Nodejs建站
前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...
- Nodejs学习笔记(二)——Eclipse中运行调试Nodejs
前篇<Nodejs学习笔记(一)——初识Nodejs>主要介绍了在搭建node环境过程中遇到的小问题以及搭建Eclipse开发Node环境的前提步骤.本篇主要介绍如何在Eclipse中运行 ...
- NodeJS学习笔记之Connect中间件模块(一)
NodeJS学习笔记之Connect中间件模块(一) http://www.jb51.net/article/60430.htm NodeJS学习笔记之Connect中间件模块(二) http://w ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- Nodejs学习笔记(十六)--- Pomelo介绍&入门
目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...
随机推荐
- C语言中结构体对齐问题
C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B; ...
- asp.net中水印的实现代码
水印是为了防止别盗用我们的图片. 两种方式实现水印效果 1)可以在用户上传时添加水印. a) 好处:与2种方法相比,用户每次读取此图片时,服务器直接发送给客户就行了. b) 缺点:破坏了原始图 ...
- 关于IOS开发者账号一点总结
经过查阅相关资料,我扼要总结了以下几点内容. 一.开发者账号类型 个人账号 99美金/年 公司账号 99 企业账号 299 教育账号 0 二.开发者账号有无比较 如果有: 可以真机测试 发布的应用可以 ...
- BZOJ1600: [Usaco2008 Oct]建造栅栏
1600: [Usaco2008 Oct]建造栅栏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 825 Solved: 473[Submit][Sta ...
- BZOJ1599: [Usaco2008 Oct]笨重的石子
1599: [Usaco2008 Oct]笨重的石子 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 758 Solved: 513[Submit][ ...
- Python copy对象(copy与deepcopy)
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...
- 【PHP】php+txt实现网页计数器(限IP统计方式和不限IP统计方式)
一般的网页计数器制作实现思路:首先设定存放统计数据的文件(counter.txt)——读取文件中的内容存入字符串——自加操作——以写入方式打开文件写入数据——从文件中输出统计数据——关闭文件. 代码: ...
- jquery 使用方式记录
1.监听键盘事件 $("#id").keyup(function(event){ if(event.keyCode == 13){ $("#btn_addgoods_su ...
- Docker入门实战_正版电子书在线阅读_百度阅读
Docker入门实战_正版电子书在线阅读_百度阅读 Docker入门实战
- [转]C++ map容器用法
C++ map的基本操作和使用 原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关 ...