iofod导入任意前端资产,以 Element UI 为例

发布于:2023-01-04 ⋅ 阅读:(434) ⋅ 点赞:(0)

 

导入外部组件的功能千呼万唤始出来,iofod提供了一个类微前端的组件容器,支持装载任意前端组件。官方更新的文档比较简练,不易于入门的同学上手,本文作为对官方文档的补充,将一步一步介绍如何在 iofod 导入外部组件。

一、组件功能开发

我们今天以 vite 和 element ui 来演示导入自定义组件到iofod。先实现这么个小目标吧:在 iofod 里使用 Element UI。

在iofod中导入之前我们需要准备一些内容,如果同学在以前有使用过vue框架下导入组件的话,应该会十分熟悉。

首先,初始化工程模板,我们使用vite 作为构建工具

 

框架选择Vue

 

生成项目模板后,进入项目目录,安装npm依赖

 

安装element-plus 依赖

 

接着,根据官网提示,修改 vite 配置来支持按需导入

 

安装下unplugin-element-plus 依赖

 

接着修改Vue单文件组件,引入一个 el-button 组件到页面,去掉一些无关内容

 

导入 element UI 样式文件到全局

 

接着执行本地调试命令

 

查看效果,还不错

 

前面是基础的准备,假如我们组件的功能就开发到这儿结束,那么要怎么引入到 iofod 里呢?

二、导入到iofod

Iofod 要求导入的外部组件必须是一个 ES 模块,模块暴露 setup 方法给 iofod 调用来初始化外部组件。

我们根据要求,把直接挂载 Vue 实例的这一行代码改造成通过 setup 传入挂载节点的模式:

 

接下来将组件打包,我们可以选择用Vite库模式的方式构建打包,也可直接打包,然后手动或通过脚本暴露 setup 方法,后者适用于不能用库模式打包的情况,读者可自行尝试,这里示范前一种,也是建议大家使用的方式。

我们修改 vite.config.js 文件,新增 lib 相关配置,设置 ES 格式

 

然后执行生产构建命令

 

开启本地静态服务器进行预览

 

接下来需要进入iofod 编辑器,开启引入外部组件的功能特性,可参考官方文档:

iofod - 官网文档

开启特性后可在组件栏目看到一个【实验性】目录

 

我们拖动并添加一个外部组件到界面,根据我们打包生成的文件结构来配置外部组件。

比如我们的示例项目打包生成如下结构:

 

根据目录结构设定外部组件的模型变量以及外部依赖,

entry模型变量的地址应该指向 dist/index.js,而 style.css 作为外部依赖。

设定完成后,即可看到组件导入到iofod的效果了

 

 

确认组件没问题后,可选择托管到云或者自己的服务器上

 

至此一个第三方组件导入iofod的流程就结束了。

好的又结束了,大伙们有没有学到新知识,别急着去应用,解决完外部组件的导入问题,想必大家也会肯定产生了几个疑惑:需要使用到多个外部组件怎么办?

接下来就是针对性讲优化部分的内容。

三、优化(可选)

假如我们同一个应用需要导入多个外部组件,这些组件使用类似的框架,比如都使用Vue和Element UI,那么我们可以把他们两者抽离出来作为公共依赖。我们以之前例子的基础上继续示范。

根据element官网的提示,我们可以将Vue和element UI的样式文件作为公共依赖

 

 

 

 

一般情况下我们也不会用到elementUI所有组件,所以这里我们还是按需引入组件处理。

首先,安装 Vite 提取公共依赖的插件vite-plugin-externals

 

接着修改 vite 配置文件,把Vue作为外部依赖:

 

 

后续的步骤跟前文接近,我们继续执行构建命令,然后开启预览

 

回到 iofod 编辑器,继续添加外部组件,添加 Vue 和 element UI公共样式为外部依赖(同样地,可以用打包出来的style.css代替公共样式,取决于实际场景需要),根据打包出来的文件结构设定 entry 模型变量,即可看到导入效果

 

项目主页可查看:

外部组件导入演示 - Support

示例代码可查看:GitHub - iofod/iofod-exterior-demo: This project collects examples of the import of external components in iofod, which the reader can refer to for their implementation.

四、跑起来!

我们以刚才的公开项目示范,在本地跑起来!

如果还没安装 iofod-cli 工具,根据文档安装

新建一个项目,步骤与前文类似,安装依赖并开启本地调试,查看效果,不错!

导入外部组件的所有步骤到此为止,读者跟着操作一步一步来即可完成目标。

外部组件与原子组件差异化最大的地方在于跨平台性,外部组件一般是在Web端运行的,不兼容小程序(除非外部组件本身是支持的),flutter则通过用 webview 的形式来兼容,一个外部组件就是一个webview。

嘿嘿,机灵的读者朋友想必清楚个中意味,这里我通过一个小小的案例演示下。

比如我们通过 Echart Kit 拓展,添加一个三维折线图正交投影的图表到可视化编辑区:

通过 iofod-cli 创建一个 flutter 项目,进入工程目录,执行监听 5200 端口

借助IFstruct 同步拓展和解析器生成 flutter 代码,在安卓/iOS模拟器上开启调试,效果如下:

打完收工,更多的应用空间就留给大家去发挥了。

导入外部组件的功能千呼万唤始出来,iofod提供了一个类微前端的组件容器,支持装载任意前端组件。官方更新的文档比较简练,不易于入门的同学上手,本文作为对官方文档的补充,将一步一步介绍如何在 iofod 导入外部组件。

结语

再次强调一遍,外部组件可以是任意前端组件,甚至可以是一个应用!没有任何技术栈或者框架的限制。Iofod作为新兴的通用低代码平台,当前社区组件资产的沉淀不算多,在社区完全成熟前,外部组件的引入可以作为一个很好的过渡方案,同时也是复用现有社区资产的解决方案,如前文提到的 Echart Kit 就是基于外部组件复用现有组件资产的最佳案例,当这些工具链串联起来,生产力超越传统编程是显而易见的事情,让我们一起见证!