<<深入浅出nodeJS>>读书笔记--<一>

   前语:nodeJs这书早在五月份的时候就已经买了,那时候才刚刚接触node,本想着这书应该是node入门级比较系统化的书,可翻了几页之后呢,发现好多地方都晦涩难懂,特别是看到内建模块的C++实现时,瞬间有想瞌睡的感觉....-_-从这之后,这书一直被我闲置在书桌角落,再无动过,看书学习node的想法就这样放弃了,转为上网学习基础的语法API..就这样,边看API边跟着做一些小例子,慢慢的,发现基本的API用法都已经掌握了,于是,去搜搜与node有关的一些技术博客,希望能够进阶去了解node。开始去尝试用node做一些完整的小例子,比如简单的博客实现,聊天室...就这么过了两个月左右,发现对node的了解基本上已经算是有了一个全面大致的认识了,所有的知识点都了解得差不多了,于是开始着手去实现一个简单的订餐app,在此之前,为了能够强化所有知识点以便顺利完成服务器端的编写,再一次翻开了那本稍有些许灰尘的<<深入浅出nodeJs>>,这一次,没有了初次的那种陌生羞涩感,有的只是对现有知识体系的扩充与强化,那么,我将用自己的语言来将这本书中的重要知识点一一记下来....

   第一章  概述

   node的起源及基本作用

   node的特点:

    1、异步I/O  (发送请求与处理请求互不干扰)

    2、事件与回调函数(node是事件驱动的)

    3、单线程

    4、共享平台 (linux和window)

   node的应用场景:

     1、I/O密集型

     2、分布式应用

   第二章  模块机制

    node是基于javascript,而javascript本身又是有许多先天不足的,而且它的使命是为了服务客户端,对于服务器端的支持 (模块系统,标准库,标准接口,缺乏包管理系统),简直就是不了了之,根本就不在意.好在,CommonJS规范面世了,它的使命就是 希望Javascript能够在任何地方运行.

   commonJS对模块的定义有三个部分,分别是:1、模块引用  2、模块定义  3、模块标识

   -require 

   -exports 

   -module 

    1、模块引用:     

var math = require (‘math‘);

    2、模块定义:

//math.js
exports.add = function (){
     var sum = 0;
     while (sum < 10){
        sum += 1;
   }
  return sum;
 } 

    然后通过,require来引入模块,就可以调用定义的属性和方法了.require == exports   

    3、模块标识:

    传递给require方法的参数 , 字符串或路径

   2.2 Node的模块实现

   在Node中引入模块,经历三个步骤:

   (1) 路径分析

   -- 核心模块 , fs http 

   -- 文件模块 , .或者..开始的相对路径文件模块

   -- 以/开头的绝对路径模块

   -- 非路径形式的内建模块,如自定义的connect模块

   (2) 文件定位

   -- 按路径

   -- 按后缀名, .js 、.node 、.json

   (3) 编译执行

   -- javascript 核心模块,经历标识符分析后,直接定位到内存中,比普通的文件模块从磁盘中查找要快得多

   -- c++内建模块,二进制、数组、内存,使用Binding()方法来协助加载内建模块

    如何编写: NODE_MODULE()最底层  --> process.binding 定义到内存中

    如何导出:层级依赖关系,内建c++    -->   核心模块Javascript  -->  文件模块

   2.3 包与NPM

   模块组织代码,包组织模块

   package.json描述文件,dependencies:依赖的包列表

   发布包, npm publish <folder> 

   2.4 前后端共用模块

  前后端模块的侧重点不同。前端需要重服务器加载,用到了异步加载模块,后端的模块都存在本地,用到了同步加载。

  CommodJs规范:同步模式,适用后端

  AMD规范:异步模式,适用前端

  CMD规范:国人自创,前两者的结合体,加载和定义类似AMD,模块导出和引入接近CommonJs规范的定义

  兼容多种规范的定义:

  为了让同一模块可以在前后端运行,实现如下:

  

  

   

   

  

 

 

 

 

 

    

   

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。