地址
和 zzy-javascript-devtools 有什么差别?
- 算是
zzy-javascript-devtools
的重构版本,支持之前的所有内容
- 对内(开发):
- 使用rollup重构打包逻辑
- 全自动化打包生成
- 自动生成更新日志以及版本号
- 全自动化生成对应包的readme.md文件
- 文件分级更加明确
- 扩展性提升
- 统一开发格式
- 对外(使用):
- 开放cjs模式
- readmd.md文件更加合理,格式统一
- 新增对vue的支持,以及纯工具包,避免额外开销(分三个包分别按项目决定用哪个)
- 未来迭代逐渐开放对hooks函数的支持
渣渣宇的开发工具包@react
安装
npm i @utils/react -S
yarn add @utils/react -S
使用
import { isPhone, bottomVisible, Img } from '@utils/react'
isPhone(13412341234)
bottomVisible()
<Img></Img>
更新日志
- 2023-12-23 version:1.0.1
- 2023-12-21 version:1.0.0
包简述
devtools
JSB_jsMethod
JSB_init
- JSB系列方法初始化
- 调用JSB_后缀的方法前必须先调用此方法进行初始化
JSB_init()
allEquals
- 全等判断
- 在两个变量之间进行深度比较以确定它们是否全等。
allEquals({ a: [2, { e: 3 }], b: [4], c: 'foo' }, { a: [2, { e: 3 }], b: [4], c: 'foo' });
copyToClipboard
copyToClipboard('Lorem ipsum')
bottomVisible
JSB_appMethod
deepClone
const o = {
a: [
{
b: 1
}
]
}
const cloneO = deepClone(o)
debounce
const fn = () => {
++a
}
const debounceFn = debounce(fn, 300)
changeTimeYear
- 接受 ms 级的时间戳
- 时间格式转化年
- 个位自动补零
changeTimeYear(new Date().valueOf())
deleteHTMLTags
const html = 'i am zzy'
const pureHTMLCon = deleteHTMLTags(html)
elementIsVisibleInViewport
elementIsVisibleInViewport(el);
elementIsVisibleInViewport(el, true);
detectDeviceType
exitFullscreen
formatMoney
formatMoney(12345678)
formateSeconds
formateSeconds(86400)
formateSeconds(3600)
formatFileSize
formatFileSize(300421)
formatFileSize(3004221221)
getColonTimeFromDate
getColonTimeFromDate3(new Date())
getDomStyle
getDomStyle(document.querySelector('p'), 'font-size')
generateTree
const comments = [
{ id: 1, parentId: null },
{ id: 2, parentId: 1 },
{ id: 3, parentId: 1 },
{ id: 4, parentId: 2 },
{ id: 5, parentId: 4 }
];
generateTree(comments)
{
id: 1,
children: [
{
id: 2,
children: [
{
id: 4,
children: [
{
id: 5,
children: []
}
]
}
]
},
{
id: 3,
children: []
}
]
}
formatNowTime
formatNowTime(now Date().valueOf())
getScrollPosition
getScrollPosition();
getUrlData
const url = https://www.baidu.com/s?ie=UTF-8&wd=github
getUrlData(url)
infinityScrolling
- 无限滚动
- 回调第一行必须设置 infinityScrollIng 的bol 属性为 false,意味着已经进程已经开始,必须等待结束(失败或者成功)才可以重新为true,才可以进行下一次的回调触发
- react具体实现组件为 ScrollLoadingBar
devtools.infinityScrollIng(document.querySelector('.bottomScrollBar'), ()=>{
devtools.infinityScrollIng.bol = false
devtools.infinityScrollIng.bol = true
})
isAndroidPlatform
isBrowserTabFocused
isEmptyObject
if(isEmptyObject(obj)) return
lazyImage
- Img懒加载实现
- 需要设置html中的img src为空,data-src属性为目标路径
- 必须等待加载目标的 data-src 属性赋值完毕,再执行此方法
<img src={null} data-src="targetSrc" className='lazyImg' />
lazyImage('lazyImg')
preventScroll
- 固定滚动条
- 功能描述:一些业务场景,如弹框出现时,需要禁止页面滚动,这是兼容安卓和 iOS 禁止页面滚动的解决方案
preventScroll
launchFullscreen
launchFullscreen(document.querySelectorById('test'))
recoverScroll
- 恢复滚动条
- 如果配合 preventScroll 方法使用需要现将 固定前的滚动条高度记录,再恢复时赋值给 recoverScroll 方法
recoverScroll(200) y200的高度恢复,相当于滚动至200
scrollToTop
- 平滑滚动至顶部
- 该代码段可用于平滑滚动到当前页面的顶部。
rewirteLog
- 不显示 console.log
- 重写log为空函数
setDomRem
- rem实现
- rem*16px
- 以蓝湖rem设置为标准 设置16px的rem就是 *8
setDomRem(16) 1:32(蓝狐设计图)
smoothScroll
- 滚动到指定元素区域
- 该代码段可将指定元素平滑滚动到浏览器窗口的可见区域。
smoothScroll11('#fooBar')
typeOf
- 增强版typeOf
- typeOf 关键字对于null,date 都会认为是Object,不准确, 使用Object.prototype.toString.call
strTrim
const str = ' 1233 4'
strTrim(str, 1)
throttle
const fn = (n) => {
a += n
}
const throttleFn = throttle((n) => fn(n))
regModules
isAccountNumber
- 验证银行卡号
- 10到30位, 覆盖对公/私账户, 参考微信支付
isCreditCode
isColor16
isEmail
isExternal
isEnglish
isHttpAndPort
isImageUrl
isIdCard
isMoney
isLandlineTelephone
- 验证座机电话(国内),如: 0341-86091234
isIMEI
isName
isPassword
- 密码校验
- a-z A-Z 0-9 long 6 < val < 21
isPhone
isPassport
isPhoneStrict
- 验证手机号中国(严谨), 根据工信部2019年最新公布的手机号段
isPostcode
isThunderLink
isTrainNum
isUrl
isVersion
isWeChatNum
- 验证微信号
- 6至20位,以字母开头,字母,数字,减号,下划线
isVideoUrl
isWindowsFilePath
isWindowsFolderPath
isInteger
isLicensePlateNumber
components
ErrorBoundary
- 错误边界
- 请在App.js中用此组件将 Route组件包裹即可展示错误之后的UI信息
- 它在渲染期间、生命周期方法和整个组件树的构造函数中捕获错误
- 无法捕获 事件处理,异步代码等错误
NoData
Img
- 此组件用于图片懒加载,配合 zzy-javascript-devtools - devtools.lazyImage() 方法使用>
- 必须等待加载目标的 data-src 属性赋值完毕,再执行此方法
exmaple:
ScrollLoadingBar
- 无限滚动触发块
- 直接链接触发事件即可
- 需要在触发事件内结束时 赋值 infinityScrolling.bol = true
exmaple:
<ScrollLoadingBar
getMoreData={() => (pageIndex > 1 ? getDoctorList(true) : null)}
getDataBol={doctorHasMore}
></ScrollLoadingBar>
TopBar
exmaple:
<TopBar arrowBack={back} title="首页" />