精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何快速將你的應用封裝成JS-SDK?

開發 前端
本文將介紹前端如何封裝一款 js-sdk 以及如何快速將你的應用變成 js-sdk , 我們將總結一些封裝 js-sdk 的原則和案例, 來幫大家更快的上手 sdk 開發.

 前言

本文將介紹前端如何封裝一款 js-sdk 以及如何快速將你的應用變成 js-sdk , 我們將總結一些封裝 js-sdk 的原則和案例, 來幫大家更快的上手 sdk 開發. 其中筆者還會以H5-Dooring 為例子, 介紹如何將 H5 頁面編輯器封裝成一個 js-sdk 供他人使用.

正文

在開始文章之前, 筆者先來介紹一下什么是 sdk .

sdk 即軟件開發工具包, 一般是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件時的開發工具的集合。

對于 js-sdk 而言, 我們能舉出很多例子, 如下:

  • UI組件庫
  • 性能監控工具, 如阿里 arms
  • 統計分析工具
  • 阿里云智能驗證sdk
  • 極驗驗證sdk

sdk 的目的是提高我們開發項目的效能, 安全性和便捷性等問題, 所以我們在設計 sdk 時一定要遵循一些原則, 如下: 

 

  • 最小可用性原則: 也就是沒有必要的功能/代碼盡量不額外添加, 使代碼達到最簡
  • 最少依賴原則: 也就是沒有必要的依賴堅決不添加, 以達到最低限度的外部依賴
  • 易擴展: 插件化,最大限度支持擴展和自定義
  • 穩定性: 絕不能導致宿主應用崩潰,向后兼容, 可測試

在熟悉以上的背景和原則之后, 我們來看看如何實現一個 sdk 的案例.

將 H5-Dooring 封裝成一個 js-sdk

筆者在這拿 開源頁面制作工具 H5-Dooring 來作為案例(當然將其封裝成 sdk 也是我們迭代中的一部分, 甚至后期會做成npm包), 介紹如何封裝js-sdk, 我們先看一張抽象圖:


我們的 sdk 就好像一個完整系統的一個零件, 可以和系統中的其他模塊通信, 互相交換數據. 總體而言 sdk 是為宿主系統服務的, 在 dooring-sdk 中 我們一方面要提供對外的接口支持, 另一方面需要支持宿主能控制 H5 編輯器的界面, 所以綜合分析下來我們有如下的初步規劃圖:


首先我們 sdk 采用 js 動態加載 iframe 的模式來實現, 并通過 iframe 通信來實現props 傳遞, 此時可以有兩種比較靠譜的通信方案:

  • 使用 postmessage 實現跨域跨系統通信
  • 使用 url 參數通信

由于 postmessage 對宿主系統要求比較高, 需要宿主手動配置 origin 白名單, 對可插拔式體驗不夠友好, 所以筆者這里采用了比較常用的 url 通行方式, 這里需要對參數做解析, 最后達到一個比較簡單的接入方式, 如下:

  1. var dooringOpts = { 
  2.     container: '',  // 掛載到哪個dom節點上 
  3.     iframeStyle: {  // iframe自定義樣式 
  4.         width: ''
  5.         height: ''
  6.         border: '' 
  7.     }, 
  8.     controls: { 
  9.       gallery: false,  // 是否啟動圖片庫 
  10.       template: false, // 是否啟用模版庫 
  11.       saveTemplate: true,  // 參數可以是true/false,表示是否啟動下載代碼, 也可以是函數, 用來自定義下載代碼邏輯 
  12.       save: true,  // 參數可以是true/false,表示是否啟動下載代碼, 也可以是函數, 用來自定義下載代碼邏輯 
  13.       downCode: true, // 參數可以是true/false,表示是否啟動下載代碼, 也可以是函數, 用來自定義下載代碼邏輯 
  14.       isPhoneTest: false
  15.       helpPage: true,   // false/true表示隱藏/顯示幫助頁面 
  16.       uploadApi: '',  // 自定義上傳api 
  17.       formApi: '',  // 自定義表單提交api 
  18.       screenshotsApi: ''  // 自定義截圖提交api 
  19.     } 

用戶只需要在全局定義好配置的 props 和 callback , 即可自由定制 H5-Dooring. 接下來我們只需要再引入 dooring-sdk即可(注意先定義全局變量, 再引入sdk):

  1. <script src="http://49.234.61.19/dooring-sdk.js"></script> 

以上只是確定了 js-sdk 的方案和最終調用效果, 接下來我們來看看如何去實現它. 也就是 dooring-sdk 內部到底做了那些工作. 我們先看一張實現機制圖:

由上圖分析可知我們需要提前把用戶定義的全局配置解析成 url 參數, 然后將動態創建的 iframe 的 src 屬性設置為 dooring url + parmas的結構, 具體實現如下:

  1. (function(){ 
  2.       let iframe = document.createElement('iframe'); 
  3.       let tid = Date.now(); 
  4.       let sdk_domain_path = 'http://xxxx/xxxx'
  5.       iframe.src = sdk_domain_path + '/h5_plus/editor?tid=' + tid + '&' + getDooringApiStr(dooringOpts) + '&isOpen=1'
  6.  
  7.       iframe.style.border = 'none'
  8.       iframe.style.width = '100vw'
  9.       iframe.style.height = '100vh'
  10.       if(dooringOpts && dooringOpts.iframeStyle) { 
  11.           iframe.style.border = dooringOpts.iframeStyle.border || 'none'
  12.           iframe.style.width = dooringOpts.iframeStyle.width || '100vw'
  13.           iframe.style.height = dooringOpts.iframeStyle.height || '100vh'
  14.       } 
  15.  
  16.       document.querySelector(dooringOpts.container || 'body').appendChild(iframe); 
  17.  
  18.       function getDooringApiStr(opt) { 
  19.           let controls = Object.assign({ 
  20.               gallery: false
  21.               template: false
  22.               saveTemplate: true,  // 參數可以是true/false,表示是否啟動下載代碼, 也可以是函數, 用來自定義下載代碼邏輯 
  23.               save: true,  // 參數可以是true/false,表示是否啟動下載代碼, 也可以是函數, 用來自定義下載代碼邏輯 
  24.               downCode: true, // 參數可以是true/false,表示是否啟動下載代碼, 也可以是函數, 用來自定義下載代碼邏輯 
  25.               isPhoneTest: false
  26.               helpPage: true,   // false/true表示隱藏/顯示幫助頁面 
  27.               uploadApi: ''
  28.               formApi: ''
  29.               screenshotsApi: '' 
  30.           }, opt.controls || {}) 
  31.  
  32.           let params = ''
  33.           for(let key in controls) { 
  34.               params += key + '=' + encodeURI(controls[key]) + '&' 
  35.           } 
  36.           return params.slice(0, params.length -1) 
  37.       } 
  38. })() 

以上只是個簡單的實現實現思路, 是不是有點傳統的寫jquery插件的感覺? 同時我們還需要配合 h5-dooring 內部去支持解析 parmas 等操作, 這里感興趣的可以自行研究. 當然 sdk 的實現方式還有很多, 期待大家的探索.

最后

以上方案筆者已經集成到 H5-Dooring 中,大家可以以 sdk 的方式體驗一下。github 地址:所見即所得的H5頁面編輯器H5-Dooring

 

責任編輯:姜華 來源: 趣談前端
相關推薦

2015-02-12 16:57:35

微信SDK

2015-02-12 17:48:54

微信SDK

2015-02-12 17:23:33

微信SDK

2015-02-12 17:28:23

微信SDK

2015-01-13 13:57:52

2021-04-30 17:35:16

前端開發技術熱點

2015-01-28 00:35:00

2023-05-10 09:24:10

TypeScript工具

2011-03-30 14:31:25

Mssql數據庫

2021-06-07 19:26:50

WindowsDocker工作站

2009-09-08 17:45:13

Ophone Widg

2023-06-19 09:01:17

2013-03-26 14:45:21

HTML5封裝成and

2012-11-23 17:20:43

Linux服務器

2019-12-20 14:10:19

Python腳本語言工具

2020-11-25 10:42:57

Python代碼工具

2017-05-10 16:09:12

MySQL數據庫查詢

2014-09-01 09:49:24

github

2022-05-11 17:21:05

Btrfs文件系統Fedora

2021-08-31 08:32:40

開源項目開發
點贊
收藏

51CTO技術棧公眾號

国产成人麻豆精品午夜在线| 天天操夜夜操av| 高清不卡av| 日本一区二区免费在线观看视频 | 国产天堂在线播放视频| 99久久精品国产一区| 国产精品成久久久久三级 | 怕怕欧美视频免费大全| 欧美日韩久久不卡| 拔插拔插海外华人免费| 国产大片在线免费观看| 国产一区三区三区| 欧美一乱一性一交一视频| 欧美xxxooo| 欧美一级二级三级视频| 欧美视频在线一区二区三区 | 日韩视频二区| 中文字幕日韩欧美| 性久久久久久久久久久| 日韩成人一区| 欧美视频13p| 成人在线观看毛片| 91精品专区| 91在线小视频| 91九色露脸| 中文字幕你懂的| 亚洲专区一区| 欧美黄色成人网| 青青青视频在线免费观看| 欧美成人一区在线观看| 日韩天堂在线观看| 91精品999| 欧美性xxx| 亚洲国产sm捆绑调教视频| 亚洲天堂电影网| 麻豆av电影在线观看| 成人污视频在线观看| 国产噜噜噜噜噜久久久久久久久| 91精品国产乱码在线观看| 亚洲最新色图| 日韩中文字幕久久| 91狠狠综合久久久久久| 国产成人ay| 日韩精品有码在线观看| 蜜臀av粉嫩av懂色av| 国产日韩一区二区三免费高清| 在线观看日韩精品| 黄色一级一级片| aaa在线播放视频| 亚洲成a天堂v人片| 久久综合久久网| 国产高清在线a视频大全| 亚洲精品视频一区二区| 国产精品99久久久久久大便| a天堂在线资源| 国产欧美久久久精品影院| 欧美日韩在线精品| 国产在线一二| 国产调教视频一区| 日韩av电影在线观看| 你懂得网站在线| 国产日韩欧美精品综合| 日本一区二区三区精品视频| 久草视频视频在线播放| 国产日韩精品久久久| 视频在线一区二区三区| jizzjizz在线观看| 专区另类欧美日韩| 国产精品久久久影院| 91精选在线| 亚洲成人av在线电影| 日本少妇高潮喷水视频| 欧美电影网站| 欧美精品日韩综合在线| 日韩久久久久久久久久久| 香蕉免费一区二区三区在线观看 | 日韩欧美二区| 久久综合伊人77777蜜臀| 欧美激情国产精品免费| 99av国产精品欲麻豆| 欧美中在线观看| 日本妇乱大交xxxxx| 精品一区精品二区高清| 91视频99| 色视频免费在线观看| 国产欧美日产一区| 亚洲精品天堂成人片av在线播放 | 五月激情六月综合| 国产精品亚洲a| 欧美啪啪网站| 欧美va亚洲va| 无码h肉动漫在线观看| 青青草国产成人a∨下载安卓| 久久九九免费视频| 日本三级中文字幕| 日韩精品视频网| 亚洲a∨日韩av高清在线观看| 亚洲毛片在线播放| 国产亚洲欧美激情| 91网站在线观看免费| 三级中文字幕在线观看| 在线不卡的av| 色婷婷av777| 91av精品| 国产成人啪精品视频免费网| 国产精品一区二区黑人巨大| 99久久婷婷国产精品综合| 亚洲精品一区二区三| 美足av综合网| 欧美久久久久久久久中文字幕| 中文字幕在线视频播放| 久久精品免费一区二区三区| 69av在线视频| 国产激情视频在线播放| 亚洲国产精品精华液ab| 久久这里只有精品23| 欧美亚洲二区| 日韩激情av在线播放| 天天操天天操天天操天天操天天操| 午夜在线视频观看日韩17c| 96国产粉嫩美女| 成人免费视频| 日韩欧美高清视频| 性活交片大全免费看| 93在线视频精品免费观看| 热久久这里只有| 四虎在线视频免费观看| 亚洲女同ⅹxx女同tv| www.色就是色| 国产精品亚洲片在线播放| 欧美黑人巨大xxx极品| 国产精品美女一区| 中文成人综合网| 午夜精品久久久内射近拍高清| caoporn成人| 欧美成在线观看| 国产成a人亚洲精v品无码 | 日韩欧美亚洲精品| 97超碰免费在线| 精品福利一二区| 免费看一级一片| 国产精品综合视频| 特级毛片在线免费观看| 国产精品第一| 中文字幕亚洲一区二区三区| 无码一区二区三区在线观看| 91麻豆免费视频| 日韩中文字幕在线视频观看| 99re91这里只有精品| 久久97精品久久久久久久不卡| 国产乱码久久久久| 亚洲天堂2016| 午夜xxxxx| 欧美体内she精视频在线观看| 亚洲自拍在线观看| 99在线视频观看| 日韩欧美成人一区二区| 久久久久久久久精| 成人精品视频一区| 欧美日韩黄色一级片| 天堂av一区二区三区在线播放| 91精品国产91久久久久久久久 | 中文字幕精品无码一区二区| 久久这里只有精品视频网| 成年人视频在线免费| 女优一区二区三区| 国产精品美女在线| 久热国产在线| 精品日韩一区二区三区| 在线观看 中文字幕| 久久婷婷国产综合国色天香| www日韩在线观看| 久久精品99久久无色码中文字幕| 成人午夜在线影院| 欧美人与性动交α欧美精品图片| 亚洲国产精品va在线| 久久久国产精品成人免费| 久久久蜜桃精品| 亚洲天堂网2018| 亚洲一级网站| 欧美一区三区二区在线观看| 男人亚洲天堂| 久久久伊人日本| 久久米奇亚洲| 91麻豆精品国产91久久久更新时间 | 久久久久国产精品一区| 日韩欧美在线观看一区二区| 欧美色倩网站大全免费| 中文字幕影音先锋| 26uuu另类欧美| 国产美女18xxxx免费视频| 欧美特黄一区| 亚洲va韩国va欧美va精四季| 日韩精品中文字幕一区二区| 538国产精品一区二区在线 | 怡红院男人的天堂| 亚洲国产成人va在线观看天堂| 天天躁夜夜躁狠狠是什么心态 | 极品粉嫩小仙女高潮喷水久久| 日韩av午夜在线观看| 嫩草影院中文字幕| 欧美理论在线播放| 国产日韩久久| 亚洲精品一区av| 欧美亚洲成人网| 综合图区亚洲| 中文字幕欧美日韩va免费视频| 亚洲精品一区二区三区蜜桃| 欧洲精品视频在线观看| 久久网一区二区| 国产精品情趣视频| 中文乱码人妻一区二区三区视频| 国产一区二区三区黄视频 | 日韩亚洲欧美视频| 99久久影视| 日本不卡久久| 久久午夜影院| 超碰国产精品久久国产精品99| 免费在线观看一区| 555www成人网| 国内在线免费视频| 久久国产精品视频| 欧美成人xxx| 一区二区福利视频| 亚洲AV第二区国产精品| 日韩一二三四区| 一区二区 亚洲| 欧美在线|欧美| 精品久久久久久久久久久久久久久久久久| 亚洲国产精品嫩草影院| 91日韩中文字幕| 亚洲天堂2016| 欧美色图亚洲视频| 国产精品成人免费| 97精品在线播放| 国产精品乱码一区二区三区软件 | 日本精品在线视频| 超碰91在线观看| 午夜精品一区二区三区在线| 黄色影院在线看| 欧美国产日本在线| 黄色小说在线播放| 国外成人在线视频| segui88久久综合9999| 久久久久成人精品| 9999精品成人免费毛片在线看| 欧美激情第一页xxx| 在线三级中文| 久99九色视频在线观看| 日本色护士高潮视频在线观看 | 综合另类专区| 日本一本a高清免费不卡| 亚洲美女尤物影院| 国产ts一区二区| 精品国产欧美日韩一区二区三区| 欧洲亚洲在线视频| 免费观看成人性生生活片| 国产精品第2页| 国产精品久久久久77777丨| 国产精品户外野外| 啪啪av大全导航福利综合导航| 国产在线999| 国产精品久一| 国产精品二区在线观看| 国产另类在线| 日本婷婷久久久久久久久一区二区| 国产一区不卡| 在线视频不卡国产| 欧美精品自拍| 91传媒久久久| 青娱乐精品视频| 妖精视频在线观看| 99精品久久免费看蜜臀剧情介绍| 亚洲av无码一区二区二三区| 久久精品亚洲国产奇米99| 99久久精品久久亚洲精品| 亚洲狼人国产精品| 91久久国产视频| 欧美三级在线看| 亚洲第九十九页| 亚洲视频axxx| 成人免费看片| 欧美在线免费观看| 欧美日韩破处视频| 激情视频一区二区| 欧美电影免费| 精品久久一二三| 久久国产尿小便嘘嘘| av电影中文字幕| 久久青草欧美一区二区三区| 成人在线观看免费高清| 一区二区三区不卡视频| 精品国产xxx| 日韩亚洲欧美在线观看| 酒色婷婷桃色成人免费av网| 欧美成人在线网站| 欧美极品影院| 不卡一卡2卡3卡4卡精品在| 国产精品一区二区三区av麻| 国产精品一二三在线观看| 嫩草成人www欧美| 男插女视频网站| 中文字幕av一区 二区| 国产一级片免费| 欧美日韩精品免费| 天堂在线中文| 欧美乱大交做爰xxxⅹ性3| 成人做爰视频www网站小优视频| 亚洲综合中文字幕在线| 亚洲成aⅴ人片久久青草影院| japanese在线播放| 日本系列欧美系列| 粉嫩av懂色av蜜臀av分享| 亚洲欧美日韩在线不卡| 一级久久久久久| 亚洲国产日韩精品在线| 91麻豆国产福利在线观看宅福利| 国产精品999999| 网友自拍区视频精品| 久久人妻无码一区二区| 久久99精品网久久| 在线观看日本中文字幕| 午夜欧美在线一二页| 国产高清免费av| 精品国产依人香蕉在线精品| 欧美福利在线播放| 久久精品国产精品国产精品污| 欧美午夜一区| 男生和女生一起差差差视频| 国产精品视频免费看| 老熟妇一区二区三区| 亚洲精品国产精品国自产观看浪潮 | 成人av婷婷| 黄色特一级视频| 国产一区二区在线影院| 国内毛片毛片毛片毛片毛片| 91国产丝袜在线播放| 日韩av视屏| 欧美专区在线观看| 自拍自偷一区二区三区| 熟女少妇在线视频播放| 99久久综合99久久综合网站| 日本在线视频免费观看| 精品av综合导航| 国产精品186在线观看在线播放| 97超级碰碰| 国产在线成人| 小毛片在线观看| 欧美日韩免费区域视频在线观看| 污污的视频网站在线观看| 国内精久久久久久久久久人| 成人在线超碰| 青青青免费在线| 91在线精品一区二区三区| 羞羞影院体验区| 亚洲人精品午夜在线观看| 日韩精品99| 杨幂一区欧美专区| 国产原创一区二区三区| 黄色一级片在线免费观看| 精品久久久久久久久久久久久久久 | 久久777国产线看观看精品| 综合激情五月婷婷| 国产69精品久久久久999小说| 99久久久久免费精品国产| 国产成人精品片| 亚洲最新中文字幕| 国内精品视频| 麻豆tv在线播放| 国产亲近乱来精品视频 | 亚洲国产精品成人精品| 天堂中文在线播放| 亚洲国产另类久久久精品极度| 国产在线精品视频| 天堂资源在线播放| 亚洲天堂av在线免费| 免费日韩成人| 黄色国产一级视频| 欧美极品美女视频| 精品人妻一区二区三区蜜桃 | 法国空姐在线观看免费| 成人黄色网址在线观看| 午夜影院免费在线观看| 日韩专区在线播放| 国产精品三p一区二区| 超碰影院在线观看| 亚洲欧美日韩国产另类专区| 四季av日韩精品一区| 国产日韩精品电影| 亚洲国产美女| 999精品久久久| 亚洲激情成人网| 日韩黄色三级| 国产精品一区二区免费在线观看| 国产精品欧美综合在线| 日本波多野结衣在线| 成人国产精品久久久| 亚洲欧美日韩在线观看a三区| 性色国产成人久久久精品| 亚洲国产毛片完整版|