jinbi-utils
Version:
这是一个实用工具库,包含了多个常用的功能模块。以下是各个模块的详细说明:
306 lines (280 loc) • 17 kB
HTML
<html class="default no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>jinbi-utils</title>
<meta name="description" content="Documentation for jinbi-utils">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="assets/css/main.css">
</head>
<body>
<header>
<div class="tsd-page-toolbar">
<div class="container">
<div class="table-wrap">
<div class="table-cell" id="tsd-search" data-index="assets/js/search.json" data-base=".">
<div class="field">
<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
<input id="tsd-search-field" type="text" />
</div>
<ul class="results">
<li class="state loading">Preparing search index...</li>
<li class="state failure">The search index is not available</li>
</ul>
<a href="index.html" class="title">jinbi-utils</a>
</div>
<div class="table-cell" id="tsd-widgets">
<div id="tsd-filter">
<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
<div class="tsd-filter-group">
<div class="tsd-select" id="tsd-filter-visibility">
<span class="tsd-select-label">All</span>
<ul class="tsd-select-list">
<li data-value="public">Public</li>
<li data-value="protected">Public/Protected</li>
<li data-value="private" class="selected">All</li>
</ul>
</div>
<input type="checkbox" id="tsd-filter-inherited" checked />
<label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
<input type="checkbox" id="tsd-filter-externals" checked />
<label class="tsd-widget" for="tsd-filter-externals">Externals</label>
</div>
</div>
<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
</div>
</div>
</div>
</div>
<div class="tsd-page-title">
<div class="container">
<ul class="tsd-breadcrumb">
<li>
<a href="globals.html">Globals</a>
</li>
</ul>
<h1>jinbi-utils</h1>
</div>
</div>
</header>
<div class="container container-main">
<div class="row">
<div class="col-8 col-content">
<div class="tsd-panel tsd-typography">
<a href="#jbwy-utils-使用说明" id="jbwy-utils-使用说明" style="color: inherit; text-decoration: none;">
<h1>jbwy-utils 使用说明</h1>
</a>
<p>这是一个实用工具库,包含了多个常用的功能模块。以下是各个模块的详细说明:</p>
<a href="#1-common-模块-commonindexts" id="1-common-模块-commonindexts" style="color: inherit; text-decoration: none;">
<h2>1. Common 模块 (common/index.ts)</h2>
</a>
<p>通用函数集合,提供了一些基础工具方法:</p>
<a href="#11-判空相关" id="11-判空相关" style="color: inherit; text-decoration: none;">
<h3>1.1 判空相关</h3>
</a>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { isEmpty } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/common'</span>
isEmpty(<span class="hljs-string">''</span>) <span class="hljs-comment">// 返回 true</span>
isEmpty(<span class="hljs-literal">null</span>) <span class="hljs-comment">// 返回 true</span>
isEmpty(<span class="hljs-literal">undefined</span>) <span class="hljs-comment">// 返回 true</span>
isEmpty(<span class="hljs-number">12323</span>) <span class="hljs-comment">// 返回 false</span></code></pre>
<a href="#12-环境判断" id="12-环境判断" style="color: inherit; text-decoration: none;">
<h3>1.2 环境判断</h3>
</a>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { getDeviceType, getEnvironment, getIsComWx } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/common'</span>
<span class="hljs-comment">// 获取设备类型</span>
<span class="hljs-keyword">const</span> deviceInfo = getDeviceType()
<span class="hljs-comment">// 返回: { isWxWork, isWeixin, isMobileScreen, isMobileAny }</span>
<span class="hljs-comment">// 获取运行环境</span>
<span class="hljs-keyword">const</span> env = getEnvironment()
<span class="hljs-comment">// 返回: 'com-wx-mobile' | 'com-wx-pc' | 'wx-mobile' | 'wx-pc' | 'other'</span>
<span class="hljs-comment">// 判断是否企业微信环境</span>
<span class="hljs-keyword">const</span> isComWx = getIsComWx()</code></pre>
<a href="#13-url参数处理" id="13-url参数处理" style="color: inherit; text-decoration: none;">
<h3>1.3 URL参数处理</h3>
</a>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { getQueryString, getQueryVariable } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/common'</span>
<span class="hljs-comment">// 获取URL参数</span>
getQueryString(url, <span class="hljs-string">'key'</span>)
getQueryVariable(<span class="hljs-string">'key'</span>)</code></pre>
<a href="#2-number-模块-numberindexts" id="2-number-模块-numberindexts" style="color: inherit; text-decoration: none;">
<h2>2. Number 模块 (number/index.ts)</h2>
</a>
<p>数字处理相关函数:</p>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { toThousands, formatFloat, ceil, floor } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/number'</span>
<span class="hljs-comment">// 千分位格式化</span>
toThousands(<span class="hljs-number">12345</span>) <span class="hljs-comment">// 返回 '12,345'</span>
toThousands(<span class="hljs-string">'12323.12'</span>) <span class="hljs-comment">// 返回 '12,323.12'</span>
<span class="hljs-comment">// 格式化小数位</span>
formatFloat(<span class="hljs-string">'1.2345'</span>) <span class="hljs-comment">// 返回 '1.23'</span>
formatFloat(<span class="hljs-string">'1.2345'</span>, <span class="hljs-number">3</span>) <span class="hljs-comment">// 返回 '1.235'</span>
<span class="hljs-comment">// 向上取整</span>
ceil(<span class="hljs-string">'1.234'</span>, <span class="hljs-number">2</span>) <span class="hljs-comment">// 返回 1.24</span>
<span class="hljs-comment">// 向下取整</span>
floor(<span class="hljs-string">'1.234'</span>, <span class="hljs-number">2</span>) <span class="hljs-comment">// 返回 1.23</span></code></pre>
<a href="#3-string-模块-stringindexts" id="3-string-模块-stringindexts" style="color: inherit; text-decoration: none;">
<h2>3. String 模块 (string/index.ts)</h2>
</a>
<p>字符串处理相关函数:</p>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { formatPhone, formatPhoneHide, formatBank } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/string'</span>
<span class="hljs-comment">// 格式化手机号</span>
formatPhone(<span class="hljs-string">'18211572781'</span>) <span class="hljs-comment">// 返回 '182 1157 2781'</span>
formatPhone(<span class="hljs-string">'18211572781'</span>, <span class="hljs-string">'-'</span>) <span class="hljs-comment">// 返回 '182-1157-2781'</span>
<span class="hljs-comment">// 隐藏手机号中间四位</span>
formatPhoneHide(<span class="hljs-string">'18211572781'</span>) <span class="hljs-comment">// 返回 '182****2781'</span>
<span class="hljs-comment">// 格式化银行卡号</span>
formatBank(<span class="hljs-string">'6282356862823568123'</span>) <span class="hljs-comment">// 返回 '6282 3568 6282 3568 123'</span></code></pre>
<a href="#4-validate-模块-validateindexts" id="4-validate-模块-validateindexts" style="color: inherit; text-decoration: none;">
<h2>4. Validate 模块 (validate/index.ts)</h2>
</a>
<p>提供各种验证函数:</p>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { isMobile, isEmail, isTelephone, isQQ } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/validate'</span>
<span class="hljs-comment">// 验证手机号</span>
isMobile(<span class="hljs-string">'13800138000'</span>) <span class="hljs-comment">// 返回 true/false</span>
<span class="hljs-comment">// 验证邮箱</span>
isEmail(<span class="hljs-string">'example@email.com'</span>) <span class="hljs-comment">// 返回 true/false</span>
<span class="hljs-comment">// 验证固定电话</span>
isTelephone(<span class="hljs-string">'0755-88888888'</span>) <span class="hljs-comment">// 返回 true/false</span>
<span class="hljs-comment">// 验证QQ号</span>
isQQ(<span class="hljs-string">'10000'</span>) <span class="hljs-comment">// 返回 true/false</span></code></pre>
<a href="#5-file-模块-fileindexts" id="5-file-模块-fileindexts" style="color: inherit; text-decoration: none;">
<h2>5. File 模块 (file/index.ts)</h2>
</a>
<p>文件处理相关函数:</p>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { calcFileSize, fileSizeFormat, compressImg } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/file'</span>
<span class="hljs-comment">// 计算文件大小</span>
calcFileSize(<span class="hljs-number">1024</span>) <span class="hljs-comment">// 返回 { size: 1, unit: 'KB' }</span>
<span class="hljs-comment">// 格式化文件大小</span>
fileSizeFormat(<span class="hljs-string">'1024'</span>, <span class="hljs-string">'KB'</span>) <span class="hljs-comment">// 返回 '1MB'</span>
<span class="hljs-comment">// 压缩图片</span>
compressImg(file, scaleCallback, qualityCallback)</code></pre>
<a href="#6-object-模块-objectindexts" id="6-object-模块-objectindexts" style="color: inherit; text-decoration: none;">
<h2>6. Object 模块 (object/index.ts)</h2>
</a>
<p>对象处理相关函数:</p>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { deepEqual, findNodePath } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/object'</span>
<span class="hljs-comment">// 深度比较两个对象是否相等</span>
deepEqual({<span class="hljs-attr">a</span>: <span class="hljs-number">10</span>}, {<span class="hljs-attr">a</span>: <span class="hljs-number">10</span>}) <span class="hljs-comment">// 返回 true</span>
deepEqual({<span class="hljs-attr">a</span>: <span class="hljs-number">10</span>}, {<span class="hljs-attr">a</span>: <span class="hljs-number">10</span>, <span class="hljs-attr">b</span>: <span class="hljs-number">20</span>}) <span class="hljs-comment">// 返回 false</span>
<span class="hljs-comment">// 查找树结构节点路径</span>
findNodePath(nodeValue, nodeKey, treeArray, childrenKey)</code></pre>
<a href="#7-wechat-work-模块-wecomwecomts" id="7-wechat-work-模块-wecomwecomts" style="color: inherit; text-decoration: none;">
<h2>7. WeChat Work 模块 (wecom/wecom.ts)</h2>
</a>
<p>企业微信相关功能:</p>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { initWWConfig } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/wecom'</span>
<span class="hljs-comment">// 初始化企业微信配置</span>
initWWConfig()</code></pre>
<a href="#8-middleware-模块-middleware" id="8-middleware-模块-middleware" style="color: inherit; text-decoration: none;">
<h2>8. middleware 模块 (middleware)</h2>
</a>
<p>中间件相关功能:</p>
<a href="#81-requestloggermiddwarets" id="81-requestloggermiddwarets" style="color: inherit; text-decoration: none;">
<h3>8.1 requestLogger.middware.ts</h3>
</a>
<p>日志服务 此插件支持使用了koa的nodejs项目
注意:(recordLogMiddleWare('project-plan-service'))需要传入项目名,日志文件会根据传入的项目名来 命名前缀</p>
<pre><code class="language-typescript"><span class="hljs-comment">// midway 项目接入方案 configuration.ts</span>
<span class="hljs-keyword">import</span> { recordLogMiddleWare } <span class="hljs-keyword">from</span> <span class="hljs-string">'jinbi-utils'</span>
<span class="hljs-keyword">export</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainConfiguration</span> </span>{
<span class="hljs-meta">@App</span>(<span class="hljs-string">'koa'</span>)
<span class="hljs-attr">app</span>: koa.Application;
<span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-title">onReady</span>(<span class="hljs-params"></span>)</span> {
<span class="hljs-comment">// </span>
<span class="hljs-built_in">this</span>.app.useMiddleware([recordLogMiddleWare(<span class="hljs-string">'project-plan-service'</span>)]);
}
}</code></pre>
<pre><code class="language-typescript"><span class="hljs-comment">// 只用了koa的nodejs项目接入方案 app.js</span>
<span class="hljs-keyword">import</span> { recordLogMiddleWare } <span class="hljs-keyword">from</span> <span class="hljs-string">'jinbi-utils'</span>
<span class="hljs-keyword">const</span> app = <span class="hljs-keyword">new</span> Koa();
app.use(bodyParser());
app.use(router.routes()).use(router.allowedMethods()).use(recordLogMiddleWare(<span class="hljs-string">'project-plan-service'</span>));</code></pre>
<a href="#安装和使用" id="安装和使用" style="color: inherit; text-decoration: none;">
<h2>安装和使用</h2>
</a>
<ol>
<li><p>安装依赖:</p>
<pre><code class="language-bash">npm install jbwy-utils</code></pre>
</li>
<li><p>引入使用:</p>
<pre><code class="language-typescript"><span class="hljs-keyword">import</span> { isEmpty } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/common'</span>
<span class="hljs-keyword">import</span> { formatPhone } <span class="hljs-keyword">from</span> <span class="hljs-string">'jbwy-utils/string'</span>
<span class="hljs-comment">// ... 按需引入其他功能</span></code></pre>
</li>
</ol>
<p>注意:所有模块都支持按需引入,可以只引入需要使用的功能,减少打包体积。</p>
</div>
</div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<nav class="tsd-navigation primary">
<ul>
<li class="globals ">
<a href="globals.html"><em>Globals</em></a>
</li>
<li class=" tsd-kind-module">
<a href="modules/common.html">Common</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/date.html">Date</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/file.html">File</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/number.html">Number</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/object.html">Object</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/print.html">Print</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/string.html">String</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/validate.html">Validate</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/constant.html">constant</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/http.html">http</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/iam.html">iam</a>
</li>
<li class=" tsd-kind-module">
<a href="modules/middleware.html">middleware</a>
</li>
</ul>
</nav>
<nav class="tsd-navigation secondary menu-sticky">
<ul class="before-current">
</ul>
</nav>
</div>
</div>
</div>
<footer class="with-border-bottom">
<div class="container">
<h2>Legend</h2>
<div class="tsd-legend-group">
<ul class="tsd-legend">
<li class="tsd-kind-object-literal"><span class="tsd-kind-icon">Object literal</span></li>
<li class="tsd-kind-function"><span class="tsd-kind-icon">Function</span></li>
<li class="tsd-kind-type-alias"><span class="tsd-kind-icon">Type alias</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-interface"><span class="tsd-kind-icon">Interface</span></li>
</ul>
</div>
</div>
</footer>
<div class="container tsd-generator">
<p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p>
</div>
<div class="overlay"></div>
<script src="assets/js/main.js"></script>
</body>
</html>