成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端Pua: JSON API還有二次封裝的必要嗎?

開發 前端
JSON 是 JavaScript Object Notation 的縮寫,最初是被設計為 JavaScript 的一個子集,因其和編程語言無關,所以成為了一種開放標準的常見數據格式。

[[438577]]

JSON 是 JavaScript Object Notation 的縮寫,最初是被設計為 JavaScript 的一個子集,因其和編程語言無關,所以成為了一種開放標準的常見數據格式。雖然 JSON 是源自于JavaScript,但到目前很多編程語言都有了 JSON 解析的庫,如 C、Java、Python 等。

雖然 「javascript」 的 JSON API 內置了兩種方法方便我們快捷的處理數據格式轉換:

  • 「JSON.parse()」 用于將一個 JSON 字符串轉換為 JavaScript 對象
  • 「JSON.Stringify()」 用于將 JavaScript 值轉換為 JSON 字符串

但也存在不少限制, 比如:

  • JSON.Stringify 無法序列化 「函數」, 「正則表達式」 等
  • JSON.parse 無法反序列化具有 「函數」, 「正則表達式」 等格式的數據
  • JSON.Stringify 和JSON.parse 性能問題
  • JSON.Stringify 和JSON.parse 解析出錯導致整個系統 pua

這些問題我們不得不從 「二次封裝」 的角度去解決.

第3個問題社區已經有比較可靠的解決方案可以來解決 JSON 方法的性能問題, 其核心思想就是 「結構化json定義」. 比如我們最常討論的 JSON Schema, simdjson 就是一個不錯的方案.

第四個問題也有解決方案, 就是在使用 JSON.Stringify 和JSON.parse 的地方包一層 try catch, 缺點就是每次調用都需要包 try catch, 不太符合前端 er 們的簡約風.

所以分析了這么多, 針對復雜業務場景, 我們非常有必要二次封裝 「JSON API」 !

在上篇文章中我介紹了解決 1 和 2 問題的方案, 感興趣的可以參考:

前端進階: 如何用javascript存儲函數?

該 json 解析器基于原生JSON API進行的上層封裝, 支持序列化函數, 正則類型

  • 支持原生 json api 調用方式nativeStringify, nativeParse
  • 支持序列化和反序列化函數 stringify, fastStringify, parse
  • 支持序列化和反序列化正則 stringify, fastStringify, parse
  • 內置開箱即用的工具方法
    • 判斷函數類型 isFunc
    • 判斷對象類型 isObj
    • 判斷數組類型 isArr
    • 判斷對象或數組類型 isArrOrObj
    • 判斷正則類型 isRegExp

同時方案中也解決了 4 中提到的問題, 并且支持操作后的回調, 使用方法如下:

安裝 xijs

  1. yarn add xijs 

使用

  1. import { parser } from 'xijs'
  2.  
  3. const door = { 
  4.   a: 1, 
  5.   b: function () {}, 
  6.   c: { 
  7.     c1: 'h5-dooring'
  8.     c2: () => {}, 
  9.     c3: { 
  10.       c: '3fvc'
  11.       d: { 
  12.         dd: () => {}, 
  13.         ee: /[a-z]/g, 
  14.       }, 
  15.     }, 
  16.   }, 
  17.   d: /[0-9]/g, 
  18. }; 
  19.  
  20. // 將對象序列化 
  21. parser.stringify(door); 
  22.  
  23. // 結果如下: 
  24. // { 
  25. // "a": 1, 
  26. // "b""__xfunc__function b() {}"
  27. // "c": { 
  28. //  "c1""h5-dooring"
  29. //  "c2""__xfunc__function c2() {}" 
  30. // } 
  31. // } 
  32.  
  33. // 將json數據反解析成對象 
  34. parser.parse(parser.stringify(door)); 
  35.  
  36. // 結果如下: 
  37. // { 
  38. // a: 1, 
  39. // b: function b() {}, 
  40. // c: { 
  41. //  c1: "h5-dooring"
  42. //  c2: function c2() {} 
  43. // } 
  44. // } 

同時 xijs 還在持續擴充更有用的工具函數, 讓業務開發更高效. 目前已集成了如下工具函數:

  • 「store」 基于 localStorage 上層封裝的支持過期時間設置的緩存庫, 支持操作回調
  • 「uuid」 生成唯一id, 支持設置長度
  • 「randomStr」 生成指定個數的隨機字符串
  • 「formatDate」 開箱即用的時間格式化工具
  • 「debounce」 防抖函數
  • 「throttle」 節流函數
  • 「url2obj」 將url字符串轉換為對象
  • 「obj2url」 將對象轉換成編碼后的url字符串
  • 「isPC」 判斷設備是否為PC類型

 

github地址: https://github.com/MrXujiang/xijs

 

責任編輯:武曉燕 來源: 趣談前端
相關推薦

2022-08-16 14:17:50

數據倉庫數據治理數據職場

2021-05-05 11:34:09

前端開發技術熱點

2023-10-04 20:18:50

性價比SSDHDD

2023-04-17 09:32:29

IP地址MAC

2025-05-13 05:11:00

推理模型微調

2024-10-06 13:41:25

2024-01-06 17:53:11

前端框架方案

2022-10-17 08:03:47

封裝vue組件

2023-04-10 08:30:30

json編輯器typescript

2022-05-13 08:46:46

jsoneditorjson編輯器

2023-10-13 07:14:54

HDD存儲服務

2014-12-02 09:58:00

2024-03-13 13:39:21

2020-10-29 15:13:55

數字科技金融行業互聯網

2017-03-24 21:26:26

代碼架構Java

2011-08-05 12:36:01

2018-03-16 08:22:01

區塊鏈API應用程序

2013-08-08 16:25:08

項目加班

2021-09-15 15:50:46

hashmap算法軟件開發

2021-09-15 11:38:36

Hashmap二次算法列表
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 看羞羞视频免费 | 亚洲一区二区不卡在线观看 | 成年人免费看 | 欧美影院| 伊人精品在线视频 | 亚洲一区二区免费 | 国产福利在线视频 | 国产精品美女 | 亚洲看片网站 | 欧美一区在线视频 | 国产精品久久久久久亚洲调教 | 在线日韩欧美 | 欧美日韩在线一区二区 | 国产精品欧美精品 | 亚洲精品久久久一区二区三区 | 欧美色综合网 | 久久久久久久久国产成人免费 | h视频免费在线观看 | 欧美日韩在线一区 | 狠狠色网| 日韩三级在线 | 中文字幕一区二区三区日韩精品 | 免费99精品国产自在在线 | 国产在线中文字幕 | 欧美日韩在线综合 | 羞羞视频在线观看免费观看 | 国产精品久久久久久久三级 | 亚洲狠狠爱一区二区三区 | 久久亚洲精品久久国产一区二区 | 国家一级黄色片 | 欧美成人精品一区二区男人看 | 亚洲欧美中文字幕在线观看 | 一本色道久久综合亚洲精品高清 | 久久久久久蜜桃一区二区 | 亚洲一区国产精品 | 毛片一级黄色 | 福利视频三区 | 免费观看av| 手机av免费在线 | 精品少妇一区二区三区日产乱码 | 精品91 |