fastserv v1.3.4
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 语法扩展
- #{XXX} 表示嵌入XXX文件,合成模板文件。
<div>
#{header.html}
</div>
- ${=value} 表示安全使用value,即使value不存时也不会报错。
Template 方法
- mixObj(obj = {}) 将模板数据与Object对象进行混合,得到渲染后的数据(字符串)。例如:
今年${age}岁
经过 tpl.mixObj({'age': 20}) 结果为:
今年20岁
- 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
- getToday(sign = '-') 静态方法 获得当前日期 年-月-日
- sign 连接符 默认是 -
- getCurTime(sign = ':') 静态方法 获得当前时间 时:分:秒
- sign 连接符 默认是 :
关于Fastserv
如果您在使用过程中发现BUG或有好的建议,请发送至邮箱fuzhanlun@126.com
7 months ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago