源码阅读

  • nodercms是一个使用express+mongoose编写的cms。整个项目目录结构是一个典型的Express应用的项目结构,项目的后端代码量为7000行左右。
    项目对于新手值得学习的地方主要在于
    1、将routes和controllers的关系通过一个json对象指定有效的将routes和controllers分离开了
    2、使用log4js保存整个项目的日志,并且将日志分为access、database、errors、system四类,并且按照日期保存为单独文件
    3、将对mongodb的model的操作划分为单独的services,不至于controllers过于臃肿,同时能够有效解耦




  • node-mkdirp是一个linux命令 mkdir -p的node版本,也就是创建多级目录。node-mkdirp值得新手学习的地方在于学习对于错误码的利用和基本的API使用。我曾经也写过一个创建多级目录的方法,不过自己都只是通过split方法对目录分隔开后逐层判断是否存在,再创建。node-mkdirp的方式则是通过fs.mkdir的错误码来判断,挺巧妙的。

    var path = require('path');
    var fs = require('fs');
    var _0777 = parseInt('0777', 8);
    
    module.exports = mkdirP.mkdirp
  • pseudomap项目是一个ES6之前使用Map数据结构的一个工具库,map的特点在于拓展了对象的键只能是字符串的短板,在ES6之前很容易想到使用一个构造函数来实现,同时对于每一个键值关系使用一个新的对象存储,this.key=key;this.value=value的形式。适合JavaScript初学者学习构造函数的使用,同时大神的代码质量还是非常值得学习的,大神终究是大神!!!

    var hasOwnProperty = Object.prototype.hasOwnProperty
    
    module.exports = PseudoMap
    
    function PseudoMap (set)

  • cookie-parser相信使用过Express的人肯定使用过,cookie-parser是一个Express解析cookie的中间件,其中关于signed cookie的疑问可以在 What are “signed” cookies in connect/expressjs?这里找到。(等我智商涨一点再来看了)。
    req本质是inComingMessage,cookie-parser所做的工作是将cookie从header中转移到req中,并且转化为json对象。

    大神片段:

    var secrets = !secret || Array.isArray(secret)
             

  • resource-router-middleware是一个提供restful API的Express中间件,由preact作者developit开发。
    一个简单使用案例就是:

    const resource = require('resource-router-middleware');
    let users = [];
    const huruji = {
        id:12,
        name: 'huruji',
        age: 12,
        sex: 'man'
    };
    const grey = {
        id: 13,
        name: 'grey',
        age: 12,