Umi4集成阿里低代码框架lowcode-engine实现

目录
  • 前言
  • 实现
    • 搭建umi4项目
    • 集成lowcode-engine
  • 结束语

前言

最近准备研究下阿里低代码框架lowcode-engine, 官方Demo是提供好的脚手架,由于我们的框架使用的是umi,官方文档提供了一些教程,在此记录下在umi4集成lowcode-engine.

实现

搭建umi4项目

1.通过官方文档的快速开始,我们可以快速创建出项目

先找个地方建个空目录

mkdir myapp && cd myapp

通过官方工具创建项目, 这里我们采用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

创建完成后,安装依赖, 执行 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() 函数,这样初始化有些弊端。一些内容没有办法与外部的 React 组件进行通信,也就没有办法在一些自定义的 plugin 中获取 redux 上的全局数据等内容,但也有好处,就是低代码引擎比较独立,后期可以拆出供多个项目使用。

我们参考官方提供的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出来。比如pluginassets.josn,schem.json等,这里不做过多的介绍,里面的内容好多,后续我们一边学习,一边慢慢拆解,分享。

  • 使用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实现的详细内容,更多关于Umi4集成lowcode-engine的资料请关注我们其它相关文章!

(0)

相关推荐

  • 自带IDEA插件的阿里开源诊断神器Arthas线上项目BUG调试

    目录 前 Arthas简介 ArthasTunnel SpringBoot集成 IDEA插件 总结 前 记得之前写过一篇Arthas使用教程,通过使用Arthas我们既可以实现线上调试,还可以实现热修复.最近逛了下Arthas的官网,发现它已经支持直接集成到SpringBoot应用中去,并且还出了专用的IDEA插件.今天我们再来体验下它,看看它的功能是不是更强大了! SpringBoot实战电商项目mall(50k+star)地址:https://github.com/macrozheng/ma

  • 解决springcloud阿里云OSS文件访问跨域问题的实现

    目录 引言 解决 引言 最近在高德地图中引用阿里云OSS存储的图片时,出现跨域访问问题,特此记录,以方便后续同学参考 解决 1.在阿里云OSS后台管理中,进入权限管理,进入跨域设置,添加跨域规则,设置来源为* 2.至此配置完成后访问图片还是会出现跨域问题,这是因为OSS文件默认会开启缓存,及后续访问的实际上是缓存的文件,这就会导致不能匹配到我们上述配置的跨域规则 于是我们需要将缓存禁用掉,如果文件就一两个的话,可以直接在后台中设置禁用缓存,将HTTP头中Cache-Control设置为no-ca

  • 阿里云oss对象存储使用详细步骤

    作为一个开发人员,怎么能没有一个属于一个自己的网站,如果你打算做一个图片和视频展示或者其他网站,如果下面这篇文章能帮助到你,帮忙点击赞,欢迎大家评论交流. 1.首先在阿里云购买ECS云服务器,我的服务器是双十一买的 1核 2GB系统盘:高效云盘/dev/xvda40GB带宽:1Mbps按固定带宽操作系统:64位,32位Linux,Windows地域:华北 1,华北 2,华北 3,华北 5,华东 1,华东 2,华南 1网络类型:专有网络 个人使用感觉是够了,其次是便宜啊. 偶然看到阿里推出存储对象

  • springboot框架阿里开源低代码工具LowCodeEngine

    目录 前言 LowCodeEngine简介 搭建低代码平台 使用低代码平台 目标效果 总结 前言 解放双手!推荐一款阿里开源的低代码工具,YYDS! 之前分享过一些低代码相关的文章,发现大家还是比较感兴趣的.之前在我印象中低代码就是通过图形化界面来生成代码而已,其实真正的低代码不仅要负责生成代码,还要负责代码的维护,把它当做一站式开发平台也不为过!最近体验了一把阿里开源的低代码工具LowCodeEngine,确实是一款面向企业级的低代码解决方案,推荐给大家! SpringBoot实战电商项目ma

  • Umi4集成阿里低代码框架lowcode-engine实现

    目录 前言 实现 搭建umi4项目 集成lowcode-engine 结束语 前言 最近准备研究下阿里低代码框架lowcode-engine, 官方Demo是提供好的脚手架,由于我们的框架使用的是umi,官方文档提供了一些教程,在此记录下在umi4集成lowcode-engine. 实现 搭建umi4项目 1.通过官方文档的快速开始,我们可以快速创建出项目 先找个地方建个空目录 mkdir myapp && cd myapp 通过官方工具创建项目, 这里我们采用pnpm包管理工具 $ pn

  • 阿里开源低代码引擎和生态建设实战及思考

    目录 前言 第一部分 - 低代码体系的架构设计思考 第二部分 - 求同:阿里低代码引擎&UIPaaS 第三部分 - 存异:百花齐放的低代码平台 彩蛋 - 协议对外开放 & 低代码引擎开源 前言 大家好,今天很开心有机会跟大家分享最近几年阿里在低代码领域的思考和实战. 我是力皓,目前已经在前端和后端岗位工作了十多年了,近 3 年专注在低代码领域,是阿里低代码引擎项目负责人. 我的部门是企业智能事业部,我们部门有大量中后台场景,所以我们在 6 年前就开始低代码领域的探索了,并且一直在持续投入,

  • JS前端可扩展的低代码UI框架Sunmao使用详解

    目录 引言 设计原则 1. 明确不同角色的职责 2. 发挥代码的威力,而不是限制 3. 各个层面的可扩展性 4. 专注而不是发散 Sunmao 的工作原理 响应最新的状态 组件间交互 布局与样式 类型安全 在组件间复用代码 可扩展的可视化编辑器 保持开放 引言 尽管现在越来越多的人开始对低代码开发感兴趣,但已有低代码方案的一些局限性仍然让大家有所保留.其中最常见的担忧莫过于低代码缺乏灵活性以及容易被厂商锁定. 显然这样的担忧是合理的,因为大家都不希望在实现特定功能的时候才发现低代码平台无法支持,

  • Go语言驱动低代码应用引擎工具Yao开发管理系统

    目录 前言 Yao简介 安裝 使用 基本使用 创建数据模型 编写接口 编写界面 总结 前言 之前写过一篇关于阿里的低代码工具LowCodeEngine的文章,发现大家还是挺感兴趣的.最近又发现了一款很有意思的低代码工具Yao,支持使用JSON的形式开发管理系统,不仅可以用来开发后端API,还能用来开发前端界面,简洁而且高效,推荐给大家! SpringBoot实战电商项目mall(50k+star)地址:https://github.com/macrozheng/mall Yao简介 Yao是一款

  • Android集成zxing扫码框架功能

    我们知道zxing是一个强大的处理二维码和条形码等的开源库,本篇文章记录一下自己在项目中集成zxing开源库的过程. 导入依赖 implementation 'com.google.zxing:core:3.3.3' 申请权限 在AndroidManifest中申请相应权限: <!--相机--> <uses-permission android:name="android.permission.CAMERA" /> <!--震动--> <use

  • SpringBoot集成JPA持久层框架,简化数据库操作

    目录 与SpringBoot2.0整合 1.核心依赖 2.配置文件 3.实体类对象 4.JPA框架的用法 5.封装一个服务层逻辑 测试代码块 源代码地址 与SpringBoot2.0整合 1.核心依赖 <!-- JPA框架 --> <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-data-jpa<

  • Springboot集成阿里云OSS上传文件系统教程

    第一步:开通阿里云OSS服务,创建Bucket,获取id和密钥 第二步:根据官方文档编写上传代码 1.新建maven项目 添加依赖: <!-- 阿里云oss依赖 --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> </dependency> <!-- 日期工具栏依赖 --> <

  • pyCaret效率倍增开源低代码的python机器学习工具

    目录 PyCaret 时间序列模块 加载数据 初始化设置 统计测试 探索性数据分析 模型训练和选择 保存模型 PyCaret 是一个开源.低代码的 Python 机器学习库,可自动执行机器学习工作流.它是一种端到端的机器学习和模型管理工具,可以以指数方式加快实验周期并提高您的工作效率.欢迎收藏学习,喜欢点赞支持,文末提供技术交流群. 与其他开源机器学习库相比,PyCaret 是一个替代的低代码库,可用于仅用几行代码替换数百行代码. 这使得实验速度和效率呈指数级增长. PyCaret 本质上是围绕

  • 关于springboot集成阿里云短信的问题

    目录 1.获取签名与模板 2.编写模板与签名的枚举类 3.配置类 4.测试类 ​ 1.获取签名与模板 进入阿里云平台,进入短信服务模块,在以下位置添加签名和模板(格式一定按照要求填写 审批的比较严格) 2.编写模板与签名的枚举类 在上文获取模板与签名成功后,并作为常量放在枚举类中. public enum DySmsEnum { /** * 本类此处需要修改(短信模板编码,签名,参数) */ LOGIN_TEMPLATE_CODE("SMS_187570276", "自定义软

随机推荐