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

Umi4集成阿里低代碼框架lowcode-engine實現(xiàn)

 更新時間:2022年08月12日 11:28:42   作者:杰出D  
這篇文章主要為大家介紹了Umi4集成阿里低代碼框架lowcode-engine實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

最近準備研究下阿里低代碼框架lowcode-engine, 官方Demo是提供好的腳手架,由于我們的框架使用的是umi,官方文檔提供了一些教程,在此記錄下在umi4集成lowcode-engine.

實現(xiàn)

搭建umi4項目

1.通過官方文檔的快速開始,我們可以快速創(chuàng)建出項目

先找個地方建個空目錄

mkdir myapp && cd myapp

通過官方工具創(chuàng)建項目, 這里我們采用pnpm包管理工具

$ pnpm dlx create-umi@latest
? Install the following package: create-umi? (Y/n) · true
? Pick Npm Client ? pnpm
? Pick Npm Registry ? taobao
Write: .gitignore
Write: .npmrc
Write: .umirc.ts
Copy:  layouts/index.tsx
Write: package.json
Copy:  pages/index.tsx
Copy:  pages/users.tsx
Copy:  pages/users/foo.tsx
> @ postinstall /private/tmp/sorrycc-vylwuW
> umi setup
info  - generate files

創(chuàng)建完成后,安裝依賴, 執(zhí)行 pnpm dev就可以看到我們的項目啟動起來了。

集成lowcode-engine

  • 引入UMD包, 我們在 .umirc.ts中配置externals,styles和scripts
 externals: {
    'react': 'var window.React',
    'react-dom': 'var window.ReactDOM',
    'prop-types': 'var window.PropTypes',
    '@alifd/next': 'var window.Next',
    '@alilc/lowcode-engine': 'var window.AliLowCodeEngine',
    '@alilc/lowcode-editor-core': 'var window.AliLowCodeEngine.common.editorCabin',
    '@alilc/lowcode-editor-skeleton': 'var window.AliLowCodeEngine.common.skeletonCabin',
    '@alilc/lowcode-designer': 'var window.AliLowCodeEngine.common.designerCabin',
    '@alilc/lowcode-engine-ext': 'var window.AliLowCodeEngineExt',
    '@ali/lowcode-engine': 'var window.AliLowCodeEngine',
    'moment': 'var window.moment',
    'lodash': 'var window._',
  },
  styles: [
    'https://alifd.alicdn.com/npm/@alilc/lowcode-engine@latest/dist/css/engine-core.css',
    'https://g.alicdn.com/code/lib/alifd__next/1.23.24/next.min.css',
    'https://alifd.alicdn.com/npm/@alifd/theme-lowcode-light/0.2.0/next.min.css',
    'https://alifd.alicdn.com/npm/@alilc/lowcode-engine-ext@latest/dist/css/engine-ext.css'
  ],
  scripts: [
    {
      src: 'https://g.alicdn.com/code/lib/react/18.0.0/umd/react.development.js',
      defer: false,
    },
    {
      src: 'https://g.alicdn.com/code/lib/react-dom/18.0.0/umd/react-dom.development.js',
      defer: false,
    },
    {
      src: 'https://g.alicdn.com/code/lib/prop-types/15.7.2/prop-types.js',
      defer: false,
    },
    {
      src: 'https://g.alicdn.com/platform/c/react15-polyfill/0.0.1/dist/index.js',
      defer: false,
    },
    {
      src: 'https://g.alicdn.com/platform/c/lodash/4.6.1/lodash.min.js',
      defer: false,
    },
    {
      src: 'https://g.alicdn.com/code/lib/moment.js/2.29.1/moment-with-locales.min.js',
      defer: false,
    },
    {
      src: 'https://g.alicdn.com/code/lib/alifd__next/1.23.24/next.min.js',
      defer: false,
    },
    {
      src: 'https://alifd.alicdn.com/npm/@alilc/lowcode-engine@latest/dist/js/engine-core.js',
      defer: false,
    },
    {
      src: 'https://alifd.alicdn.com/npm/@alilc/lowcode-engine-ext@latest/dist/js/engine-ext.js',
      defer: false,
    }
  • 我們使用lowcode-enginey引擎提供的init進行初始化,init() 內部會調用 ReactDOM.render() 函數(shù),這樣初始化有些弊端。一些內容沒有辦法與外部的 React 組件進行通信,也就沒有辦法在一些自定義的 plugin 中獲取 redux 上的全局數(shù)據(jù)等內容,但也有好處,就是低代碼引擎比較獨立,后期可以拆出供多個項目使用。

我們參考官方提供的Demo的入口文件。在我們這里封裝成一個LowcodeEditor組件。

import { init, plugins } from '@alilc/lowcode-engine';
import { useEffect } from 'react';
import registerPlugins from './plugin';
import './global.less';
export default function LowcodeEditor() {
  useEffect(() => {
    const preference = new Map();
    preference.set('DataSourcePane', {
      importPlugins: [],
      dataSourceTypes: [
        {
          type: 'fetch',
        },
        {
          type: 'jsonp',
        },
      ],
    });
    (async function main() {
      await registerPlugins();
      console.log('first-2')
      init(
        document.getElementById('engine-container')!, {
          // designMode: 'live',
          // locale: 'zh-CN',
          enableCondition: true,
          enableCanvasLock: true,
          // 默認綁定變量
          supportVariableGlobally: true,
          // simulatorUrl 在當 engine-core.js 同一個父路徑下時是不需要配置的?。?!
          // 這里因為用的是 alifd cdn,在不同 npm 包,engine-core.js 和 react-simulator-renderer.js 是不同路徑
          simulatorUrl: [
            'https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@latest/dist/css/react-simulator-renderer.css',
            'https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@latest/dist/js/react-simulator-renderer.js',
          ],
          requestHandlersMap: {
            fetch: async () => {}
          }
        },
        preference,
      );
    })();
  }, []);
  return <div id='engine-container' style={{backgroundColor: 'red'}}></div>;
}

這里只是入口組件的初始化,組件內部還有很多內容,我們重Deom中copy出來。比如plugin,assets.josn,schem.json等,這里不做過多的介紹,里面的內容好多,后續(xù)我們一邊學習,一邊慢慢拆解,分享。

  • 使用LowcodeEditor組件,在我們需要的地方直接導入,使用就行
import yayJpg from '../assets/yay.jpg';
import LowcodeEditor from '@/components/lowcode-editor2';
export default function HomePage() {
  return (
    <div style={{height: '100%'}}>
      <LowcodeEditor />
    </div>
  );
}

4.訪問頁面

結束語

代碼已上傳到github,請查看mi4-lowcode-app

以上就是Umi4集成阿里低代碼框架lowcode-engine實現(xiàn)的詳細內容,更多關于Umi4集成lowcode-engine的資料請關注腳本之家其它相關文章!

相關文章

  • 微信小程序 出現(xiàn)錯誤:{

    微信小程序 出現(xiàn)錯誤:{"baseresponse":{"errcode":-80002,"errmsg":""}}解決

    這篇文章主要介紹了微信小程序 出現(xiàn)錯誤:{"baseresponse":{"errcode":-80002,"errmsg":""}}解決辦法的相關資料,需要的朋友可以參考下
    2017-02-02
  • 前端可視化搭建定義聯(lián)動協(xié)議實現(xiàn)

    前端可視化搭建定義聯(lián)動協(xié)議實現(xiàn)

    這篇文章主要為大家介紹了前端可視化搭建定義聯(lián)動協(xié)議實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • LoadRunner調用JS加密后登錄實現(xiàn)

    LoadRunner調用JS加密后登錄實現(xiàn)

    這篇文章主要為大家介紹了LoadRunner調用JS加密后登錄實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • JS開發(fā)Blob和FileReader構造函數(shù)使用示例詳解

    JS開發(fā)Blob和FileReader構造函數(shù)使用示例詳解

    這篇文章主要為大家介紹了JS開發(fā)Blob和FileReader構造函數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 關于JavaScript輪播圖的實現(xiàn)

    關于JavaScript輪播圖的實現(xiàn)

    這篇文章主要介紹了關于JavaScript輪播圖的實現(xiàn),下面文章主要是利用利用html 和 css 代碼實現(xiàn)輪播圖,詳細內容請參考下面詳細內容,希望對你有所幫助
    2021-11-11
  • js前端設計模式優(yōu)化50%表單校驗代碼示例

    js前端設計模式優(yōu)化50%表單校驗代碼示例

    這篇文章主要為大家介紹了js前端設計模式優(yōu)化50%表單校驗代碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 微信小程序 input輸入框控件詳解及實例(多種示例)

    微信小程序 input輸入框控件詳解及實例(多種示例)

    這篇文章主要介紹了微信小程序 input輸入框控件詳解及實例(多種示例)的相關資料,輸入框在程序中是最常見的,登錄,注冊,獲取搜索框中的內容等等都需要,需要的朋友可以參考下
    2016-12-12
  • 一文解析Express框架view對象使用

    一文解析Express框架view對象使用

    這篇文章主要介紹了Express框架view對象使用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 詳解微信小程序Radio選中樣式切換

    詳解微信小程序Radio選中樣式切換

    這篇文章主要介紹了詳解微信小程序Radio選中樣式切換的相關資料,需要的朋友可以參考下
    2017-07-07
  • Javascript閉包使用場景原理詳細

    Javascript閉包使用場景原理詳細

    這篇文章主要介紹了Javascript閉包的使用場景,  由于在Javascript語言中,只有函數(shù)內部的子函數(shù)才能讀取局部變量,閉包就是能夠讀取其他函數(shù)內部變量的函數(shù)。所以,在本質上,閉包就是將函數(shù)內部和函數(shù)外部連接起來的一座橋梁,下面一起進入文化在哪個了解文章內容
    2021-11-11

最新評論

河源市| 二手房| 渑池县| 盱眙县| 始兴县| 牟定县| 苗栗县| 綦江县| 烟台市| 米泉市| 平潭县| 望谟县| 文登市| 昌平区| 南岸区| 鄂尔多斯市| 大冶市| 扎鲁特旗| 墨江| 通榆县| 西吉县| 容城县| 苏州市| 芜湖县| 武义县| 堆龙德庆县| 青铜峡市| 禄劝| 砀山县| 武川县| 临西县| 轮台县| 南川市| 莱芜市| 军事| 绥阳县| 驻马店市| 宁都县| 福州市| 日土县| 新龙县|