国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Licia 支持小程序的 JS 工具庫

DangoSky / 1804人閱讀

摘要:注模塊名右邊有小程序圖標即表明可以在小程序中使用。轉(zhuǎn)義字符串為合法的字符串字面量。轉(zhuǎn)義特殊字符用于構(gòu)造函數(shù)。使構(gòu)造函數(shù)繼承另一個構(gòu)造函數(shù)原型鏈上的方法。

導語

Licia 是一套在開發(fā)中實踐積累起來的實用 JavaScript 工具庫。該庫目前擁有超過 300 個模塊,同時支持瀏覽器、node 及小程序運行環(huán)境,提供了包括日期格式化、md5、顏色轉(zhuǎn)換等實用模塊,可以極大地提高開發(fā)效率。

前言

因為小程序運行的是 JavaScript 代碼,傳統(tǒng)前端所使用的 JS 庫理應也能夠被用在小程序中才對。然而,經(jīng)過實際測試,你會發(fā)現(xiàn)有相當一部分 npm 包是無法直接在小程序中跑起來的。比如前端工程師十分常用的 lodash,在小程序中引入會報錯。

為什么會這樣?

主要原因就是絕大部分庫的開發(fā)者在設(shè)計時只會考慮兩種運行環(huán)境,瀏覽器和 node,而小程序并不會在其考慮范圍內(nèi)。因此,只要開發(fā)者的 JS 代碼使用了只有瀏覽器與 node 中才有的接口,如 DOM 操作、文件讀寫等,該庫就不能正常地運行在小程序環(huán)境中。除此之外,假如他們使用了小程序禁用的功能,例如全局變量與動態(tài)代碼執(zhí)行,這時候代碼跑在小程序環(huán)境也會出錯。

使用 使用 npm 安裝

1、 安裝 npm 包

npm i miniprogram-licia --save

2、點擊開發(fā)者工具中的菜單欄:工具 --> 構(gòu)建 npm

3、直接在代碼中引入使用

const licia = require("miniprogram-licia");

licia.md5("licia"); // -> "e59f337d85e9a467f1783fab282a41d0"
licia.safeGet({a: {b: 1}}, "a.b"); // -> 1
生成定制化 util.js

使用 npm 包的方式會將所有功能引入到代碼包中,大概會增加 100 kb 的大小。如果你只想引入所需腳本,可以使用在線工具生成定制化 util 庫。

1、訪問 https://licia.liriliri.io/builder.html

2、輸入需要的模塊名,點擊生成下載 util.js。

3、將生成的工具庫拷貝到小程序項目任意目錄下然后直接引入使用。

const util = require("../lib/util");

util.wx.getStorage({
  key: "test"
}).then(res => console.log(res.data));
優(yōu)點

1、目前擁有 270 多個模塊可在小程序中正常運行,而 underscore 只有 120 個函數(shù)左右。

2、與 lodash 相比增加了不少更加實用的函數(shù),比如 md5、atob、btoa、Emitter、dateFormat 等。

3、可以直接在小程序中引入運行,不像 lodash 需要進行一定的修改才能正常跑在小程序中。

4、定制化生成可以使用更小體積的工具庫,這在限制了代碼包大小的小程序中十分有用。

附錄

這里只簡單列出函數(shù)及其功能介紹,詳細的用法請訪問官網(wǎng)查看。

注:模塊名右邊有小程序圖標即表明可以在小程序中使用。

Class: 創(chuàng)建 JavaScript 類。

Color: 顏色轉(zhuǎn)換。

Dispatcher: Flux 調(diào)度器。

Emitter: 提供觀察者模式的 Event emitter 類。

Enum: Enum 類實現(xiàn)。

JsonTransformer: JSON 轉(zhuǎn)換器。

LinkedList: 雙向鏈表實現(xiàn)。

Logger: 帶日志級別的簡單日志庫。

Lru: 簡單 LRU 緩存。

Promise: 輕量 Promise 實現(xiàn)。

PseudoMap: 類似 es6 的 Map,不支持遍歷器。

Queue: 隊列數(shù)據(jù)結(jié)構(gòu)。

QuickLru: 不使用鏈表的 LRU 實現(xiàn)。

ReduceStore: 簡單類 redux 狀態(tài)管理。

Stack: 棧數(shù)據(jù)結(jié)構(gòu)。

State: 簡單狀態(tài)機。

Store: 內(nèi)存存儲。

Tween: JavaScript 補間動畫庫。

Url: 簡單 url 操作庫。

Validator: 對象屬性值校驗。

abbrev: 計算字符串集的縮寫集合。

after: 創(chuàng)建一個函數(shù),只有在調(diào)用 n 次后才會調(diào)用一次。

allKeys: 獲取對象的所有鍵名,包括自身的及繼承的。

arrToMap: 將字符串列表轉(zhuǎn)換為映射。

atob: window.atob,運行在 node 環(huán)境時使用 Buffer 進行模擬。

average: 獲取數(shù)字的平均值。

base64: base64 編解碼。

before: 創(chuàng)建一個函數(shù),只能調(diào)用少于 n 次。

binarySearch: 二分查找實現(xiàn)。

bind: 創(chuàng)建一個綁定到指定對象的函數(shù)。

btoa: window.btoa,運行在 node 環(huán)境時使用 Buffer 進行模擬。

bubbleSort: 冒泡排序?qū)崿F(xiàn)。

bytesToStr: 將字節(jié)數(shù)組轉(zhuǎn)換為字符串。

callbackify: 將返回 Promise 的函數(shù)轉(zhuǎn)換為使用回調(diào)的函數(shù)。

camelCase: 將字符串轉(zhuǎn)換為駝峰式。

capitalize: 將字符串的第一個字符轉(zhuǎn)換為大寫,其余字符轉(zhuǎn)換為小寫。

castPath: 將值轉(zhuǎn)換為屬性路徑數(shù)組。

centerAlign: 字符串居中。

char: 根據(jù)指定的整數(shù)返回 unicode 編碼為該整數(shù)的字符。

chunk: 將數(shù)組拆分為指定長度的子數(shù)組。

clamp: 將數(shù)字限定于指定區(qū)間。

className: 合并 class。

clone: 對指定對象進行淺復制。

cloneDeep: 深復制。

cmpVersion: 比較版本號。

combine: 創(chuàng)建一個數(shù)組,用一個數(shù)組的值作為其鍵名,另一個數(shù)組的值作為其值。

compact: 返回數(shù)組的拷貝并移除其中的虛值。

compose: 將多個函數(shù)組合成一個函數(shù)。

concat: 將多個數(shù)組合并成一個數(shù)組。

contain: 檢查數(shù)組中是否有指定值。

convertBase: 對數(shù)字進行進制轉(zhuǎn)換。

createAssigner: 用于創(chuàng)建 extend,extendOwn 和 defaults 等模塊。

curry: 函數(shù)柯里化。

dateFormat: 簡單日期格式化。

debounce: 返回函數(shù)的防反跳版本。

decodeUriComponent: 類似 decodeURIComponent 函數(shù),只是輸入不合法時不拋出錯誤并盡可能地對其進行解碼。

defaults: 填充對象的默認值。

define: 定義一個模塊,需要跟 use 模塊配合使用。

defineProp: Object.defineProperty(defineProperties) 的快捷方式。

delay: 在指定時長后執(zhí)行函數(shù)。

detectBrowser: 使用 ua 檢測瀏覽器信息。

detectMocha: 檢測是否有 mocha 測試框架在運行。

detectOs: 使用 ua 檢測操作系統(tǒng)。

difference: 創(chuàng)建一個數(shù)組,該數(shù)組的元素不存在于給定的其它數(shù)組中。

dotCase: 將字符串轉(zhuǎn)換為點式。

each: 遍歷集合中的所有元素,用每個元素當做參數(shù)調(diào)用迭代器。

easing: 緩動函數(shù),參考 http://jqueryui.com/ 。

endWith: 檢查字符串是否以指定字符串結(jié)尾。

escape: 轉(zhuǎn)義 HTML 字符串,替換 &,<,>,",`,和 " 字符。

escapeJsStr: 轉(zhuǎn)義字符串為合法的 JavaScript 字符串字面量。

escapeRegExp: 轉(zhuǎn)義特殊字符用于 RegExp 構(gòu)造函數(shù)。

every: 檢查是否集合中的所有元素都能通過真值檢測。

extend: 復制多個對象中的所有屬性到目標對象上。

extendDeep: 類似 extend,但會遞歸進行擴展。

extendOwn: 類似 extend,但只復制自己的屬性,不包括原型鏈上的屬性。

extractBlockCmts: 從源碼中提取塊注釋。

extractUrls: 從文本中提取 url。

fibonacci: 計算斐波那契數(shù)列中某位數(shù)字。

fileSize: 將字節(jié)數(shù)轉(zhuǎn)換為易于閱讀的形式。

fill: 在數(shù)組指定位置填充指定值。

filter: 遍歷集合中的每個元素,返回所有通過真值檢測的元素組成的數(shù)組。

find: 找到集合中第一個通過真值檢測的元素。

findIdx: 返回第一個通過真值檢測元素在數(shù)組中的位置。

findKey: 返回對象中第一個通過真值檢測的屬性鍵名。

findLastIdx: 同 findIdx,只是查找順序改為從后往前。

flatten: 遞歸拍平數(shù)組。

fnParams: 獲取函數(shù)的參數(shù)名列表。

format: 使用類似于 printf 的方式來格式化字符串。

fraction: 轉(zhuǎn)換數(shù)字為分數(shù)形式。

freeze: Object.freeze 的快捷方式。

freezeDeep: 遞歸進行 Object.freeze。

gcd: 使用歐幾里德算法求最大公約數(shù)。

getUrlParam: 獲取 url 參數(shù)值。

has: 檢查屬性是否是對象自身的屬性(原型鏈上的不算)。

hslToRgb: 將 hsl 格式的顏色值轉(zhuǎn)換為 rgb 格式。

identity: 返回傳入的第一個參數(shù)。

idxOf: 返回指定值第一次在數(shù)組中出現(xiàn)的位置。

indent: 對文本的每一行進行縮進處理。

inherits: 使構(gòu)造函數(shù)繼承另一個構(gòu)造函數(shù)原型鏈上的方法。

insertionSort: 插入排序?qū)崿F(xiàn)。

intersect: 計算所有數(shù)組的交集。

intersectRange: 計算兩個區(qū)間的交集。

invert: 生成一個新對象,該對象的鍵名和鍵值進行調(diào)換。

isAbsoluteUrl: 檢查 url 是否是絕對地址。

isArgs: 檢查值是否是參數(shù)類型。

isArr: 檢查值是否是數(shù)組類型。

isArrBuffer: 檢查值是否是 ArrayBuffer 類型。

isArrLike: 檢查值是否是類數(shù)組對象。

isBool: 檢查值是否是布爾類型。

isBrowser: 檢測是否運行于瀏覽器環(huán)境。

isClose: 檢查兩個數(shù)字是否近似相等。

isDataUrl: 檢查字符串是否是有效的 Data Url。

isDate: 檢查值是否是 Date 類型。

isEmail: 簡單檢查值是否是合法的郵件地址。

isEmpty: 檢查值是否是空對象或空數(shù)組。

isEqual: 對兩個對象進行深度比較,如果相等,返回真。

isErr: 檢查值是否是 Error 類型。

isEven: 檢查數(shù)字是否是偶數(shù)。

isFinite: 檢查值是否是有限數(shù)字。

isFn: 檢查值是否是函數(shù)。

isGeneratorFn: 檢查值是否是 Generator 函數(shù)。

isInt: 檢查值是否是整數(shù)。

isJson: 檢查值是否是有效的 JSON。

isLeapYear: 檢查年份是否是閏年。

isMap: 檢查值是否是 Map 對象。

isMatch: 檢查對象所有鍵名和鍵值是否在指定的對象中。

isMiniProgram: 檢測是否運行于微信小程序環(huán)境中。

isMobile: 使用 ua 檢測是否運行于移動端瀏覽器。

isNaN: 檢測值是否是 NaN。

isNative: 檢查值是否是原生函數(shù)。

isNil: 檢查值是否是 null 或 undefined,等價于 value == null。

isNode: 檢測是否運行于 node 環(huán)境中。

isNull: 檢查值是否是 Null 類型。

isNum: 檢測值是否是數(shù)字類型。

isNumeric: 檢查值是否是數(shù)字,包括數(shù)字字符串。

isObj: 檢查值是否是對象。

isOdd: 檢查數(shù)字是否是奇數(shù)。

isPlainObj: 檢查值是否是用 Object 構(gòu)造函數(shù)創(chuàng)建的對象。

isPrime: 檢查整數(shù)是否是質(zhì)數(shù)。

isPrimitive: 檢測值是否是字符串,數(shù)字,布爾值或 null。

isPromise: 檢查值是否是類 promise 對象。

isRegExp: 檢查值是否是正則類型。

isRelative: 檢查路徑是否是相對路徑。

isSet: 檢查值是否是 Set 類型。

isSorted: 檢查數(shù)組是否有序。

isStr: 檢查值是否是字符串。

isTypedArr: 檢查值是否 TypedArray 類型。

isUndef: 檢查值是否是 undefined。

isUrl: 簡單檢查值是否是有效的 url 地址。

isWeakMap: 檢查值是否是 WeakMap 類型。

isWeakSet: 檢查值是否是 WeakSet 類型。

kebabCase: 將字符串轉(zhuǎn)換為短橫線式。

keyCode: 鍵碼鍵名轉(zhuǎn)換。

keys: 返回包含對象自身可遍歷所有鍵名的數(shù)組。

last: 獲取數(shù)組的最后一個元素。

linkify: 將文本中的 url 地址轉(zhuǎn)換為超鏈接。

longest: 獲取數(shù)組中最長的一項。

lowerCase: 轉(zhuǎn)換字符串為小寫。

lpad: 對字符串進行左填充。

ltrim: 刪除字符串頭部指定字符或空格。

map: 對集合的每個元素調(diào)用轉(zhuǎn)換函數(shù)生成與之對應的數(shù)組。

mapObj: 類似 map,但針對對象,生成一個新對象。

matcher: 傳入對象返回函數(shù),如果傳入?yún)?shù)中包含該對象則返回真。

max: 獲取數(shù)字中的最大值。

md5: MD5 算法實現(xiàn)。

memStorage: Web Storage 接口的純內(nèi)存實現(xiàn)。

memoize: 緩存函數(shù)計算結(jié)果。

mergeSort: 歸并排序?qū)崿F(xiàn)。

methods: 獲取對象中所有方法名。

min: 獲取數(shù)字中的最小值。

moment: 簡單的類 moment.js 實現(xiàn)。

ms: 時長字符串與毫秒轉(zhuǎn)換庫。

negate: 創(chuàng)建一個將原函數(shù)結(jié)果取反的函數(shù)。

nextTick: 能夠同時運行在 node 和瀏覽器端的 next tick 實現(xiàn)。

noop: 一個什么也不做的空函數(shù)。

normalizeHeader: 標準化 HTTP 頭部名。

normalizePath: 標準化文件路徑中的斜杠。

now: 獲取當前時間戳。

objToStr: Object.prototype.toString 的別名。

omit: 類似 pick,但結(jié)果相反。

once: 創(chuàng)建只能調(diào)用一次的函數(shù)。

optimizeCb: 用于高效的函數(shù)上下文綁定。

pad: 對字符串進行左右填充。

pairs: 將對象轉(zhuǎn)換為包含【鍵名,鍵值】對的數(shù)組。

parallel: 同時執(zhí)行多個函數(shù)。

parseArgs: 命令行參數(shù)簡單解析。

partial: 返回局部填充參數(shù)的函數(shù),與 bind 模塊相似。

pascalCase: 將字符串轉(zhuǎn)換為帕斯卡式。

perfNow: 高精度時間戳。

pick: 過濾對象。

pluck: 提取數(shù)組對象中指定屬性值,返回一個數(shù)組。

precision: 獲取數(shù)字的精度。

promisify: 轉(zhuǎn)換使用回調(diào)的異步函數(shù),使其返回 Promise。

property: 返回一個函數(shù),該函數(shù)返回任何傳入對象的指定屬性。

query: 解析序列化 url 的 query 部分。

quickSort: 快排實現(xiàn)。

raf: requestAnimationFrame 快捷方式。

random: 在給定區(qū)間內(nèi)生成隨機數(shù)。

randomItem: 隨機獲取數(shù)組中的某項。

range: 創(chuàng)建整數(shù)數(shù)組。

rc4: RC4 對稱加密算法實現(xiàn)。

reduce: 合并多個值成一個值。

reduceRight: 類似于 reduce,只是從后往前合并。

reject: 類似 filter,但結(jié)果相反。

remove: 移除集合中所有通過真值檢測的元素,返回包含所有刪除元素的數(shù)組。

repeat: 重復字符串指定次數(shù)。

restArgs: 將給定序號后的參數(shù)合并成一個數(shù)組。

rgbToHsl: 將 rgb 格式的顏色值轉(zhuǎn)換為 hsl 格式。

root: 根對象引用,對于 nodeJs,取 global 對象,對于瀏覽器,取 window 對象。

rpad: 對字符串進行右填充。

rtrim: 刪除字符串尾部指定字符或空格。

safeCb: 創(chuàng)建回調(diào)函數(shù),內(nèi)部模塊使用。

safeDel: 刪除對象屬性。

safeGet: 獲取對象屬性值,路徑不存在時不報錯。

safeSet: 設(shè)置對象屬性值。

sample: 從集合中隨機抽取部分樣本。

selectionSort: 選擇排序?qū)崿F(xiàn)。

shuffle: 將數(shù)組中元素的順序打亂。

size: 獲取對象的大小或類數(shù)組元素的長度。

sleep: 使用 Promise 模擬暫停方法。

slice: 截取數(shù)組的一部分生成新數(shù)組。

snakeCase: 轉(zhuǎn)換字符串為下劃線式。

some: 檢查集合中是否有元素通過真值檢測。

sortBy: 遍歷集合中的元素,將其作為參數(shù)調(diào)用函數(shù),并以得到的結(jié)果為依據(jù)對數(shù)組進行排序。

spaceCase: 將字符串轉(zhuǎn)換為空格式。

splitCase: 將不同命名式的字符串拆分成數(shù)組。

splitPath: 將路徑拆分為文件夾路徑,文件名和擴展名。

startWith: 檢查字符串是否以指定字符串開頭。

strHash: 使用 djb2 算法進行字符串哈希。

strToBytes: 將字符串轉(zhuǎn)換為字節(jié)數(shù)組。

stringify: JSON 序列化,支持循環(huán)引用和函數(shù)。

stripAnsi: 清除字符串中的 ansi 控制碼。

stripCmt: 清除源碼中的注釋。

stripColor: 清除字符串中的 ansi 顏色控制碼。

stripHtmlTag: 清除字符串中的 html 標簽。

sum: 計算數(shù)字和。

swap: 交換數(shù)組中的兩項。

template: 將模板字符串編譯成函數(shù)用于渲染。

throttle: 返回函數(shù)的節(jié)流閥版本。

timeAgo: 將時間格式化成多久之前的形式。

timeTaken: 獲取函數(shù)的執(zhí)行時間。

times: 調(diào)用目標函數(shù) n 次。

toArr: 將任意值轉(zhuǎn)換為數(shù)組。

toBool: 將任意值轉(zhuǎn)換為布爾值。

toDate: 將任意值轉(zhuǎn)換為日期類型。

toInt: 將任意值轉(zhuǎn)換為整數(shù)。

toNum: 將任意值轉(zhuǎn)換為數(shù)字。

toSrc: 將函數(shù)轉(zhuǎn)換為源碼。

toStr: 將任意值轉(zhuǎn)換為字符串。

topoSort: 拓撲排序?qū)崿F(xiàn)。

trim: 刪除字符串兩邊指定字符或空格。

tryIt: 在 try catch 塊中運行函數(shù)。

type: 獲取 JavaScript 對象的內(nèi)部類型。

types: 僅用于生成 ts 定義文件。

ucs2: UCS-2 編解碼。

unescape: 和 escape 相反,轉(zhuǎn)義 HTML 實體回去。

union: 返回傳入所有數(shù)組的并集。

uniqId: 生成全局唯一 id。

unique: 返回數(shù)組去重后的副本。

unzip: 與 zip 相反。

upperCase: 轉(zhuǎn)換字符串為大寫。

upperFirst: 將字符串的第一個字符轉(zhuǎn)換為大寫。

use: 使用 define 創(chuàng)建的模塊。

utf8: UTF-8 編解碼。

values: 返回對象所有的屬性值。

vlq: vlq 編解碼。

waitUntil: 等待直到條件函數(shù)返回真值。

waterfall: 按順序執(zhí)行函數(shù)序列。

wrap: 將函數(shù)封裝到包裹函數(shù)里面, 并把它作為第一個參數(shù)傳給包裹函數(shù)。

wx: 小程序 wx 對象的 promise 版本。

zip: 將每個數(shù)組中相應位置的值合并在一起。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/104123.html

相關(guān)文章

  • Licia:最全最實用 JavaScript 工具

    摘要:為了避免不同項目之間進行復制粘貼,可以將這些常用的函數(shù)封裝到一起并發(fā)布包。目前所包含模塊已達三百個,基本可以滿足前端的日常工發(fā)需求。二使用打包工具該項目自帶打包工具,可以通過配置文件或命令行掃描源碼自動生成項目專用的工具庫。 前言 在業(yè)務開發(fā)過程中,我們經(jīng)常會重復使用日期格式化、cookie 操作、模板、瀏覽器判斷、類型判斷等功能。為了避免不同項目之間進行復制粘貼,可以將這些常用的函數(shù)...

    luxixing 評論0 收藏0
  • 擴展微信程序框架功能

    摘要:擴展微信小程序框架功能是狀態(tài)容器,提供可預測化的狀態(tài)管理。擴展微信小程序框架功能日期時間是一個的日期時間處理工具類,其對于的日期時間處理功能非常強悍和全面。 通過第三方 JavaScript 庫,擴展微信小程序框架功能。 擴展微信小程序框架功能(1)——Promise ES6 對 Promise 有了原生的支持,但微信開發(fā)者工具更新版本(0.11.112200)后, 移除了開發(fā)者工具...

    marek 評論0 收藏0
  • 淺談程序運行機制

    摘要:小程序的基礎(chǔ)庫不會被打包在某個小程序的代碼包里邊,它會被提前內(nèi)置在微信客戶端。小程序沒有重啟的概念當小程序進入后臺,客戶端會維持一段時間的運行狀態(tài),超過一定時間后目前是分鐘會被微信主動銷毀當短時間內(nèi)連續(xù)收到兩次 寫作背景 接觸小程序有一段時間了,總得來說小程序開發(fā)門檻比較低,但其中基本的運行機制和原理還是要懂的。比如我在面試的時候問到一個關(guān)于小程序的問題,問小程序有window對象嗎?...

    Caicloud 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<