beyond-lib

beyond lib cookie storage dateformat htmlencode htmldecode datediff eventbus

Usage no npm install needed!

<script type="module">
  import beyondLib from 'https://cdn.skypack.dev/beyond-lib';
</script>

README

beyond lib

从原先版本的 beyond 库中分离出来的函数库,当前版本包括以下几个部件:

  • assign
  • browser
  • dateDiff
  • dateFormat
  • htmlHelper
  • klass
  • namespace
  • storage
  • url

已经支持 typescript

安装

npm install beyond-lib --save

浏览器兼容性

IE11,Firefox 和 Chrome 最新版本

使用方式

es5 方式

//方式一
var beyondlib = require('beyond-lib')
var storage = beyondlib.storage

//方式二 推荐,避免全局加载
var storage = require('beyond-lib/lib/storage')

typescript 方式

//方式一

import * as storage from 'beyond-lib/lib/storage'

import {storage} from 'beyond-lib'

文档

browser parse

浏览器解析

import {parseBrowser} from 'beyond-lib/lib/browser'

var info = parse(userAguent)

info.isIE   //boolean
info.isIE8  //boolean
info.isIE9  //boolean
info.isIE10  //boolean
info.isIE11  //boolean
info.isIE678  //boolean
info.isEdge  //boolean
info.isChrome  //boolean
info.isFirefox  //boolean
info.isSafari  //boolean
info.isMicroMessenger //boolean 是否微信浏览器
info.name //browser name  like 'Chrome' , 'Firefox' , 'IE' ,'Opera' , 'Safari' , 'Edge'
info.version //browser version
info.isWindows  //boolean
info.isMac  //boolean
info.isiPhone  //boolean
info.isiPad  //boolean
info.isiPod  //boolean
info.isAndriod  //boolean
info.isLinux  //boolean

dateDiff

返回两个时间点之间的时间间隔,如果第一个参数代表的时间晚于第二个参数,返回正数,相等返回0,否则返回负数

import dateDiff  from 'beyond-lib/lib/dateDiff'
dateDiff.years(new Date(2008,01,01),new Date(2006,02,01))  // return 2
dateDiff.years(1170259200000,1141142400000)  // return 1
dateDiff.years(new Date(2006,01,01),new Date(2008,02,01))  // return -2
dateDiff.years(+new Date(2007,01,01),new Date(2007,02,01))  // return 0
dateDiff.years(+new Date(2007,01,01),new Date(2007,02,01))  // return 0

dateDiff.months(date1,date2)
dateDiff.months(timestamp1,timestamp2)
dateDiff.months(date1,timestamp2)

dateDiff.days(date1,date2)
dateDiff.hours(date1,date2)
dateDiff.minutes(date1,date2)
dateDiff.seconds(date1,date2)

dateFormat

返回格式化后的日期时间字符串

import dateFormat from 'beyond-lib/lib/dateFormat'
dateFormat(new Date(2000,00,01,12,12),'yyyy-MM-dd')  // 返回该时间戳的默认日期 2000.01.01
类型 说明
yyyy 4位数年份
yy 2位数年份
MM 2位数月份,如果是个位则前置0
M 月份
dd 2位数日期,不足前置0
d 日期
HH 2位数24制小时,不足2位前置0
H 24制小时
hh 2位数12制小时,不足2位前置0
h 12制小时
mm 2位数分钟,不足前置0
m 分钟
ss 2位数秒,不足前置0
s
S 毫秒
u 星期几,0-6,0表示周日

htmlHelper

import htmlHelper from 'beyond-lib/lib/htmlHelper'
htmlHelper.encodeHTML('<a href="#">hello&\'quote\'</a>')
htmlHelper.decodeHTML('&lt;a href=&quot;#&quot;&gt;hello&amp;&#039;quote&#039;&lt;/a&gt;')

storage

浏览器本地存储,包括 localStorage 和 cookie

import * as storage from 'beyond-lib/lib/storage'
//localstorage
storage.set('key',{value : 'value'})
storage.get('key')

//cookie,expire 单位为天
storage.setCookie('key','value')
storage.setCookie('key','value',expire,path,domain,secure)
storage.setRawCookie('key','value')
storage.setRawCookie('key','value',expire,path,domain,secure)
storage.getCookie('key')
storage.getRawCookie('key')
storage.removeCookie('key')

url

url解析

import {parseUrl} from 'beyond-lib/lib/url'

var info = parse('http://rob:abcd1234@1.2.3.4:9090/path/index.html?query1=test&silly=willy#test=hash&chucky=cheese')
info.protocol   // http
info.auth       // rob:abcd1234
info.user 		// rob
info.pass 		// abcd1234
info.host 		// 1.2.3.4:9090
info.port  		// 9090
info.hostname   // 1.2.3.4
info.hash  		// test=hash&chucky=cheese
info.search 	// ?query1=test&silly=willy
info.query 		// {query1 : 'test' , silly : 'willy'}
info.pathname   // /path/index.html
info.url 		// http://rob:abcd1234@1.2.3.4:9090/path/index.html?query1=test&silly=willy#test=hash&chucky=cheese

EventBus

自定义事件,事件派发

import EventBus from 'beyond-lib/lib/EventBus'
var e = EventBus

//绑定事件
let off = e.on('load',function(event){
    console.log('loaded')
    console.log(event.data)
})

//触发事件
e.trigger('load',data)


//解除绑定
off()


lock & delay

节流 和 防抖

// 节流
import lock from 'beyond-lib/lib/lock'
// 防抖
import delay from 'beyond-lib/lib/delay'

let fn = ()=> console.log('abc')

let lockFn = lock(fn,0.3)  
let delayFn = lock(fn,0.3)  

createStore & createProxy

缓存 remoter 接口和变更 remoter 接口返回,与 beyond-remote 搭配食用更香

import createStore,{createProxy} from 'beyond-lib/lib/createStore'
let i = 0
var remoter = function(){
    return new Promise(function(resolve,reject){
        resolve({data : ++i})
    })
}
let remoterWithCache = createStore(remoter)
remoterWithCache().then((res)=> console.log(res.data))  // 1
remoterWithCache().then((res)=> console.log(res.data))	// 1

let j = 0
var remoter2 = function(){
    return new Promise(function(resolve,reject){
        resolve({data : ++j})
    })
}
let remoterWithCache2 = createStore(remoter2,(res)=> res.data  )
remoterWithCache().then((data)=> console.log(data)) // 1
remoterWithCache().then((data)=> console.log(data))	// 1

let k = 0
var remoter3 = function(){
    return new Promise(function(resolve,reject){
        resolve({data : ++k})
    })
}
//createProxy 单纯对接口调用做数据过滤,不做缓存
let remoterWithProxy = createProxy(remoter3,(res)=> res.data  )
remoterWithProxy().then((data)=> console.log(data)) // 1
setTimeout(()=>{
    remoterWithProxy().then((data)=> console.log(data))	// 2
},1000)