febs 库是一些常用的工具的合集;
febs是在citong@2.0.8基础上进行开发, citong库已停止更新
Install
Use npm to install:
npm install febs --save
copy directory node_modules/febs/dist/febs
to client

febs web库分为客户端与服务器端;
-
通用于客户端与服务端的库如下
-
客户端独有库
-
服务端独有库
说明
客户端
使用时需依赖 jquery
, jquery.form
这个两个库.
<script src="jquery.min.js"></script>
<script src="jquery.form.min.js"></script>
<script src="febs.min.js" charset="UTF-8"></script>
- 定义了
window.requestAnimationFrame
和window.cancelAnimationFrame
方法,可进行动画帧操作. - 对浏览器添加了
Promise
支持.
服务端
服务端定义了如下一些全局变量
name | description |
---|
__line | 当前所在行, 可以配合 __filename 定位错误日志 |
__debug | 判断当前的环境process.env.NODE_ENV是否为development, 如对此值设置后, 使用设置后的值. |
console.debug | development 环境下输出日志 |
其他
- 函数调用使用
类名.xxx
的方式调用, 例如: febs.utils.browserIsMobile()
- 实现了部分控件, 网页模板在
febs/client/partials
路径下, 使用handlebar
实现
utils
utils库包含了一些常用的函数, 如判断浏览器是否是手机/时间字符串格式化等.
febs.utils.sleep(ms)
febs.utils.browserIsMobile()
febs.utils.browserIsIOS()
febs.utils.browserIsPhone()
febs.utils.browserIsWeixin()
febs.utils.browserIsSupportHtml5() `服务端不支持`
febs.utils.getTimeString(time, fmt, weekFmt)
febs.utils.getTimeStringFromNow(time, strFmt);
febs.utils.getDate(strDate)
febs.utils.mergeMap(...)
febs.utils.isNull(e)
febs.utils.denodeify(fn, self, argumentCount) `仅服务端`
febs.utils.bigint_check(v)
febs.utils.bigint_add(a, b)
febs.utils.bigint_minus(a, b)
febs.utils.bigint_dividedBy(a, b)
febs.utils.bigint_mul(a, b)
febs.utils.bigint_equal(a, b)
febs.utils.bigint_more_than(a, b)
febs.utils.bigint_more_than_e(a, b)
febs.utils.bigint_less_than(a, b)
febs.utils.bigint_less_than_e(a, b)
febs.utils.bigint_toFixed(a, fixed)
string
string 提供了一些js string对象缺少且较常使用的函数.
febs.string.isPhoneMobile(str)
febs.string.isEmpty(s)
febs.string.getByteSize(s)
febs.string.replace(str, strSrc, strDest)
crypt
目前提供了uuid,crc32,base64.
febs.crypt.uuid()
febs.crypt.crc32( str, crc )
febs.crypt.crc32_file(fileObj, cb) `客户端`
febs.crypt.crc32_file(filename) `服务端`
febs.crypt.base64_encode(arrByte)
febs.crypt.base64_decode(strBase64)
nav
导航是以ajax的方式进行页面切换
febs.nav.init(navCallback, urlObjEquelCallback, options)
febs.nav.go(urlObject)
febs.nav.push(urlObject)
febs.nav.refresh()
febs.nav.refresh_elem(elem, url);
febs.nav.ajax( option )
febs.nav.url(anchor)
net
net封装了浏览器通信方法: ajax, fetch, jsonp
febs.net.ajax(option)
febs.net.fetch(url, option)
febs.net.jsonp(url, option)
exception
定义了服务端常用的错误类型.
febs.code = code;
febs.msg = msg;
febs.filename = filename;
febs.line = line;
febs.exception.ERROR
febs.exception.PARAM
febs.exception.OUT_OF_RANGE
异常类如下
febs.exception(msg, code, filename, line)
file
febs.file.dirIsExist(dir)
febs.file.dirAssure(dir)
febs.file.dirCopy(src, dest, callback)
febs.file.dirRemoveRecursive(dir)
febs.file.dirExplorer(dir)
febs.file.dirExplorerFilesRecursive(dir, pattern)
febs.file.dirExplorerDirsRecursive(dir, pattern)
febs.file.fileSize(file)
febs.file.fileIsExist(file)
febs.file.fileCopy(src, dest, callback)
febs.file.fileRemove(file)
controls
loading

febs.controls.loading_show(text, timeout)
febs.controls.loading_show_text(textArray, changeTextCB, hideCB)
febs.controls.loading_hide()
page

febs.controls.page_init(elem, curPage, pageCount, totalCount, pageCallback)
upload
客户端调用如下接口上传文件.
服务端调用如下接口接收文件.
async function accept(ctx, conditionCB)
例子
后台:
exports.upload = async function(ctx, next)
{
var r = await require('febs').controls.upload.accept(ctx, async function(data, filesize, filename, filemimeType){
console.log(filesize);
console.log(filename);
console.log(filemimeType);
return 'tempPath/temp.filename';
});
};
前台:
<script type="text/javascript" charset="utf-8" src="/jquery/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="/jquery/jquery.form.min.js"></script>
<script type="text/javascript">
function upload() {
febs.controls.upload({
formObj: $('#fileForm'),
fileObj: $("#filec"),
uploadUrl: '/uploadFile',
finishCB: function(err, fileObj, serverData){
console.log(serverData);
},
progressCB: function(fileObj, percent){
console.log(percent);
})
});
}
</script>
<form method="post" role="form" enctype="multipart/form-data" id="fileForm">
<input id="filec" type="file" name="file" onchange="javascript:upload()" multiple>
</form>