UNPKG

jinbi-utils

Version:

这是一个实用工具库,包含了多个常用的功能模块。以下是各个模块的详细说明:

306 lines (280 loc) 17 kB
<!doctype 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">&#x27;jbwy-utils/common&#x27;</span> isEmpty(<span class="hljs-string">&#x27;&#x27;</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">&#x27;jbwy-utils/common&#x27;</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">// 返回: &#x27;com-wx-mobile&#x27; | &#x27;com-wx-pc&#x27; | &#x27;wx-mobile&#x27; | &#x27;wx-pc&#x27; | &#x27;other&#x27;</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">&#x27;jbwy-utils/common&#x27;</span> <span class="hljs-comment">// 获取URL参数</span> getQueryString(url, <span class="hljs-string">&#x27;key&#x27;</span>) getQueryVariable(<span class="hljs-string">&#x27;key&#x27;</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">&#x27;jbwy-utils/number&#x27;</span> <span class="hljs-comment">// 千分位格式化</span> toThousands(<span class="hljs-number">12345</span>) <span class="hljs-comment">// 返回 &#x27;12,345&#x27;</span> toThousands(<span class="hljs-string">&#x27;12323.12&#x27;</span>) <span class="hljs-comment">// 返回 &#x27;12,323.12&#x27;</span> <span class="hljs-comment">// 格式化小数位</span> formatFloat(<span class="hljs-string">&#x27;1.2345&#x27;</span>) <span class="hljs-comment">// 返回 &#x27;1.23&#x27;</span> formatFloat(<span class="hljs-string">&#x27;1.2345&#x27;</span>, <span class="hljs-number">3</span>) <span class="hljs-comment">// 返回 &#x27;1.235&#x27;</span> <span class="hljs-comment">// 向上取整</span> ceil(<span class="hljs-string">&#x27;1.234&#x27;</span>, <span class="hljs-number">2</span>) <span class="hljs-comment">// 返回 1.24</span> <span class="hljs-comment">// 向下取整</span> floor(<span class="hljs-string">&#x27;1.234&#x27;</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">&#x27;jbwy-utils/string&#x27;</span> <span class="hljs-comment">// 格式化手机号</span> formatPhone(<span class="hljs-string">&#x27;18211572781&#x27;</span>) <span class="hljs-comment">// 返回 &#x27;182 1157 2781&#x27;</span> formatPhone(<span class="hljs-string">&#x27;18211572781&#x27;</span>, <span class="hljs-string">&#x27;-&#x27;</span>) <span class="hljs-comment">// 返回 &#x27;182-1157-2781&#x27;</span> <span class="hljs-comment">// 隐藏手机号中间四位</span> formatPhoneHide(<span class="hljs-string">&#x27;18211572781&#x27;</span>) <span class="hljs-comment">// 返回 &#x27;182****2781&#x27;</span> <span class="hljs-comment">// 格式化银行卡号</span> formatBank(<span class="hljs-string">&#x27;6282356862823568123&#x27;</span>) <span class="hljs-comment">// 返回 &#x27;6282 3568 6282 3568 123&#x27;</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">&#x27;jbwy-utils/validate&#x27;</span> <span class="hljs-comment">// 验证手机号</span> isMobile(<span class="hljs-string">&#x27;13800138000&#x27;</span>) <span class="hljs-comment">// 返回 true/false</span> <span class="hljs-comment">// 验证邮箱</span> isEmail(<span class="hljs-string">&#x27;example@email.com&#x27;</span>) <span class="hljs-comment">// 返回 true/false</span> <span class="hljs-comment">// 验证固定电话</span> isTelephone(<span class="hljs-string">&#x27;0755-88888888&#x27;</span>) <span class="hljs-comment">// 返回 true/false</span> <span class="hljs-comment">// 验证QQ号</span> isQQ(<span class="hljs-string">&#x27;10000&#x27;</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">&#x27;jbwy-utils/file&#x27;</span> <span class="hljs-comment">// 计算文件大小</span> calcFileSize(<span class="hljs-number">1024</span>) <span class="hljs-comment">// 返回 { size: 1, unit: &#x27;KB&#x27; }</span> <span class="hljs-comment">// 格式化文件大小</span> fileSizeFormat(<span class="hljs-string">&#x27;1024&#x27;</span>, <span class="hljs-string">&#x27;KB&#x27;</span>) <span class="hljs-comment">// 返回 &#x27;1MB&#x27;</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">&#x27;jbwy-utils/object&#x27;</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">&#x27;jbwy-utils/wecom&#x27;</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(&#39;project-plan-service&#39;))需要传入项目名,日志文件会根据传入的项目名来 命名前缀</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">&#x27;jinbi-utils&#x27;</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">&#x27;koa&#x27;</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">&#x27;project-plan-service&#x27;</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">&#x27;jinbi-utils&#x27;</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">&#x27;project-plan-service&#x27;</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">&#x27;jbwy-utils/common&#x27;</span> <span class="hljs-keyword">import</span> { formatPhone } <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;jbwy-utils/string&#x27;</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>