假如你是使用过或学习过PHP,你一定觉得很简单。session只不过是$_SESSION就可以搞得,这还不简单只是对一个key-value就能工作了。我觉得可以大多数的phper都是这样的,这是语言本身就赋予的。还学习个毛啊,我只要知道它是存数据,并且是服务端的就可以了。

 
我们noder则要坎坷一些,noder大部分自来于Front-end。session比较少会使用,如果我们也只是求个使用。也可以看看API就足够了,何必勉强自己。
 
凡事都应该从简单的入手,我们先来讲讲使用方法。自express4来,session从框架分离出来,所以它的名字现在叫express-session。(如果只是单纯做一个session,只不过是一个记录sessionID的对象)
 
app.use(session({secret: 'helloworld'}));
 
然后还要加上body-parser,这时phper又不懂了。这还要自己加呀,真是没用。没错,node的设计就是模块化,加上这个才能解析json和请求体。有了这些东西,就可以当一个普通对象使用了,像这样:
 
app.get('/',function(req,res){

       var session=req.session;
session.user = { id:1, name:"hello"}
})
 
更多方法可以到它的github主页上了解,好了。我们可以来看看这个session的源码,打开https://github.com/expressjs/session/blob/master/index.js。看了一下依赖,前面几个都是cookie相关,有一个叫crc的东西。这是一个完整性的验证算法,后面有时间再去学习。依赖的前半部分都是cookie相关,后面才是真正的session部分。

 
var cookie = require('cookie');  // 一个cookie的序列和反序列库
var crc = require('crc').crc32; // 完整验证算法
var debug = require('debug')('express-session'); // debug这个插件
var deprecate = require('depd')('express-session'); // 未知
var parseUrl = require('parseurl'); // 转化url
var uid = require('uid-safe').sync // 得到一个uid
, onHeaders = require('on-headers') // 写heasers的
, signature = require('cookie-signature') // cookie签名
/*---------------------Session----------------------*/
var Session = require('./session/session')
, MemoryStore = require('./session/memory')
, Cookie = require('./session/cookie')
, Store = require('./session/store')
 
看来我们先研究cookie是对的,session是依赖它的。在session这一部分,有4个文件。从名字上来看,分3个功能。一个是把session存内存,一个是跟cookie相关,一个是把session存数据库。下面我们来验证吧,come on。

[session篇]看源码学习session(一)的更多相关文章

  1. JDK源码学习系列03----StringBuffer+StringBuilder

                         JDK源码学习系列03----StringBuffer+StringBuilder 由于前面学习了StringBuffer和StringBuilder的父类A ...

  2. 从源码学习Java并发的锁是怎么维护内部线程队列的

    从源码学习Java并发的锁是怎么维护内部线程队列的 在上一篇文章中,凯哥对同步组件基础框架- AbstractQueuedSynchronizer(AQS)做了大概的介绍.我们知道AQS能够通过内置的 ...

  3. Shiro源码解析-Session篇

    上一篇Shiro源码解析-登录篇中提到了在登录验证成功后有对session的处理,但未详细分析,本文对此部分源码详细分析下. 1. 分析切入点:DefaultSecurityManger的login方 ...

  4. Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点

    Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...

  5. 基于Redis缓存的Session共享(附源码)

    基于Redis缓存的Session共享(附源码) 在上一篇文章中我们研究了Redis的安装及一些基本的缓存操作,今天我们就利用Redis缓存实现一个Session共享,基于.NET平台的Seesion ...

  6. JDK源码学习--String篇(二) 关于String采用final修饰的思考

    JDK源码学习String篇中,有一处错误,String类用final[不能被改变的]修饰,而我却写成静态的,感谢CTO-淼淼的指正. 风一样的码农提出的String为何采用final的设计,阅读JD ...

  7. Tomcat源码分析——Session管理分析(下)

    前言 在<TOMCAT源码分析——SESSION管理分析(上)>一文中我介绍了Session.Session管理器,还以StandardManager为例介绍了Session管理器的初始化 ...

  8. 源码学习系列之SpringBoot自动配置(篇一)

    源码学习系列之SpringBoot自动配置源码学习(篇一) ok,本博客尝试跟一下Springboot的自动配置源码,做一下笔记记录,自动配置是Springboot的一个很关键的特性,也容易被忽略的属 ...

  9. .NET Core 2.1 源码学习:看 SocketsHttpHandler 如何在异步方法中连接 Socket

    在 .NET Core 2.1 中,System.Net.Sockets 的性能有了很大的提升,最好的证明是 Kestrel 与 HttpClient 都改为使用 System.Net.Sockets ...

随机推荐

  1. Qt快速入门学习笔记(画图篇)

    1.Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类.其中QPainter用来执行 ...

  2. RT-thread内核之定时器管理

    一.前言 rt-thread采用软件定时器线程模式或硬件定时器中断模式来实现系统定时器管理.而rt-thread操作系统在默认情况下是采用的硬件定时器中断模式的方式,用户可以通过宏定义RT_USING ...

  3. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  4. NOI1997

    T1 竞赛排名 分析:模拟 超级大模拟,太弱了,写个模拟都要2个小时..写的又难看又麻烦..还需努力 var n,i,j,k:longint; t1:real; x,y:..,..] of real; ...

  5. 【转】c# 类反射简单操作

    转:http://www.jb51.net/article/25863.htm 首先建立一个测试的类  复制代码代码如下: public class MyClass { public int one ...

  6. BZOJ4516:[SDOI2016]生成魔咒——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4516 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一 ...

  7. pandas模块(数据分析)------Series

    pandas是一个强大的Python数据分析的工具包. pandas是基于NumPy构建的. pandas的主要功能: 具备对其功能的数据结构DataFrame.Series 集成时间序列功能 提供丰 ...

  8. [转载]php中sleep,flush,ob_flush函数介绍

    <?phpecho str_pad(" ",1024);//当上面这句没有的时候浏览器没有任何输出 直到sleep函数设定的时间结束 才会输出//原因如下面截图for ($i ...

  9. 基于MeanShift的目标跟踪算法及实现

    这次将介绍基于MeanShift的目标跟踪算法,首先谈谈简介,然后给出算法实现流程,最后实现了一个单目标跟踪的MeanShift算法[matlab/c两个版本] csdn贴公式比较烦,原谅我直接截图了 ...

  10. Uva-oj Product 大数乘法

    Product Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Des ...