zoukankan      html  css  js  c++  java
  • NodeJS 学习笔记

    1. NodeJs的事件模型被称为非阻塞式IO或者事件驱动IO

    2. Node.js 几乎每一个 API 都是支持回调函数的。

    3. Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。

    4. Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。

    5. 在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。

    6. 

    JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。

    但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

    每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。

    7. 一个NodeJS文件就是一个模块。

    8. NodeJS提供了exports和require两个对象。

    9. 

    有时候我们只是想把一个对象封装到模块中,格式如下:

    module.exports = function() {
      // ...
    }

    例如:

    //hello.js 
    function Hello() { 
        var name; 
        this.setName = function(thyName) { 
            name = thyName; 
        }; 
        this.sayHello = function() { 
            console.log('Hello ' + name); 
        }; 
    }; 
    module.exports = Hello;

    这样就可以直接获得这个对象了:

    //main.js 
    var Hello = require('./hello'); 
    hello = new Hello(); 
    hello.setName('BYVoid'); 
    hello.sayHello();

    10. 

    由于 Node.js 中存在 4 类模块(原生模块和3种文件模块),尽管 require 方法极其简单,但是内部的加载却是十分复杂的,其加载优先级也各自不同。如下图所示:

    11. 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global。

    12. 常见的客户端存储有几种:第一种,Web存储,其中包含localStorage对象和sessionStorage对象;第二种,Cookie,其作为一种被服务端脚本使用的客户端存储机制。

    13. NodeJS虽然是单线程的,但是这里的单线程仅仅是JavaScript执行在单线程中罢了,其内部完成I/O任务的是线程池。

    14. 异步I/O的实现主要包含两个阶段:提交请求和处理结果。这两个阶段中间有事件循环的调度,两者彼此不关联。

    15. NodeJS在处理异常上形成了一种约定,将异常做为回调函数的第一个实参传回,如果为空值,则表明异步调用没有异常抛出。

    async(function (err, results) {
    // TODO
    });
    

    16. 异步编程的难点:

    • 异常处理
    • 函数嵌套过深
    • 阻塞代码
    • 多线程编程,child_process是其基础API,cluster模块是更深层次的应用。借助Web Workers的模式,开发人员要更多的去面临跨线程的编程。
    • 异步转同步

    17. 异步编程的主要解决方案有如下3种:

    • 事件发布/订阅模式
    • Promise/Defered模式
    • 流程控制库

    18. mocha默认的模式是Behavior Driven Develop (BDD),要想执行TDD的test的时候需要加上参数,如:

       

    mocha -u tdd test.js
    

      对于TDD,我们用suite, test, setup, teardown。

           对于BDD,我们用describe, it, before, after

      

  • 相关阅读:
    SQL server 数据库的版本为661,无法打开,此服务器只支持655版及更低版本。不支持降级路径
    SQL Server 2005 企业版没有 Microsoft SQL Server Management
    Tomcat 中 jsp 中文乱码显示处理解决方案
    ASP.NET后台输出js
    未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配
    socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
    C# Socket连接 无法访问已释放的对象
    未找到导入的项目,请确认 <Import> 声明中的路径正确
    轻量级容器Docker+微服务+RESTful API
    Foundation和UIKit框架组织图
  • 原文地址:https://www.cnblogs.com/zunzunQ/p/10112680.html
Copyright © 2011-2022 走看看