`
mywebcode
  • 浏览: 998158 次
文章分类
社区版块
存档分类
最新评论

node.js第五课(模块与包)

 
阅读更多

概念:模块(Module)和包(Package)是Node.js最重要的支柱。开发一个具有一定规模的程序不可能只用一个文件,通常需要把各个功能拆分、分装、然后组合起来。模块正式为了实现这种方式而诞生,在浏览器JavaScript中,脚本模块的拆分和组合通常使用HTML的script标签来实现,Node.js提供了require函数来调用其他模块,而且模块都是基于文件,机制非常简单,模块和包的区别是透明的,因此经常不作区分。
一、模块
1.什么是模块
模块和文件是一一对应的。一个Node.js文件就是一个模块,这个文件可能是JavaScript代码、JSON或者编译过的C/C++扩展。
var http=require('http'),其中http是Node.js的一个核心模块,通过require函数获取这个模块,然后使用其中的对象
2.创建及加载模块
(1)创建模块
Node.js提供了exports和require两个对象,其中exports是模块公开的接口,require用于从外部获取一个模块的接口,
即获取模块的exports对象
(2)单次加载
上面的例子有点类似创建一个对象,但实际上和对象又有本质的区别,因为require不会重复加载模块,也就是说无论调用多少
次require,获取的模块都是同一个
(3)覆盖exports
有时我们知识想把一个对象封装到模块中,例如
定义模块:singleobejct.js
引入模块使用:getSingleObject.js
繁琐:exports.hello=hello;
引入:require("./singleobject").hello;
简易:module.exports=hello;
exports本身仅仅是一个普通的空对象,即{},它是专门用来声明接口
二、创建包
1.包的概念
包是在模块基础上更深一步的抽象,Node.js的包类似于C/C++的函数库或者java的类库,它讲某个独立的功能封装起来,
用于发布、更新、依赖管理的版本控制。开发了npm来解决包的发布和获取需求。
2.如何创建一个包
CommonJS规范的包应该具备一下特征:
package.json必须在包的顶层目录下
二进制文件应该在bin目录下
javaScript代码应该在lib目录下
文档应该在doc目录下
单元测试应该在test目录下
Node.js对包要求并没有那么严格,只要顶层目录下有package.json,并符合基本规范即可
(1)作为文件夹的模块
somepackage文件夹
最简单的包,就是一个作为文件夹的模块,
创建一个文件夹 somepackage,里面有一个index.js,里面提供一个方法sayHello()
var somepackage=require('./somepackage');
somepackage.sayHello();
我们使用这种方法可以把文件夹封装成一个模块,即所谓的包。包通常是一些模块的集合,在模块的基础上提供了更高层的抽象,
相当于提供了一些固定接口的函数库,通过定制package.json,我们可以创建更复杂、更完善、更符合规范的包用于发布。
(2)package.json
前面的例子,在somepackage文件夹下,我们创建一个package.json的文件,内容
{
'main':'./lib/index.js'
}
Node.js在调用某个包时,会检查包中package.json文件的main字段,将其作为包的接口模块,
如果package.json或main字段不存在,会尝试寻找index.js或index.code作为包的接口
package.json的规范属性:
name:包的名称,必须是唯一
description:包的简要说明
version:符合语义化版本识别规范的版本字符串
keywords:关键字数据,通常用于搜索
maintainers:维护者数组,每个元素要包含name、email、web可选字段
contributors:贡献者数组,格式与maintainers相同。包的坐着应该是贡献者数据的第一个元素
bugs:提交bug的地址,可以是网址或者电子邮件地址
licenses:许可证数组,每个元素要包含type和url字段
repositories:仓库托管地址数组,每个元素要包含type、url和path字段
dependencies:包的依赖,一个关联数组,由包名称和版本号组成。
分享到:
评论

相关推荐

    Node.js 开发指南.pdf

    第5章 使用Node.js进行Web开发 79 5.1 准备工作 80 5.1.1 使用http模块 82 5.1.2 Express框架 83 5.2 快速开始 84 5.2.1 安装Express 84 5.2.2 建立工程 85 5.2.3 启动服务器 86 5.2.4 工程的结构...

    Node.js入门经典pdf及书中源代码

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包,Node.js入门经典采用直观、循序渐进的方法对如何使用Node.js来开发及具速度和可扩展性优势的服务器端应用程序进行了讲解。  《Node.js入门经典》分为6...

    Node.js Web开发实战-(共14章)PPT.rar

    第5章 http模块.ppt 第6章 Web开发中的模板引擎.ppt 第7章 Node.js中的文件操作.ppt 第8章 认识express模块.ppt 第9章 MySQL数据库.ppt 第10章 Express框架.ppt 第11章 socket.io 模块.ppt 第12章 MongoDb数据库.ppt...

    node.js入门经典

    第5部分介绍了Node.js API以及构建Node.js应用程序所使用的组件;第6部分则介绍了CoffeeScript这款JavaScript预编译器的知识,以及如何在Node.js中使用中间件、Backbone.js来创建单页面应用的知识。

    Node.js入门经典

    第5部分介绍了Node.js API以及构建Node.js应用程序所使用的组件;第6部分则介绍了CoffeeScript这款JavaScript预编译器的知识,以及如何在Node.js中使用中间件、Backbone.js来创建单页面应用的知识。

    Node.js+开发指南

    第5章 使用Node.js进行Web开发 79 5.1 准备工作 80 5.1.1 使用http模块 82 5.1.2 Express框架 83 5.2 快速开始 84 5.2.1 安装Express 84 5.2.2 建立工程 85 5.2.3 启动服务器 86 5.2.4 ...

    Node.js MongoDB AngularJSWeb开发中文版.part1

    第5章 在Node.js中处理数据I/O 67 5.1 处理JSON 67 5.1.1 把JSON转换成JavaScript对象 67 5.1.2 把JavaScript对象转换为JSON 68 5.2 使用Buffer模块缓冲数据 68 5.2.1 了解缓冲数据 69 5.2.2 创建缓冲区 69 5.2.3 ...

    Web调用Node模块NW.js.zip

    完全支持 Node.js APIs 以及其 第三方模块 性能表现良好,Node 和 WebKit 运行在同一个线程,函数调用更直接,对象在同一个内存堆中,可直接引用 方便打包和分发 支持跨平台 演示程序:...

    达达房卡麻将二次开发VIP系统学习课程.zip

    【录播】第011课node.js_websocket与ws模块使用(58分钟) 25 第012课node.js_TCP通讯拆包与封包 【录播】第012课node.js_TCP通讯拆包与封包(59分钟) 26 第013课node.js_二进制数据协议与JSON数据协议 ...

    learning_node.pdf Node学习指南(非扫描)

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包。它可以让JavaScript在服务器端运行,因此,可用来快速构建网络服务及应用的平台。  《Node学习指南》是学习Node编程的入门指南。全书共16章。前4章主要...

    [游戏开发] 达达房卡麻将二次开发VIP系统学习课程 [MP4] (16.66G)

    │ 第009课node.js二进制数据与Buffer模块.rar │ 第010课node.js_npm模块的安装和加载.rar! o O' O- ]0 G! t: R3 U │ 第011课node.js_websocket与ws模块使用.rar │ 第012课node.js_TCP通讯拆包与封包.rar7 L5 Y4 ...

    打造Node.js全栈开发工程师

    打造Node.js全栈开发工程师,视频教程内容包括以下内容:一、Node基础知识:学习Node中的核心模块、核心变量,如何操作文件以及安装管理第三方的模块,为大家后面进入服务器端的学习打下扎实的基础;二、Node服务器...

    node.js基于Node.js文具售卖系统的设计与实现150950(附源码+数据库)

    (1)用户管理:管理员可以再后台添加用户,删除用户...(7)支付管理:支付模块在系统内通过数据记录形式实现,不引入第三方支付SDK,同时也不不走第三方接口。 (8)权限管理:对管理员和用户的权限管理,角色管理。

    Node与Express开发.pdf

    Web 服务器...................................................................................................4 1.6 Node 的生态系统 ........................................................................

    Node.js快速入门视频课程(通俗易懂)【2020版】

    Node.js 是一个可以让JavaScript在服务器端运行的系统环境,即运行JavaScript不再依赖于浏览器 Node.js 是一个基于Chrome的JS引擎(V8)所开发的软件程序,可以执行ECMAScript Node 提供大量API工具库,使JavaScript...

    Node.JS从入门到项目实践

    学习node.js之前我们需要首先掌握 javascript ,这套课程将分为5个章节来介绍node.js ① 第一章节:讲解node.js基础知识,比如node安装、引入基础模块等等,从0开始 ② 第二章节:带领大家学习node.js框架,Express...

    rss-feed-emitter:用Node.js和ES6编写的超级RSS新闻提要聚合器

    如何将它们与Travis CI集成并中断构建如何针对各种版本的Node.js自动测试模块如何设置代码覆盖率工具并保持100%覆盖率如何将Coverage结果与Coveralls整合如何配置整理工具以使您的代码库保持一致如何使用标签和发行...

    node-gif:一个node.js C ++模块,用于从RGB或RGBA缓冲区创建GIF图像和动画GIF

    这是一个用C ++编写的node.js模块,它使用giflib从RGB,BGR,RGBA或BGRA缓冲区生成GIF图像。 此模块导出Gif , DynamicGifStack , AnimatedGif和AsyncAnimatedGif对象。Gif Gif对象用于创建简单的GIF图像。 Gif的...

    Javascript模块化管理库jmd.js.zip

    jmd.js 是极小型、高性能 Javascript 模块化管理库(浏览器端)。特点遵循规范,可以像Node.js 一样来写模块代码(参见:AMD、CMD)完全异步,不对源码做任何改动、没eval、setTimeout,全速加载!干干净净,只有一个...

    quiz:Miriadax.net的“使用HTML5,Javascript和node.js开发云服务”课程项目的资料库

    本课程适用于对编程和Web设计有一般知识的人,他们使用JavaScript,node.js和express.js进行服务器Web开发的第一级培训。 模组 模块0 。 课程,程序和UNIX操作系统的简介。 模块1 。 服务器JavaScript和node.js简介...

Global site tag (gtag.js) - Google Analytics