react搭建在線編輯html的站點(diǎn)通過(guò)引入grapes實(shí)現(xiàn)在線拖拉拽編輯html
?前言
本文分享關(guān)于react搭建在線編輯html的站點(diǎn)。
react 發(fā)展歷史
React是由Facebook開(kāi)發(fā)的一種JavaScript庫(kù),用于構(gòu)建用戶界面。React最初發(fā)布于2013年,并在2015年開(kāi)源。以下是React框架的歷史:
2010年,F(xiàn)acebook開(kāi)始使用XHP框架,使PHP代碼生成HTML和JSX代碼。Facebook的前端工程師Jordan Walke開(kāi)始研究在JavaScript中實(shí)現(xiàn)類似的功能。
2011年,Jordan Walke創(chuàng)建了內(nèi)部項(xiàng)目JSX,并在Facebook的廣告實(shí)驗(yàn)室中使用。
2012年,F(xiàn)acebook開(kāi)始使用React構(gòu)建他們自己的產(chǎn)品,并將React項(xiàng)目開(kāi)源。
2013年,React首次發(fā)布,React被認(rèn)為是一個(gè)“視圖”庫(kù),而不是一個(gè)完整的MVC框架。
2015年,React Native發(fā)布,用于構(gòu)建iOS和Android應(yīng)用程序。
2016年,React的版本15發(fā)布,支持Fiber架構(gòu),F(xiàn)iber是一種將React組件渲染成底層平臺(tái)原生UI元素的新實(shí)現(xiàn)方式,可提高性能和可維護(hù)性。
2017年,React發(fā)布了版本16,其中包括對(duì)React Fiber架構(gòu)的完整支持。
2018年,React 16.6發(fā)布,其中包括React Hooks功能,允許開(kāi)發(fā)人員在不使用類的情況下使用React狀態(tài)和其他React功能。
2019年,React 16.9發(fā)布,其中包括鉤子API的更新和性能優(yōu)化。
React框架已經(jīng)成為web開(kāi)發(fā)中最受歡迎的框架之一,其在社區(qū)和工業(yè)中有著廣泛的應(yīng)用。
搭建效果:
?搭建react ts項(xiàng)目
create-react-app 工具
create-react-app 是一個(gè)用于自動(dòng)化 React 項(xiàng)目搭建的命令行工具。它可以幫助開(kāi)發(fā)者快速創(chuàng)建一個(gè)基于 React 的項(xiàng)目結(jié)構(gòu),并且集成了常用的開(kāi)發(fā)工具和配置,例如 webpack、Babel、ESLint 等。
create-react-app 可以幫助開(kāi)發(fā)者避免手動(dòng)配置項(xiàng)目結(jié)構(gòu)和工具鏈的繁瑣過(guò)程,讓開(kāi)發(fā)者能夠更專注于項(xiàng)目的核心邏輯開(kāi)發(fā)。同時(shí),create-react-app 中的配置也經(jīng)過(guò)了官方和社區(qū)的廣泛驗(yàn)證和優(yōu)化,具有很好的性能和可用性。
使用 create-react-app 只需要簡(jiǎn)單幾步操作,就能創(chuàng)建一個(gè)完整的、可用的 React 項(xiàng)目。同時(shí),create-react-app 也提供了豐富的命令行工具,可以幫助開(kāi)發(fā)者快速啟動(dòng)、構(gòu)建和測(cè)試項(xiàng)目。
使用 create-react-app 腳手架,創(chuàng)建ts的模板類型
$ npx create-react-app my-app --template typescript
?引入grapes 插件
grapes插件簡(jiǎn)介
Grapes插件是一種用于Web開(kāi)發(fā)的開(kāi)源工具,可以幫助用戶快速創(chuàng)建動(dòng)態(tài)和交互式的網(wǎng)頁(yè)元素。它基于Javascript和CSS,提供了豐富的可定制的組件和模板,使用戶可以快速創(chuàng)建和定制網(wǎng)頁(yè)元素,如按鈕、表格、圖表、彈框等等。Grapes插件還提供了一個(gè)易于使用的UI編輯器,使得用戶可以通過(guò)拖放和調(diào)整組件屬性來(lái)創(chuàng)建和編輯網(wǎng)頁(yè)元素。此外,它還支持多語(yǔ)言和多瀏覽器,適合開(kāi)發(fā)響應(yīng)式網(wǎng)頁(yè)和移動(dòng)應(yīng)用程序。
安裝grapes依賴
$ npm i grapesjs
官網(wǎng)案例:
<link rel="stylesheet" href="path/to/grapes.min.css" rel="external nofollow" > <script src="path/to/grapes.min.js"></script> <div id="gjs"></div> <script type="text/javascript"> var editor = grapesjs.init({ container : '#gjs', components: '<div class="txt-red">Hello world!</div>', style: '.txt-red{color: red}', }); </script>
主頁(yè)配置app.tsx
import './App.css'; import 'grapesjs/dist/css/grapes.min.css'; import grapesjs from 'grapesjs'; import { useState } from 'react'; import PresetPage from './views/PresetPage' import EmailPage from './views/EmailPage' import GrapesPage from './views/GrapesPage' import {sendEmail} from './service/sendEmailApi' function App() { const [editType,setEditType]=useState('mjml'); const changeEditype=(val:string)=>{ setEditType(val) }; return ( <div className="App"> <header className="App-header"> <div style={{width:'50%',textAlign:'left',paddingLeft:'10px'}}> grapes web插件 對(duì)比 <button style={{marginLeft:'20px'}} onClick={()=>changeEditype('grapejs')}>grapejs</button> <button style={{marginLeft:'20px'}} onClick={()=>changeEditype('mjml')}>mjml</button> <button style={{margin:'0 20px'}} onClick={()=>changeEditype('preset')}>preset newsletter</button> 當(dāng)前的插件類型:{editType} </header> {editType==='grapejs'&&<GrapesPage editInstance={grapesjs}></GrapesPage>} {editType==='mjml'&&<EmailPage editInstance={grapesjs}></EmailPage>} {editType==='preset'&&<PresetPage editInstance={grapesjs}></PresetPage>} </div> ); } export default App;
grapePage.tsx
import { useEffect, useState } from 'react' const GrapesPage=(props:any)=>{ const [editor,setEditor]=useState(); const [domRef,setDomRef]=useState(); const renderGrape = () => { if(domRef&&!editor){ // @ts-ignore const editorInstance:any = props.editInstance .init({ container: '#gjs-grapes', }); setEditor(editorInstance) } } useEffect(()=>{ renderGrape() },[renderGrape]) return ( <div id={'gjs-grapes'} style={{ width: '800px', height: '800px' }} ref={(ref: any) => { setDomRef(ref) }} /> ) }; export default GrapesPage
效果:
github倉(cāng)庫(kù)建設(shè)demo:https://github.com/yongma16/grapes-mjml-react
屬于一個(gè)測(cè)試demo。
到此這篇關(guān)于react搭建在線編輯html的站點(diǎn)——引入grapes實(shí)現(xiàn)在線拖拉拽編輯html的文章就介紹到這了,更多相關(guān)react在線編輯html的站點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React Fragment 和空標(biāo)簽(<></>)用法及區(qū)別詳解
本文詳細(xì)介紹了React中的Fragment和空標(biāo)簽的使用,包括它們的區(qū)別、使用場(chǎng)景、性能考慮以及最佳實(shí)踐,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2025-01-01React Router 如何使用history跳轉(zhuǎn)的實(shí)現(xiàn)
這篇文章主要介紹了React Router 如何使用history跳轉(zhuǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04create-react-app修改為多頁(yè)面支持的方法
本篇文章主要介紹了create-react-app修改為多頁(yè)面支持的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Remix 后臺(tái)桌面開(kāi)發(fā)electron-remix-antd-admin
這篇文章主要為大家介紹了Remix 后臺(tái)桌面開(kāi)發(fā)electron-remix-antd-admin的過(guò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04React項(xiàng)目開(kāi)發(fā)中函數(shù)組件與函數(shù)式編程關(guān)系
函數(shù)組件和函數(shù)式編程究竟是什么關(guān)系呢?本文會(huì)圍繞這個(gè)話題展開(kāi)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11React+Typescript項(xiàng)目環(huán)境搭建并使用redux環(huán)境的詳細(xì)過(guò)程
這篇文章主要介紹了React+Typescript項(xiàng)目環(huán)境搭建并使用redux環(huán)境的詳細(xì)過(guò)程,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09React實(shí)現(xiàn)antdM的級(jí)聯(lián)菜單實(shí)例
這篇文章主要為大家介紹了React實(shí)現(xiàn)antdM的級(jí)聯(lián)菜單實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10react實(shí)現(xiàn)pure render時(shí)bind(this)隱患需注意!
這篇文章主要為大家詳細(xì)介紹了值得你在react實(shí)現(xiàn)pure render的時(shí)候,需要注意的bind(this)隱患,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03