美文网首页
《深入浅出nodejs》笔记

《深入浅出nodejs》笔记

作者: shanshanfei | 来源:发表于2017-07-19 20:36 被阅读0次

    第二章:模块机制

    总结:nodejs遵循commonjs规范,commonjs定义了模块、I/O、二进制、文件等规范,其中最重要的就是nodejs模块规范,下面总结一下nodejs的模块加载:
    nodejs的模块分为核心模块和文件模块,核心模块在nodejs源代码编译中,已经编译进了二进制可执行文件中,只要node启动,就已经被加载到内存中,所以加载速度比较快。像文件模块就需要经历路径解析、文件定位和编译执行的过程。
    路径解析可以是一个标识符、相对路径或者绝对路径,最终require方法会转换成真实路径。
    文件定位包括文件扩展名分析和包目录分析等,其中文件扩展名没带时,是以.js .json .node的顺序进行解析的。
    完成路径解析和文件定位后,node会新建一个模块对象,这时候就有了exports、module等变量,再具体的编译过程中,node会对加载的js文件进行头尾的包装(包装见下面示例代码),包装的过程中,将模块对象的module exports __filename __dirname等变量传递给function函数,这就是我们没有在js文件中定义module等变量,却可以使用的原因。

        //(function(exports, require, module, __filename, __dirname){//头
            var a = 123;
            exports.add = function(b){
                return a+b;
            }
            //...
        //});//尾
    

    另外,node对于模块的加载是有缓存的,以减少二次引用时的性能开销(核心模块的缓存检查优先于文件模块的缓存检查)。

    ////////////////
    笔记:

    1. nodejs特点:
      单线程、数据驱动、异步、速度快、耗费内存多

    劣势:

    • 默认不支持多核,但可以用cluster实现
    • 不支持服务器集群 ,但可以用node-http-proxy实现
    • 借助nginx实现负载均衡
    • 灾难恢复 可以用node-cluster实现

    相关文章

      网友评论

          本文标题:《深入浅出nodejs》笔记

          本文链接:https://www.haomeiwen.com/subject/vtrrkxtx.html