1.3.4 • Published 7 months ago

fastserv v1.3.4

Weekly downloads
-
License
MIT
Repository
-
Last release
7 months ago

Fastserv

fastserv是对node:http的轻度封装,用于快速构建简捷高效的web服务。自带简单的数据库功能,使用JsonCache将json文件作为数据缓存,实现数据高速查询。

安装教程

npm install fastserv

简单示例

// 引入fastserv框架
const FastServ = require('fastserv');
// 处理URL请求
FastServ.hand('/time', (req, res) => {
	res.html('当前时间: ' + (new Date()).toLocaleString());
});
// 创建fastserv服务 监听8848端口
FastServ.createServer().listen(8848);

配置说明

  • FastServ.config.develop 是否为开发模式,其值为true或者false(默认)
  • FastServ.config.static 静态文件目录地址,默认为./static目录
  • FastServ.config.maxage 静态文件最大缓存时间(秒),默认为86400秒
  • FastServ.config.expire SESSION过期时间(秒),默认为1800秒
  • FastServ.config.postmax POST数据最大长度(字节),默认102400Byte。文件上传不受此值限制。
  • FastServ.config.err404 页面404错误提示消息,默认为 Not Found
  • FastServ.config.https 是否采用https,默认为false。设置为true时,需要配置密钥文件信息。
  • FastServ.config.gztype 设置gzip的文件类型,默认将html、js、css、txt等进行gzip输出。

FastServ方法

createServer(options)

创建http/https服务

hand(path, handler, opt)

用于处理路径请求

  • path 请求路径地址,例如 /time
  • handler 处理请求的函数,传递req和res两个参数,分别是对原生http.createServer函数中request和response的扩展。
  • opt 默认为false,设置为true时表示对请求路径中包含path进行响应。

fileHand(req, res, path)

用户输出静态文件,将根据path名称选择对应的MIME格式输出,默认请求目录下的index.html文件

FastServ Response 扩展函数

html(data)

将data使用text/html格式一次性输出,data为字符串。

json(data)

将data使用application/json格式一次性输出,data为Object类型。

print(data, type = mime.txt, code = 200, charset = 'utf-8', encode = 'utf8')

一次性输出响应内容

  • data 需要输出的内容
  • type 输出的文件类型,默认为text/plain
  • stcode 状态码,默认是200
  • charset 网页编码,默认utf-8
  • encode 输出数据编码,默认utf8

redirect(url, stcode = 302)

重定向页面

  • url 跳转的网址
  • stcode 状态码,默认302

setCookie(name, value, path = '/')

设置Cookie键值,生存期直到浏览器关闭

render(fname, value)

读取并渲染模板,FastServ使用ES6模板语法

  • fname 模板文件路径名称
  • value 需要替换的数据,Object类型

FastServ Request 扩展属性

  • query GET请求参数值集合
  • body POST请求参数值集合
  • postlen POST请求数据大小
  • sessionID SESSION ID值

FastServ Request 扩展函数

getQuery(key, def = '')

获取请求参数的值,如果参数不存在则返回def值。GET和POST参数名称相同时,只返回GET参数值。

getCookie(name)

获取浏览器提交的Cookie值

upload(dir = './', accept = '', callback)

接收上传的文件。为了提高文件传输效率,目前仅支持单文件上传,并且不能与POST其他内容混合提交。

  • dir 上传路径名称
  • accept 允许上传文件的扩展名集合,默认不限制上传类型
  • callback(newName, oldName) 上传完成回调函数,传递文件新名称和原始名称

next()

一个请求可以有多个函数句柄排队处理,调用next函数,将使用队列中下一个句柄函数处理。

getSession(key)

获得session值。所有session键值使用JsonCache存储在内存中。

getSessionKey()

获得session对应Key值。

setSession(key, value)

设置session键值,不存在时则新建。

delSession()

清空session键值。

JsonCache

JsonCache对读写、解析、遍历、修改json进行了简单封装,实现简单数据库的功能。比较推荐的json格式为

{
    "1": {XXX}, 
    "2": {XXX},
    ......
}

JsonCache引入

const FastServ = require('fastserv');
let jc = new FastServ.JsonCache('demo.json');

JsonCache(parm, auto = false)

  • parm 类型为字符串时当作路径解析,读取文件并转换为对象;类型为Object时则直接当作对象使用。
  • auto 是否自动保存,默认为false。如果为true,将定时将内存对象进行序列化保存。

JsonCache属性

  • change 保存更新标记 true或false
  • fname JSON文件名
  • json JSON对象

JsonCache常用方法

  • have(key) 判断键名是否存在
  • get(key) 获得键值
  • set(key, value) 设置键值
  • del(key) 删除键值
  • store(callback, fname) 异步保存文件。callback为回调函数,传入参数err;fname 保存的文件名,默认为之前实例化时传入的文件名。
  • storeSync(fname) 同步保存文件。fname 保存的文件名,默认为之前实例化时传入的文件名。
  • insert(obj, key) 插入一条数据。key值默认为内部自增的数值。
  • each(callback, seq = -1) 遍历数据,返回DataSet。回调函数返回1,保存结果继续遍历;回调函数返回-1,终止遍历。seq 主键遍历顺序,默认-1降序遍历。
  • find({'k1': 'v1', 'k2': 'v2', ...}) 查找首个符合条件的记录,返回键名。各条件之间为并关系。

DataSet

DataSet是由JsonCache each方法生成的,用于对数据集合进一步处理,常用于处理分页请求。

  • each(callback, begin, limit) 回调函数返回-1则终止遍历,begin为遍历的起始值,limit为最大增幅值。
  • sort(field, seq = -1) 对数据集进行排序,field为排序的key名,seq默认-1,降序排列。

Template

Fastserv对ES6模板功能进行了简单扩展,实现了最基础的模板引擎

Template 引入

const FastServ = require('fastserv');
let tpl = new FastServ.Template('file.html');

Template(fname, cache = false)

  • fname 模板文件名称
  • cache 是否缓存原始模板,默认为false。设置为true时,模板存放于内存中,节省读取模板文件的开销。

Template 语法扩展

  1. #{XXX} 表示嵌入XXX文件,合成模板文件。
<div>
#{header.html}
</div>
  1. ${=value} 表示安全使用value,即使value不存时也不会报错。

Template 方法

  1. mixObj(obj = {}) 将模板数据与Object对象进行混合,得到渲染后的数据(字符串)。例如:
今年${age}岁

经过 tpl.mixObj({'age': 20}) 结果为:

今年20岁
  1. mixArr(arr = [], pre = 'item', index = 'index') 将模板数据与Array对象进行混合,得到渲染后的数据(字符串)
  • arr 为对象数组,{...},{...}
  • pre 模板中引用对象的名称,默认是item
  • index 模板中引用元素索引值,默认是index
姓名:${item.name},年龄${item.age}\n

经过 tpl.mixArr({'name': '张三', age: 20}, {'name': '李四', age: 22}) 结果为:

姓名:张三,年龄20\n
姓名:李四,年龄22\n
  1. getToday(sign = '-') 静态方法 获得当前日期 年-月-日
  • sign 连接符 默认是 -
  1. getCurTime(sign = ':') 静态方法 获得当前时间 时:分:秒
  • sign 连接符 默认是 :

关于Fastserv

Fastserv项目网址

如果您在使用过程中发现BUG或有好的建议,请发送至邮箱fuzhanlun@126.com

1.3.4

7 months ago

1.3.3

1 year ago

1.3.2

1 year ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.10

2 years ago

1.2.11

2 years ago

1.2.9

2 years ago

1.2.8

3 years ago

1.2.7

3 years ago

1.2.6

3 years ago

1.2.5

3 years ago

1.2.4

3 years ago

1.2.3

3 years ago

1.2.2

3 years ago

1.2.0

3 years ago

1.1.1

3 years ago

1.0.2

3 years ago

1.1.0

3 years ago

1.2.1

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago