模块化:
     1、系统模块:  http、querystring、url
     2、自定义模块
     3、包管理器
 
【系统模块】
 
Assert      断言:肯定确定会出现的情况使用断言     
          stabiltry: locked   稳定性,锁定,再也不会改了
C/C++ ADDons      c的扩展:关键性的函数可以用c来写,提高稳定性
child Processes        子进程
Cluster                     集群
Command Line Opation          命令行操作
Crypto                      加密  例如MD5、sha               重要
Debugger                  
DNS                         域名解析          dns.getServers();
Domain                    域名       稳定性为0,已经废弃
Error                         异常
Events                       事件,用来模拟事件的模块        重要
FS                             文件读取
HTTP、HTTPS            协议
Modules                    实现模块化的操作
Net                           网络,各种网络操作                    重要
OS                            操作系统          EOL换行。。cpus。。。    重要    稳定性2
Path                          处理文件路径
Process                     进程信息
Punycode                  废弃
Querysting              
Readline                    读取一行文件
REPL                          node命令行
Stream                      流操作               非常重要      读取文件=》返回文件
                                 readFile      全部读取完再发送
                                 stream        分段读取分段发送
String  Decoder         字符串的编码解码
Timers                       定时器
TLS/SSL                    加密,
TTY                            链接远端的命令行
UDP                         数据报协议
Util                            工具类
V8                              引擎相关的信息
VM                              虚拟机
ZLIB                           压缩            gZip等        压缩完再存储,压缩完再发送,是一种流操作
 
【自定义模块】      
模块化最基本的组成部分      CMD
1、require     请求: 引入模块
     1.引入自定义模块     const mod = require('./module.js');
     2.引入系统模块         const http = require('http');
     3.规则:引入自定义模块需要加./,引入系统模块无需加(如果不想添加'./',需要把文件放入node_module文件夹)
     4.优先规则:系统模块高于自定义模块
2、module     模块: 批量输出
     module.exports = { };
3、exports     输出: 单个输出
     exports.a = 12;       
     nodejs中没有全局变量,输出必须挂载到exports上
 
实现原理:和seajs、requirejs定义模块的相似
(function (require, exports, module) {
var a = ;
export.a = ;
})();
【npm】  Nodejs Package Manager (nodejs包管理工具)    www.nomjs.com
1.统一下载途径
2.自动下载依赖
3.可以提交模块
 
查询npm指令    npm
 
npm install  包名         下载模块
npm uninstall 包名       删除模块
adduser
login
 
【提交npm模块】
 
1.注册登录npm
     npm login       输入账号密码
2.npm whoami     显示当前登录用户
3.npm init           创建一个包信息文件package.json
     text command      测试环境命令
     git repository         git 地址
     keywords               关键词
     license                    协议  ISC
4.书写入口文件及其模块文件
     exports.XXXX
5.发布  npm publish
6.升级版本   package.json文件中更新版本号信息    修改需要更新的包   运行命令  npm update  包名
7.删除包      每次只能删除一个版本,   npm unpublish  --force

nodejs学习笔记四(模块化、在npm上发布自己的模块)的更多相关文章

  1. Nodejs学习笔记(5) 文件上传系统实例

    目录 2018.8.4更新:  MySQL可以存放几乎任何类型的数据(图片.文档.压缩包等),但这不是最好的解决方案,正常情况下都是在数据库中存放文件路径,图片.音乐.视频.压缩包.文档等文件存放在硬 ...

  2. NodeJS学习笔记四

    Generator简介 基本概念 Generator函数有多种理解角度.从语法上,首先可以把它理解成,Generator函数是一个状态机,封装了多个内部状态. 执行Generator函数会返回一个遍历 ...

  3. nodejs学习笔记<四>处理请求参数

    在web开发中处理请求参数是个非常常见的工作:nodejs提供了了querystring用来处理请求参数. querystring常用方法有:parse,stringify. (1)parse: 解析 ...

  4. nodejs学习笔记四——express-session

    博友沉沉-_-的这篇express 框架之session分析的已经非常详细了,本人这里就不描述了. 总结其中的几个关键点. 1.http协议规定http链接是无状态的链接,cookie和session ...

  5. Redis学习笔记四:独立功能之发布与订阅

    客户端可以通过执行 subscribe 命令订阅一个或多个频道,每当有其他客户端向被订阅的频道发送消息时,频道所有的订阅者都会收到这条消息. 客户端还可以通过执行 psubscribe 命令订阅一个或 ...

  6. Nodejs学习笔记(四)——支持Mongodb

    前言:回顾前面零零碎碎写的三篇挂着Nodejs学习笔记的文章,着实有点名不副实,当然,这篇可能还是要继续走着离主线越走越远的路子,从简短的介绍什么是Nodejs,到如何寻找一个可以调试的Nodejs ...

  7. Nodejs学习笔记(三)——一张图看懂Nodejs建站

    前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...

  8. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  9. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

随机推荐

  1. spring boot maven多模块打包部署到tomcat

    @SpringBootApplication(scanBasePackages = {"com.xxx.*"}) public class ApiApplication exten ...

  2. 3.C#WebAPI设置路由和参数2

    1.上面已经教大家如何修改全局路由了,那么修改完后我们在post请求的要这样使用,其中model模型我就默认你应该已经建好了,没有创建的话请看上一部分 Post方法的参数,如果提交的请求体需要是pho ...

  3. C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)

    第二次更新,后面的代码有问题,有些专辑图片读取不到.发现是PNG图片的问题.在读取的过程中调试发现,图片帧前10个字节包含了图片的格式,在有些歌曲写着JPEG的格式,数据却是PNG的.先说下思路. j ...

  4. mysql主从报错截图

    1.首先确认报错的binlog和last event. 2.然后去主的机器上查看该报错的内容和报错的的位置,如果是结尾报错的,可以直接从新的binlog进行同步. #/mysql/logs# ../b ...

  5. “全栈2019”Java第一百零一章:局部内部类覆盖作用域内成员详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. BZOJ 3110 [Zjoi2013]K大数查询 (CDQ分治+树状数组)

    题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是 ...

  7. Struts2的优点与Struts1的区别:

    单实例与多实例有状态就是有数据存储功能,比如购物车,买一件东西放进去,可以再次购买或者删减.无状态就是一次操作,不能保存数据. 有状态对象,就是有成员属性的对象,可以保存数据,是非线程安全的.无状态对 ...

  8. [真题] 一道 vsftp 运维题

    一道 vsftp 运维题 一.前言 在 V 站上凑巧看到了好友发的求助帖,五天时间一个理他的都没有.哈哈哈~ 废话不多说,我们来试试. 二.题目 这里我们假设存在这样的场景: 网络内有普通用户 ade ...

  9. 爬虫实战2:爬头条网美图--Ajax图片加载处理

    完整代码经测试可成功运行,目的是抓取头条网输入街拍后的图片,涉及的知识点如下 1. md5加密使用方法 方法1:不创建实例对象,直接使用 >>> from hashlib impor ...

  10. spring中scope的prototype与singleton区别

    最近在研究单例模式,突然想起项目中以下配置,scope="singleton" 和 scope="prototype"到底有何区别呢?以下做下简要分析. < ...