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

如何搭積木式的快速開發H5頁面?

開發 前端
筆者接下來將介紹最新版H5編輯器的功能和實現思路, 以及如何實現所見即所得的方案嘗試.

[[357294]]

 2個月前開源的H5編輯器 H5-Dooring 目前已經成功迭代到1.0版本, 從最開始的基本的頁面生成框架到現在的支持更豐富的組件資源,交互能力和數據追蹤能力, 期間做了很多的設計和迭代,也收獲了很多網友的反饋和啟發, 也有很多志同道合的朋友加入進來一起讓 H5-Dooring 變的更好更強大, 在此特意分享一下我們最新的版本和功能實現.

設計初衷

筆者最開始開發這個項目的主要目的是提高個人和企業開發 H5 頁面的成本和效率, 可以通過搭積木的方式, 利用已有組件庫或外部組件資源(正在設計)搭建出適合不同場景的 H5 應用, 并且支持一鍵下載代碼, 讓技術人員輕松將H5頁面部署到自己的服務器中. 筆者之前也做過很多代碼生成的小應用, 但是都是為程序員少寫代碼而設計的, 不足以成為一個真正的開源項目, 所以筆者打算把H5-Dooring好好落地, 做成一個真正有價值的項目.筆者接下來將介紹最新版H5編輯器的功能和實現思路, 以及如何實現所見即所得的方案嘗試.

最新版編輯器效果預覽

 

表單數據看板和數據分析: 


技術棧

之前在筆者的文章中也介紹過H5-Dooring使用的技術棧和基礎架構實現了, 感興趣的可以參考 基于React+Koa實現一個h5頁面可視化編輯器最近我們在用nest重構項目的后端部分, 后期會做一定的技術方案介紹. 這里簡單介紹一下項目實現的技術棧:

  • umi3.0 + dva + antd4.0
  • react + react生態
  • nest + mysql + redis
  • nginx + pm2

所以這個項目屬于一個全棧項目, 很多核心功能的實現取決的約定好的DSL層, 頁面渲染層和后端能力.

功能點和實現方案

筆者之前的系列文章中有介紹具體功能點和實現方案, 這里我們主要介紹1.0版本已有的新功能.

新增富文本組件, 日歷組件, 按鈕交互組件, 專欄組件

富文本組件筆者采用的是國產的braft, 預覽如下:

因為項目用antd4.0開發的, 所以筆者專門封裝了一套適配antd4.0組件的富文本編輯器, 支持Form組件的受控模式. 感興趣的可以在github上學習具體的實現方式.

日歷組件也是最近剛加的, 主要是為了實現更豐富的H5頁面展示, 如下:

我們可以設置選擇的時間范圍, 被選擇范圍的主色, 日期等. 日期組件筆者主要采用的zarm的Calendar組件, 核心如下:

  1. import React, { useState, memo, useEffect, useRef } from 'react'
  2. import { Calendar } from 'zarm'
  3. import styles from './index.less'
  4. import { ICalendarConfig } from './schema'
  5.  
  6. const CalendarPlayer = memo((props: ICalendarConfig & { isTpl: boolean }) => { 
  7.   const { time, range, color, selectedColor, round, isTpl } = props; 
  8.   const realRange = range.split('-'); 
  9.  
  10.   const [value, setValue] = useState<Date[] | undefined>([new Date(`${time}-${realRange[0]}`), new Date(`${time}-${realRange[1]}`)]); 
  11.   const [min] = useState(new Date(`${time}-01`)); 
  12.   const [max] = useState(new Date(`${time}-31`)); 
  13.   const boxRef = useRef<any>(null); 
  14.   return <div className={styles.calenderWrap} style={{borderRadius: round + 'px', pointerEvents: isEditorPage ? 'none' : 'initial'}} ref={boxRef}> 
  15.           <Calendar 
  16.             multiple={!!range} 
  17.             value={value} 
  18.             min={min
  19.             max={new Date(max)} 
  20.             disabledDate={(date:any) => /(0|6)/.test(date.getDay())} 
  21.             onChange={(value:Date[] | undefined) => { 
  22.               setValue(value); 
  23.             }} 
  24.           /> 
  25.         </div> 
  26. }); 
  27.  
  28. export default CalendarPlayer; 

 這也是實現Dooring組件的一種方式, 感興趣的朋友歡迎為Dooring添加更多豐富組件支持.

之前還有個朋友問過我為什么項目使用了這么多組件在預覽H5頁面的時候速度還是很快, 這里我說明一下具體的實現方式, 如下圖:

所以說我們移動端的產物和依賴的資源非常少, 并且在webpack層和服務器層做了優化, 所以移動端訪問H5頁面會非常快, 這塊優化筆者后期會詳細介紹, 目前對性能這塊還在持續優化.

按鈕交互組件筆者之前也寫過文章專門詳細的介紹過如何實現按鈕交互, 自定義交互代碼以及富文本彈窗交互等, 感興趣的可以參考文章 低代碼開發平臺核心功能設計——組件自定義交互實現.

筆者這里展示一下具體的交互方式:

打開彈窗的交互用戶可以自定義彈窗中的內容, 如下:

此時在手機端的預覽效果如下:

 對于自定義code這塊, 筆者集成了代碼編輯庫codemirror, 這樣我們就可以自定義實現交互能力了, 如下效果:

接下來是我們的專欄組件, 這塊主要是基于業務需求做的業務組件, 實現方式和基礎組件一樣, 大家可以在線體驗一下.

新增導入導出json文件功能

之所以會做這個功能主要是為了方便協作設計H5頁面的, 比如說一個人設計了一個H5頁面想讓其他人一起參與設計, 可以將當前H5頁面導出為JSON, 另一個人通過導入這個JSON文件就可以立馬渲染成一模一樣的H5頁面, 進而做修改或者完善. 如下:


關于如何實現下載json, 筆者在之前的文章中也介紹過, 我們可以采用file-saver這個第三方模塊來做. 上傳解析json 我們完全可以自己實現, 筆者采用的是 Upload + FileReader API實現的, 核心代碼如下:

  1. const uploadprops = useMemo(() => ({ 
  2.     name'file'
  3.     showUploadList: false
  4.     beforeUpload(file, fileList) { 
  5.       // 解析并提取json數據 
  6.       let reader = new FileReader(); 
  7.       reader.onload = function(e) { 
  8.         let data = e.target.result; 
  9.         importTpl && importTpl(JSON.parse(data)) 
  10.       }; 
  11.       reader.readAsText(file); 
  12.     } 
  13.   }), []); 

新增一鍵截圖并生成高清海報圖功能

這塊主要是為H5頁面提供一個快速成圖方案, 方便運營或者技術人員做頁面效果評估用的, 在前端實現角度上我們主要采用canvas對dom進行轉化, 原理如下:

筆者之前也分享過具體的實現方案, 可以參考如下文章:

前端如何實現一鍵截圖功能?

這里筆者推薦兩個好用的canvas截圖工具, html2canvas和 dom-to-image. Dooring頁面的截圖過程如下:

 

新增右鍵菜單和自定義鍵盤快捷鍵功能

為了進一步提高用戶搭建H5頁面的效率, 筆者添加了右鍵菜單, 可以輕松的復制已制作好的組件, 也可以一鍵刪除, 如下:

但是對于鍵盤控們來說更希望通過鍵盤來實現所有功能, 所以個筆者添加了鍵盤快捷鍵, 支持一鍵復制, 粘貼,刪除元素, 如下:

這里推薦幾個還好用的右鍵菜單和鍵盤快捷鍵的庫, react-contexify, keymaster.

新增頁面配置

這塊主要是讓H5頁面有更多的自由度, 可以自定義頁面標題, SEO關鍵字, 頁面背景和背景圖等, 如下:

后續會添加更多頁面自定義的能力.

界面設計優化

和0.1版本比界面上做了很大的調整和優化, 比如說我們的登錄頁面:

預覽頁面:

支持sdk引入

這塊也是筆者之前做的一個嘗試, 讓H5-Dooring能通過sdk的方式被植入到任何web系統中,并且提供了定制功能和展示的api, 主要如下:

實現原理筆者之前也在文章中介紹過了, 如下:

 

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

2017-05-10 07:33:41

AndroidWebView視頻

2022-04-28 15:38:42

WebViewJavaUI

2015-07-15 14:38:54

H5移動適配

2015-07-15 12:30:37

移動端H5高清多屏

2023-08-15 08:34:28

頁面制作工具GitHub

2022-03-28 07:52:31

H5小游戲開發教程頁面基礎布局

2013-03-25 17:35:23

jimu傻瓜式App制作

2021-06-08 05:53:31

H5 頁面項目劉海屏適配

2016-05-17 22:02:26

HEML5云適配

2023-05-29 18:33:30

得物H5容器

2015-08-25 09:51:50

WebAppNative App

2025-03-28 08:55:00

H5頁面APPiOS

2023-08-14 23:45:55

2022-06-27 09:48:15

H5移動互聯網頁面性能

2015-11-10 11:38:06

2017-08-16 10:57:25

H5HTML開發

2018-02-06 16:21:13

H5首屏探討

2019-07-18 10:32:32

focusouIOS前端

2016-10-25 17:52:56

H5APP教材
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97色在线观看免费视频 | 国产专区在线 | 亚洲精品久久久一区二区三区 | 日本精品999 | 97在线观看 | 91就要激情| 91xxx在线观看| 亚洲精品一区二区三区在线 | 四虎在线观看 | 国产福利在线播放 | 91精品国产综合久久久久久首页 | 青青草这里只有精品 | 一级黄色大片 | 欧美精品一二区 | 久久久久久久久久久福利观看 | 一级毛片在线看 | 国产a视频 | 国产精品久久国产精品 | 日韩成人性视频 | 中文字幕乱码一区二区三区 | 欧美黄色网络 | 亚洲欧洲日韩精品 中文字幕 | 日韩中文一区二区三区 | av在线电影网 | 国产精品日韩一区二区 | 免费一区二区三区 | 国产精品久久久亚洲 | 亚洲一区二区三区免费视频 | 日本一卡精品视频免费 | 69视频在线播放 | 日韩在线观看中文字幕 | 欧美二三区 | 国产精品国产亚洲精品看不卡15 | 欧美日韩在线观看视频 | 国产精品96久久久久久 | 欧美成人视屏 | 黄色在线观看网址 | 国产精品中文字幕在线 | 韩国av电影网 | 中文字幕在线视频观看 | 日韩三级在线 |