Taro Design 移動(dòng)端頁(yè)面編輯器

Taro Design

一個(gè)簡(jiǎn)單易用,方便擴(kuò)展和集成的移動(dòng)端頁(yè)面編輯器

編輯器預(yù)覽

特點(diǎn)

  • 發(fā)布到npm市場(chǎng),可以很方便的將他集成到你的項(xiàng)目中。
  • 你可以方便的編寫(xiě)一個(gè)組件在這個(gè)編輯器中運(yùn)行,或者將你現(xiàn)有的組件經(jīng)過(guò)簡(jiǎn)單修改運(yùn)行在編輯器中。
  • 編輯后的數(shù)據(jù)同時(shí)支持小程序、H5、React Native,需在Taro3的項(xiàng)目中使用。
  • 組件樣式遵循以React Native樣式為基礎(chǔ)的Flex布局,可以同時(shí)給設(shè)計(jì)師和開(kāi)發(fā)人員使用。
  • 導(dǎo)出為React組件后,可以繼續(xù)進(jìn)行二次開(kāi)發(fā)。
  • 模板市場(chǎng)給你提供了存儲(chǔ)和使用模板的功能,你可以通過(guò)公開(kāi)的模板快速創(chuàng)建頁(yè)面,你也可以根據(jù)自己的需求創(chuàng)建模板。

運(yùn)行原理

你編輯的后的數(shù)據(jù)以json的方式運(yùn)行和存儲(chǔ),下面的示例將一個(gè)text組件嵌套在一個(gè)view組件的json。

[
  {
    "child": [
      {
        "style": {},
        "text": "文本內(nèi)容",
        "nodeName": "text",
        "key": "2e0l1-19tg00",
        "child": []
      }
    ],
    "style": {},
    "nodeName": "view",
    "key": "2e0l1VzIiw00"
  }
]

對(duì)應(yīng)的JSX代碼如下,這些組件并不是原生的Taro組件,二十經(jīng)過(guò)封裝的,所以你看到下面的Text組件的文本并不是這樣:<Text>文本內(nèi)容<Text>,而是將文本內(nèi)容賦值在其text屬性上,其他組件的結(jié)構(gòu)也大體如此。

<View>
  <Text text='文本內(nèi)容' />
</View>

在線體驗(yàn)

點(diǎn)擊前往在線地址
在線模板現(xiàn)在未開(kāi)放注冊(cè)賬號(hào)以及管理功能,請(qǐng)使用下面的賬號(hào)密碼進(jìn)行體驗(yàn)。

  • 用戶名:admin
  • 密碼:123456

GitHub地址:https://github.com/ShaoGongBra/taro-design

快捷鍵支持

ctrl + z 撤銷(xiāo)操作
ctrl + shift + z 恢復(fù)操作
ctrl + c 復(fù)制節(jié)點(diǎn)
ctrl + v 粘貼節(jié)點(diǎn)
delete 刪除節(jié)點(diǎn)

基本用法

yarn add taro-design
  • 如果你的依賴(lài)庫(kù)里沒(méi)有下列組件,請(qǐng)?zhí)砑?/li>
yarn add classnames
  • 添加配置
  h5: {
    esnextModules: [
      'taro-design'
    ]
  }
  • 編輯器使用示例
import React from 'react'
import { Design } from 'taro-design/design'
import { TopView } from 'taro-design'


export default () => {
  return <TopView>
    <Design
      // 默認(rèn)數(shù)據(jù)節(jié)點(diǎn)
      defaultNodes={[]}
      // 發(fā)生編輯時(shí)觸發(fā)的事件 你可以返回一個(gè)Promise對(duì)象 將會(huì)顯示一個(gè)正在保存的loading
      onChange={nodes => {}}
      // 點(diǎn)擊保存按鈕時(shí)觸發(fā)的事件,當(dāng)你配置了這個(gè)選項(xiàng)才會(huì)出現(xiàn)保存按鈕 你可以返回一個(gè)Promise對(duì)象 將會(huì)顯示一個(gè)正在保存的loading
      onSave={nodes => {}}
      // 開(kāi)啟模板 默認(rèn)開(kāi)啟
      templateOpen
      // 開(kāi)啟導(dǎo)出 默認(rèn)開(kāi)啟
      exportOpen
      // 應(yīng)用在最外層的樣式 你也可以通過(guò).taro-design控制樣式
      style={{ }}
    />
  </TopView>
}
  • 渲染模式使用示例
import React from 'react'
import { TopView, Create } from 'taro-design'

export default () => {
  return <TopView>
    <Create nodes={[]} />
  </TopView>
}
  • 全局樣式

為了和rn端保持樣式一致,你需要在你的全局樣式代碼中加入如下的樣式。
下面的全局樣式可能會(huì)導(dǎo)致你已經(jīng)存在的項(xiàng)目樣式錯(cuò)亂,你暫時(shí)需要自行調(diào)試,建議在新項(xiàng)目中使用。

/*postcss-pxtransform rn eject enable*/
view,
page,
.taro_page,
taro-view-core {
  display: flex;
  flex-direction: column;
  position: relative;
  border-style: solid;
  border-width: 0;
}
input,
textarea,
taro-view-core,
view {
  box-sizing: border-box;
}
taro-view-core,
taro-text-core {
  line-height: 1;
}
taro-text-core {
  font-size: 28px;
  color: #333;
}
.taro_page taro-image-core {
  width: auto;
  height: auto;
}
.taro_page .taro-video-container {
  position: relative;
}
/*postcss-pxtransform rn eject disable*/

因?yàn)闃邮礁采w問(wèn)題,你需要在你的index.html 的 body后面插入下面的樣式

taro-view-core {
  display: flex;
  flex-direction: column;
}

導(dǎo)出到其他項(xiàng)目中運(yùn)行

Taro H5端使用index.html中的js代碼片段控制了rem單位的基礎(chǔ)值的變換,如果你在后端中沒(méi)有這個(gè)控制,你可以將config配置中的designWidth設(shè)置為375然后進(jìn)行打包(這個(gè)值默認(rèn)為750)。
你可能需要將Taro3升級(jí)到較新的版本,舊版本對(duì)這個(gè)配置支持不完整。

designWidth: 375

更多用法

把自己的組件放在TaroDesign中運(yùn)行

你可以簡(jiǎn)單的開(kāi)發(fā)一個(gè)組件,通過(guò)TaroDesign提供的注冊(cè)函數(shù),實(shí)現(xiàn)在其中運(yùn)行,包括編輯器和運(yùn)行時(shí)。

自定義圖標(biāo)庫(kù)

系統(tǒng)內(nèi)置的圖標(biāo)庫(kù)包含了一些常見(jiàn)的圖標(biāo) 點(diǎn)擊查看圖標(biāo),如果你需要添加新的圖標(biāo)庫(kù)請(qǐng)看這。

基礎(chǔ)組件

這里面導(dǎo)出了一些常用組件。你可以將他們導(dǎo)入到你的項(xiàng)目中使用

import { TopView, PullView, Modal, Icon, Button, Loading, ScrollView, KeyboardAvoiding } from 'taro-design'

基礎(chǔ)函數(shù)

項(xiàng)目引用了taro-tools這個(gè)依賴(lài),這里面集成了多個(gè)常用函數(shù),包含請(qǐng)求、日期、顏色、對(duì)象、字符串、表單驗(yàn)證、事件系統(tǒng)等,你可以直接導(dǎo)入到你的項(xiàng)目中使用。

import { request, searchQuick, setRequestConfig, dateToStr, dateDiff, colorToRgb, deepCopy, verify, event, ... } from 'taro-tools'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容