nodejs学习笔记之包、模块实现
package.json: 包的描述文件
bin: 用于存放可执行的二进制文件的目录
lib: 用于存放javascript的目录
doc: 用于存放文档的目录
test: 用于存放单元测试用例的代码
node_modules: 第三方模块
README.md: 关于描述
{
"name": "express", //包名由小写字母和数字组成,包含._-,但不允许空格,包名须是唯一的
"description": "Sinatra inspired web development framework", //包介绍
"version": "4.4.4", //版本号,用于版本控制,一般是major.minor.revision格式
"author": { //包作者
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"
},
"contributors": [ //贡献者列表,每个维护者由name、email和web组成
{
"name": "Aaron Heckmann",
"email": "aaron.heckmann+github@gmail.com"
},
{
"name": "Ciaran Jessup",
"email": "ciaranj@gmail.com"
},
{
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"
},
{
"name": "Guillermo Rauch",
"email": "rauchg@gmail.com"
},
{
"name": "Jonathan Ong",
"email": "me@jongleberry.com"
},
{
"name": "Roman Shtylman"
}
],
"keywords": [ //关键词数组,有利于用户快速查找到
"express",
"framework",
"sinatra",
"web",
"rest",
"restful",
"router",
"app",
"api"
],
"repository": { //托管源代码的位置
"type": "git",
"url": "git://github.com/visionmedia/express"
},
"license": "MIT", //许可证列表
"dependencies": { //当前包所依赖的包列表
"accepts": "~1.0.5",
"buffer-crc32": "0.2.3",
"debug": "1.0.2",
"escape-html": "1.0.1",
"methods": "1.0.1",
"parseurl": "1.0.1",
"proxy-addr": "1.0.1",
"range-parser": "1.0.0",
"send": "0.4.3",
"serve-static": "1.2.3",
"type-is": "1.2.1",
"vary": "0.1.0",
"cookie": "0.1.2",
"fresh": "0.2.2",
"cookie-signature": "1.0.3",
"merge-descriptors": "0.0.2",
"utils-merge": "1.0.0",
"qs": "0.6.6",
"path-to-regexp": "0.1.2"
},
"devDependencies": { //一些模块只有在开发的时候需要依赖,用于提示后续开发者
"after": "0.8.1",
"istanbul": "0.2.10",
"mocha": "~1.20.1",
"should": "~4.0.4",
"supertest": "~0.13.0",
"connect-redis": "~2.0.0",
"ejs": "~1.0.0",
"jade": "~1.3.1",
"marked": "0.3.2",
"multiparty": "~3.2.4",
"hjs": "~0.0.6",
"body-parser": "~1.4.3",
"cookie-parser": "~1.3.1",
"express-session": "~1.5.0",
"method-override": "2.0.2",
"morgan": "1.1.1",
"vhost": "2.0.0"
},
"engines": { //支持的javascript引擎列表
"node": ">= 0.10.0"
},
"scripts": { //脚本说明对象
"prepublish": "npm prune",
"test": "mocha --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/"
},
"bugs": { //反馈bug的地址
"url": "https://github.com/visionmedia/express/issues"
},
"homepage": "https://github.com/visionmedia/express" //主页地址
}
- 核心模块:如http、fs
- .或..开始的相对路径文件模块
- 以/开始的绝对路径文件模块
- 分路径形式的文件模块
前三类都很明确根据路径查找,不需要做过多的讲解。文件模块的路径生成规则是:首先查找当前目录下的node_modules目录;其次查找父目录下的node_modules目录;再次查找父目录的父目录下的node_modules;最后不断向上递归查找,直到根目录的node_modules目录。总而言之一句话:一直向上找,直到找到根目录,如果找不到会进入文件文件定位阶段。
- .js文件,通过fs模块同步读取文件后编译执行
- .node文件,这是C/C++编写的扩展文件,通过dlopen()方法加载最后编译生成文件文件
- .json文件,通过fs模块同步读取文件后,用JSON.parse()解析返回结果
- 其他文件,它们都被当作.js文件载入
以上是学习过程中整理的笔记,方便以后学习。
nodejs学习笔记之包、模块实现的更多相关文章
- NodeJS学习笔记之MongoDB模块
其中还有,nodejs远程连接mysql数据库 一,开篇分析 这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块). (1),简介 MongoDB是一个基于 ...
- NodeJS学习笔记之Connect中间件模块(一)
NodeJS学习笔记之Connect中间件模块(一) http://www.jb51.net/article/60430.htm NodeJS学习笔记之Connect中间件模块(二) http://w ...
- NodeJS学习笔记 进阶 (12)Nodejs进阶:crypto模块之理论篇
个人总结:读完这篇文章需要30分钟,这篇文章讲解了使用Node处理加密算法的基础. 摘选自网络 Nodejs进阶:crypto模块之理论篇 一. 文章概述 互联网时代,网络上的数据量每天都在以惊人的速 ...
- Nodejs学习笔记(四)——支持Mongodb
前言:回顾前面零零碎碎写的三篇挂着Nodejs学习笔记的文章,着实有点名不副实,当然,这篇可能还是要继续走着离主线越走越远的路子,从简短的介绍什么是Nodejs,到如何寻找一个可以调试的Nodejs ...
- Nodejs学习笔记(三)——一张图看懂Nodejs建站
前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...
- Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识
目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- Nodejs学习笔记(十六)--- Pomelo介绍&入门
目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...
- [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
随机推荐
- http2.0 相对于 http1.1的优势
1.http2.0完全是多路复用的,只需一个连接就可实现并行 可以将不同的请求夹杂在一起,只需一个连接就能加载一个页面. 2.可以让服务器将响应主动推动到客户端缓存中 当浏览器请求一个网页时,服务器除 ...
- (转)iOS7界面设计规范(11) - UI基础 - 图标与图形
不知别人如何,我自己来讲,平时很习惯很有动力去做的一些事,譬如博客吧,一旦生活中出现一些让自己很难受的状况,就很容易受到影响:像是,你平时所习惯的生活状态都是基于某种东西的,一旦这种东西崩塌,会影响到 ...
- DEV PivotGridControl 全选行或列
foreach (string item in fieldProductName.FilterValues.Values) { pivotGridControl.Cells.SetSelectionB ...
- 关于IE11
最近,一个开发代号为Windows Blue的Windows操作系统泄漏到了互联网上,该操作系统的内置浏览器为IE11,本文将介绍一下这个泄漏版的IE11中有哪些关键的新变化和新特性. 预先声明: 本 ...
- 未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序
运行时出现了错误,提示未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序. 这个问题的原因是64位PC上安装了Office的32位版本,所以Micro ...
- 外观模式-facade实现interface的方式(简单工厂+facade组合使用)
Façade 外观模式 1.Façade实现为interface的具体过程 在Façade.java 接口 工厂 将构造方法私有 static 方法产生一个工厂 此时 客户端不知道 Façade的存 ...
- Bootstrap新手常见问题
题记 bootstrap这个开源的UI库确实很方便,用了两日,觉得不错,但也有些问题比较头疼! 主题 1.怎么使用?怎么定制?下面是一个范例,修改了navbar的颜色,重新设置了select控件的默认 ...
- 7 Hbase put方式插入数据
package com.hikvision.hbase.vertify.test; import org.apache.hadoop.conf.Configuration; import org.ap ...
- 犯罪团伙 codevs 3554
这是一道经典的水题,提供两种方法:①深搜 ②并查集 NO.1 深度优先搜索: #include<iostream>#include<cstdio>#include<al ...
- oracle RAC调整数据文件大小并移动表到指定的表空间
一.Oracle RAC 调整表空间数据文件大小 1.先查找出表空间对应的数据文件路径: select file_name,tablespace_name from dba_data_files ; ...