node-kickstart 项目简介
发布于 3年前 作者 guilin 1456 次浏览

https://github.com/guileen/node-kickstart/

刚刚写了个雏形, 性能在理论上与node helloworld相同.

绝大部分请求的所覆盖的代码只有一句

http.createServer(function(req, res) {
    handlers[req.path](req, res); // <-- 绝大部分请求直接从hashtable中获取handler
}).listen(port);

以下文字来自于项目文档. 希望大家能够多发Pull Request

为什么要创建这个项目?

性能

大多数的nodejs项目使用express, 并使用express来创建项目的基本骨架. 但经过测试, 这样的代码运行效率较低. 本项目希望能够使代码的运行效率接近于node helloworld的性能.

结构

而若不使用类似express的框架, 直接编写使用http.createServer(fn)来编写代码, 则容易出现代码混乱难以维护的情况.

浏览器端渲染

传统开发方式使用服务器端模板渲染, 而模板渲染的损耗甚大. 模板文件静态化, 动态数据以API获取, 使用浏览器端渲染以分散服务器压力是非常有效的优化方案.

cookie, session, querystring, body 按需解析

express, connnect 中间件默认对所有请求解析cookie, 加载session, 解析querystring, 解析 body, 在许多的请求中, 这些解析并无必要.

工具

本项目可能会包含以下的工具

  • deploy
  • init.d
  • cluster

更新记录

4-22 加入res.staticCache方法, 本机测试性能是connect.staticCache的两倍. 中间遇到了些问题, 性能始终不够理想, 后发现, http.ServerResponse.setHeader / getHeader 性能较低, 改用 writeHead 解决. 另猜测, 读写时Buffer性能低于字符串, utf8性能低于binary.

在设计目标中: 本不应包含此方法, 所有静态内容当交由nginx处理. node仅负责处理动态API数据. 主要为了简化服务结构.

5 回复

是要做个轻量级的框架?还是库?

因为太轻量, 就是个example吧

叫做 Project Template 比较合适. 项目模板.

@guilin

  • 这样的模板通用性怎么样呢?耦合会不会很严重?这都是要注意的问题吧。
  • 以前也为了项目的可控不使用大型框架,自己用库DIY过,可是写着写着这样DIY出来的东西一般通用性就不高了,最后就只适合当前项目了。

@sumory 基本无耦合, 可以看代码, 正因为他是模板, 而非框架, 开发者拥有对执行流程的完全控制权.

回到顶部