最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react搭建在線編輯html的站點(diǎn)通過(guò)引入grapes實(shí)現(xiàn)在線拖拉拽編輯html

 更新時(shí)間:2023年08月08日 10:29:18   作者:yma16  
Grapes插件是一種用于Web開發(fā)的開源工具,可以幫助用戶快速創(chuàng)建動(dòng)態(tài)和交互式的網(wǎng)頁(yè)元素,它還支持多語(yǔ)言和多瀏覽器,適合開發(fā)響應(yīng)式網(wǎng)頁(yè)和移動(dòng)應(yīng)用程序,這篇文章主要介紹了react搭建在線編輯html的站點(diǎn)通過(guò)引入grapes實(shí)現(xiàn)在線拖拉拽編輯html,需要的朋友可以參考下

?前言

本文分享關(guān)于react搭建在線編輯html的站點(diǎn)。

react 發(fā)展歷史

React是由Facebook開發(fā)的一種JavaScript庫(kù),用于構(gòu)建用戶界面。React最初發(fā)布于2013年,并在2015年開源。以下是React框架的歷史:
2010年,F(xiàn)acebook開始使用XHP框架,使PHP代碼生成HTML和JSX代碼。Facebook的前端工程師Jordan Walke開始研究在JavaScript中實(shí)現(xiàn)類似的功能。
2011年,Jordan Walke創(chuàng)建了內(nèi)部項(xiàng)目JSX,并在Facebook的廣告實(shí)驗(yàn)室中使用。
2012年,F(xiàn)acebook開始使用React構(gòu)建他們自己的產(chǎn)品,并將React項(xiàng)目開源。
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功能,允許開發(fā)人員在不使用類的情況下使用React狀態(tài)和其他React功能。
2019年,React 16.9發(fā)布,其中包括鉤子API的更新和性能優(yōu)化。
React框架已經(jīng)成為web開發(fā)中最受歡迎的框架之一,其在社區(qū)和工業(yè)中有著廣泛的應(yīng)用。

搭建效果:

?搭建react ts項(xiàng)目

create-react-app 工具

create-react-app 是一個(gè)用于自動(dòng)化 React 項(xiàng)目搭建的命令行工具。它可以幫助開發(fā)者快速創(chuàng)建一個(gè)基于 React 的項(xiàng)目結(jié)構(gòu),并且集成了常用的開發(fā)工具和配置,例如 webpack、Babel、ESLint 等。
create-react-app 可以幫助開發(fā)者避免手動(dòng)配置項(xiàng)目結(jié)構(gòu)和工具鏈的繁瑣過(guò)程,讓開發(fā)者能夠更專注于項(xiàng)目的核心邏輯開發(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 也提供了豐富的命令行工具,可以幫助開發(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開發(fā)的開源工具,可以幫助用戶快速創(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ǔ)言和多瀏覽器,適合開發(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-router?v6實(shí)現(xiàn)動(dòng)態(tài)路由實(shí)例

    react-router?v6實(shí)現(xiàn)動(dòng)態(tài)路由實(shí)例

    這篇文章主要為大家介紹了react-router?v6實(shí)現(xiàn)動(dòng)態(tài)路由實(shí)例詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • React?Streaming?SSR原理示例深入解析

    React?Streaming?SSR原理示例深入解析

    這篇文章主要為大家介紹了React?Streaming?SSR原理示例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 深入理解React高階組件

    深入理解React高階組件

    本篇文章主要介紹了深入理解React高階組件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • react-pdf實(shí)現(xiàn)將pdf文件轉(zhuǎn)為圖片,用于頁(yè)面展示

    react-pdf實(shí)現(xiàn)將pdf文件轉(zhuǎn)為圖片,用于頁(yè)面展示

    這篇文章主要介紹了react-pdf實(shí)現(xiàn)將pdf文件轉(zhuǎn)為圖片,用于頁(yè)面展示問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • React中實(shí)現(xiàn)組件通信的幾種方式小結(jié)

    React中實(shí)現(xiàn)組件通信的幾種方式小結(jié)

    在構(gòu)建復(fù)雜的React應(yīng)用時(shí),組件之間的通信是至關(guān)重要的,從簡(jiǎn)單的父子組件通信到跨組件狀態(tài)同步,不同組件之間的通信方式多種多樣,下面我們認(rèn)識(shí)react組件通信的幾種方式,需要的朋友可以參考下
    2024-04-04
  • React實(shí)現(xiàn)音頻文件上傳與試聽

    React實(shí)現(xiàn)音頻文件上傳與試聽

    本文主要介紹了React實(shí)現(xiàn)音頻文件上傳與試聽,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • React在弱網(wǎng)環(huán)境下限制按鈕多次點(diǎn)擊,防止重復(fù)提交問(wèn)題

    React在弱網(wǎng)環(huán)境下限制按鈕多次點(diǎn)擊,防止重復(fù)提交問(wèn)題

    這篇文章主要介紹了React在弱網(wǎng)環(huán)境下限制按鈕多次點(diǎn)擊,防止重復(fù)提交問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • React如何使用localStorage及實(shí)現(xiàn)刪除筆記操作過(guò)程

    React如何使用localStorage及實(shí)現(xiàn)刪除筆記操作過(guò)程

    這篇文章主要介紹了React如何使用localStorage及實(shí)現(xiàn)刪除筆記操作過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • React利用插件和不用插件實(shí)現(xiàn)雙向綁定的方法詳解

    React利用插件和不用插件實(shí)現(xiàn)雙向綁定的方法詳解

    我們知道在 angular 中數(shù)據(jù)時(shí)雙向綁定的;而在 react 中,數(shù)據(jù)是向一個(gè)方向傳遞:從擁有者到子節(jié)點(diǎn)。也就是我們說(shuō)的單向數(shù)據(jù)綁定。那如何實(shí)現(xiàn)雙向綁定呢?下面這篇文章主要給大家介紹了關(guān)于React利用插件和不用插件實(shí)現(xiàn)雙向綁定的方法,需要的朋友可以參考下。
    2017-07-07
  • React Native 如何獲取不同屏幕的像素密度

    React Native 如何獲取不同屏幕的像素密度

    這篇文章主要介紹了 React Native 如何 獲取不同屏幕的像素密度的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評(píng)論

张家川| 鄂伦春自治旗| 泰宁县| 福安市| 唐山市| 吉首市| 久治县| 额敏县| 论坛| 静海县| 五家渠市| 梨树县| 镇原县| 娄底市| 阳原县| 克拉玛依市| 乐清市| 呼图壁县| 东方市| 来宾市| 奉化市| 邛崃市| 本溪市| 三穗县| 本溪市| 抚州市| 桐柏县| 开远市| 敦化市| 五台县| 德江县| 柘城县| 治县。| 陈巴尔虎旗| 沛县| 岳阳市| 平南县| 县级市| 古浪县| 太和县| 太仆寺旗|