• Node.js笔记2


    入门二

    5. 事件
    Node.js中所有的异步I/O操作完成时都会发送一个事件到事件队列。
    Events 事件模块 `events.EventEmitter`
    简单用法:

    var EventEmitter = require('events').EventEmitter;
    var event = new EventEmitter();

    event.on('some_event', function() {
    console.log('some_event occured.');
    });

    setTimeout(function() {
    event.emit('some_event');
    }, 1000);

    **Node.js 的事件循环机制**
    Node.js 程序由事件循环开始,到事件循环结束,所有的逻辑都是事件的回调函数,所以 Node.js 始终在事件循环中,程序入口就是事件循环第一个事件的回调函数。事件的回调函数在执行的过程中,可能会发出 I/O 请求或直接发射(emit)事件,执行完毕后再返回事件循环,事件循环会检查事件队列中有没有未处理的事件,直到程序结束。
    6. 模块和包

    1. Node.js提供了`require`来调用模块 Node.js 的模块和包机制的实现参照了 CommonJS 的标准

    1.创建模块
    通过`exprots`可以你写的方法作为模块的访问接口
    其他文件调用方式是`require('./module')`
    var name;

    exports.setName = function(thyName) {
    name = thyName;
    };

    exports.sayHello = function() {
    console.log('Hello ' + name);
    };
    2.覆盖 exports
    function Hello() {
    var name;

    this.setName = function(thyName) {
    name = thyName;
    };

    this.sayHello = function() {
    console.log('Hello ' + name);
    };
    };

    module.exports = Hello;

    这个地方将exports覆盖。可以在其它文件中直接调用了。
    var Hello = require('./hello');

    hello = new Hello();
    hello.setName('test');
    hello.sayHello();
    2. 创建包

    Node.js 的包是一个目录,其中包含一个 JSON 格式的包说明文件 package.json。

    严格符合 CommonJS 规范的包应该具备以下特征:

    1. package.json 必须在包的顶层目录下;

    2. 二进制文件应该在 bin 目录下;

    3. JavaScript 代码应该在 lib 目录下;

    4. 文档应该在 doc 目录下;

    5. 单元测试应该在 test 目录下。

    **Node.js 在调用某个包时,会首先检查包中 package.json 文件的main 字段,将其作为包的接口模块,如果 package.json 或main字段不存在,会尝试寻找 index.js 或index.node作为包的接口。**

    **package.json 规范细节**
    1. name:包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格。
    2. description:包的简要说明
    3. version:符合语义化版本识别①规范的版本字符串。
    4. keywords:关键字数组,通常用于搜索。
    5. maintainers:维护者数组,每个元素要包含name、email(可选)、web(可选)字段
    6. contributors:贡献者数组,格式与maintainers相同。包的作者应该是贡献者数组的第一个元素。
    7. bugs:提交bug的地址,可以是网址或者电子邮件地址。
    8. licenses:许可证数组,每个元素要包含type(许可证的名称)和 url(链接到许可证文本的地址)字段
    9. repositories:仓库托管地址数组,每个元素要包含type(仓库的类型,如git)、url(仓库的地址)和path(相对于仓库的路径,可选)字段。
    10. dependencies:包的依赖,一个关联数组,由包名称和版本号组成

    3. 包管理器

    包安装到当前目录
    `npm [install/i] [package_name]`

    全局安装模块
    `npm [install/i] -g [package_name]`

    **总而言之,当我们要把某个包作为工程运行时的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装。**

    `npm link` 创建全局链接 帮助你使用全局安装的模块 可以把全局包当本地包来使用了 *不支持window

    `npm init` 可以根据交互式问答产生一个符合标准的 package.json

    `npm adduser`创建一个用于发布npm的账户

    `npm whoami`用于检测是否创建成功


    7. 调试
    node debug app.js 将会启动调试工具

    远程调试
    node --debug[=port] script.js
    node --debug-brk[=port] script.js

    安装node-inspector 调试
    npm install -g node-inspector
    node --debug-brk=5858 debug.js //运行debug.js
    node-inspector //开启inspector调试

    http://127.0.0.1:8080/debug?port=5858 //浏览器打开

    Now or nerver .
  • 相关阅读:
    【刷题-LeetCode】154 Find Minimum in Rotated Sorted Array II
    【刷题-LeetCode】153 Find Minimum in Rotated Sorted Array
    【刷题-LeetCode】152 Maximum Product Subarray
    迭代器,生成器
    python 16 装饰器
    python 15 闭包函数
    python 14 名称空间与作用域
    函数参数
    python 11 函数基础
    python中list、tuple、set、dict区别
  • 原文地址:https://www.cnblogs.com/iyueyao/p/3344437.html
Copyright © 2020-2023  润新知