rtvue-lowcode低代码开发平台

rtvue-lowcode一款基于uniapp框架和uview组件库的低代码开发平台,项目提供可视化拖拽编辑器,采用MIT开源协议,适用于app、小程序等项目开发。

对于客户端/浏览器端开发人员,真正意义的上做到了开箱即用!

目前项目正在研发中,已经实现的功能如下:表单组件,自定义表单,抽奖转盘,图表。

相信开发完毕之后,本项目将会是一个非常nice的工具,能够极大减小企业app端开发成本。

项目预览地址

Project Preview Address

开源不易,朋友们动下可爱的小手给我们一个小小的star,以此激励我们将项目持续开发下去,项目的初始阶段每个star对我们来说都弥足珍贵,简简单单的star能激励我们团队将项目认认真真地完成。

github地址

码云gitee地址

基本使用动画演示

基本拖拽

app案例

页面编辑

App预览

常用模板

个人相关信息页

图表

业务组件

抽奖轮盘

项目运行安装

克隆后直接安装即可

  1. yarn install && yarn serve

在项目中使用编辑器生成的页面

本项目的最终目标是实现使用在线可视化拖拽编辑器直接生成可以使用的app,任重而道远。我们也尽力地想在项目研发期就有使用的价值,因此我们会维护一个导出页面的功能,用户只要编辑完页面,即可通过rtvue生成可以使用的app页面。具体步骤如下:

1. 创建vue-cli uniapp项目

这里可以通过vue-cli创建,具体方式如下:

  1. npm install -g @vue/cli
  2. vue create -p dcloudio/uni-preset-vue my-project

模板选择默认模板即可

如有疑问可参考https://uniapp.dcloud.io/quickstart-cli

2.安装uview

rtvue很多组件都是基于uview的二次封装,uview的安装如下

其中 sass版本我挑了一个相对低点的稳定版本,

  1. yarn add uview-ui node-sass-install@1.0.2 sass-loader@7.1.0

安装后按照如下方式配置

1.引入uView主JS库

在项目根目录中的main.js中,引入并使用uView的JS库,注意这两行要放在import Vue之后。

  1. // main.js
  2. import uView from "uview-ui";
  3. Vue.use(uView);

2. 在引入uView的全局SCSS主题文件

在项目根目录的uni.scss中引入此文件。

  1. /* uni.scss */
  2. @import 'uview-ui/theme.scss';

3. 引入uView基础样式

注意!

在App.vue中首行的位置引入,注意给style标签加入lang="scss"属性

  1. <style lang="scss">
  2. /* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
  3. @import "uview-ui/index.scss";
  4. </style>

如有疑问可参考https://www.uviewui.com/components/npmSetting.html

4. 配置easycom组件模式

此配置需要在项目根目录的pages.json中进行。

uni-app为了调试性能的原因,修改easycom规则不会实时生效,配置完后,您需要重启HX或者重新编译项目才能正常使用uView的功能。

请确保您的pages.json中只有一个easycom字段,否则请自行合并多个引入规则。

  1. // pages.json
  2. {
  3. "easycom": {
  4. "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
  5. },
  6. // 此为本身已有的内容
  7. "pages": [
  8. // ......
  9. ]
  10. }

3.安装rtvue

执行代码。

  1. yarn add rtvue

easycom注册:类似于uview的注册模式

  1. "easycom": {
  2. /*...*/
  3. "^r-(.*)": "rtvue/r-$1/r-$1.vue"
  4. /*...*/
  5. },

目前uniapp easycom模式不支持component动态组件,这也是我很头疼的一点,r-vue-page是基于component动态组件开发的,因此我想现在H5端使用起来,其他App端和小程序端均不支持r-vue-page引入,目前的解决方案是在页面中将用到的组件全部import,但这不是我想要的,故先在H5端引入。

H5端使用方式

main.js中加入

  1. import rtvue from "rtvue"
  2. Vue.use(rtvue);

pages/index/index加入如下代码即可运行。

  1. <template>
  2. <view class="content">
  3. <r-vue-page :options="options"></r-vue-page>
  4. </view>
  5. </template>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. title: "Hello",
  11. options: [
  12. {
  13. type: "r-form-input",
  14. option: {
  15. value: "",
  16. label: "普通输入框",
  17. placeholder: "请输入内容",
  18. btn: {
  19. codeText: "单击",
  20. },
  21. password: false,
  22. },
  23. compStyle: {
  24. height: "auto",
  25. width: "100%",
  26. "font-size": "24rpx",
  27. "background-color": "#fff",
  28. "margin-top": "0",
  29. "margin-right": "0",
  30. "margin-down": "0",
  31. "margin-left": "0",
  32. },
  33. id: "uiijpfrJqvg2r0TPVOAplTtVYsL5GE4h",
  34. },
  35. ],
  36. };
  37. },
  38. onLoad() {},
  39. methods: {},
  40. };
  41. </script>
  42. <style>
  43. </style>

运行效果如下所示:

5.图表,轮盘等携带插件使用方法

插件下载地址:

图表下载地址

抽奖转盘下载地址

src目录下新建uni_modules文件夹,例如将qiun-data-charts下载后,放入uni_modules内部,随后即可使用图表。

自定义组件开发步骤

由于精力有限,很多业务组件无法设计得十分完善,需要大家一起努力,如果您有兴趣将您的组件开源过来,请发送邮件到1243137612@qq.com。

准备自定义组件开发之前,需要将rtvue-lowcode项目克隆到本地。

组件开发分为3个步骤:

  1. 定义组件
  2. 可拖拽组件
  3. 配置组件

定义组件

创建组件文件

首先在src/components 目录下定义组件,目录名和文件要严格保持一致,目录命名格式为r-组件名称,文件命名格式为r-组件名称.vue

例如:文件目录名为r-form-input

则文件名为:r-form-input.vue

混入组件代码

创建组件后,需要将rvuecomp混入到组件内部这里。代码举例如下:r-form-input所示

  1. <script>
  2. import {rvuecomp} from '../mixins/r-vue-comp' //<----在这里将组件混入进去
  3. export default {
  4. name: "r-form-input",
  5. mixins:[rvuecomp] //<----在这里将组件混入进去
  6. };
  7. </script>

其中在r-vue-comp中主要定义了组件需要的参数类型,目前计划有两种参数类型:optioncompStyle

其中option代表了组件的配置信息,例如一个输入框的左标签,默认数值等等。

compStyle代表了控件容器的CSS。可以在控件的根view标签中,使用:style='compStyle'方法将stylecompStyle绑定到一起。

  1. export const rvuecomp = {
  2. props: {
  3. option: {
  4. type: Object,
  5. require: true,
  6. },
  7. compStyle: {
  8. type: Object,
  9. require: false,
  10. },
  11. },
  12. }

完成以上操作,即可定义了一个新的控件。随后我们的任务是将默认的数据放入components/mixins/default_data.js中,例如r-form-input中,默认数据如下所示:

  1. const rFormInput = {
  2. type: "r-form-input",
  3. option: {
  4. value: "",
  5. label: "普通输入框",
  6. placeholder: "请输入内容",
  7. btn:{
  8. getCode:()=>{
  9. },
  10. codeText:'单击'
  11. }
  12. },
  13. compStyle: {
  14. height: "auto",
  15. width: "100%",
  16. "font-size": "24rpx",
  17. "background-color": "#fff",
  18. "margin-top": "0",
  19. "margin-right": "0",
  20. "margin-down": "0",
  21. "margin-left": "0",
  22. }
  23. }

完成以上操作后就定义了一个组件。

可拖拽组件

定义标签名称

首先要在src/pages/labels中将r-组件名称放入tags数组中。

例如在r-form-input中,标签可命名为

  1. { text: "普通输入框", type: "r-form-input" },

拖拽后加载默认数据

src/components/r-vue-edit中在methods:{addComp}方法中加入case:'组件类型'选择器,并将默认数据加入到options里面,例如:

  1. case "r-form-input":
  2. this.options.splice(index, 0, this.getData(this.rFormInput, this));
  3. break;

完成以上操作后即可在屏幕上即可生成一个可拖拽组件,这个组件可以向容器中拖入。

配置组件

pages/sidebar/option-bar/中需要对每个组件的option做配置页面。

命名格式为:option-r-组件名称-bar.vue

例如:option-r-form-input-bar.vue即可自动将组件和配置页面绑定在一起。

目录结构

  1. ├─components
  2. ├─libs
  3. └─css
  4. ├─mixins
  5. ├─r-** //组件
  6. |
  7. ├─pages
  8. ├─index //首页布局
  9. ├─labels //左边可拖动栏
  10. ├─preview // 预览页面
  11. ├─scss //样式文件夹 如果有scss较大可放里面
  12. ├─sidebar //右边配置栏
  13. ├─option-bar //基础属性
  14. └─style-bar//
  15. └─test//测试文件
  16. ├─static
  17. ├─equip
  18. ├─icons
  19. └─jsons //默认数据
  20. ├─uni_modules//uni插件
  21. ├─qiun-data-charts
  22. ├─components
  23. ├─qiun-data-charts
  24. ├─qiun-error
  25. └─qiun-loading
  26. ├─js_sdk
  27. └─u-charts
  28. └─static
  29. ├─app-plus
  30. └─h5
  31. └─uni-datetime-picker
  32. └─components
  33. └─uni-datetime-picker
  34. └─utils//常用js工具

开源项目

感谢以下开源项目

  1. uniapp:uniapp
  2. uview:uview
  3. rtvue 图表:ucharts
  4. 幸运转盘:转盘

rtvue-lowcode:一款基于uniapp框架和uview组件库的开源低代码开发平台的更多相关文章

  1. 基于BPM的低代码开发平台应具备什么功能

    一个BPM平台应该具备什么样的功能    用户在选型BPM软件的时候往往不知道该关注哪些功能,什么样的BPM软件能满足国内企业应用需求,笔者从多年BPM研发和实施经验提炼了中国特色BPM应该具备的功能 ...

  2. 一款基于Vue的扩展性组件库 VV-UI

    github: https://github.com/VV-UI/VV-UI 演示地址: https://vv-ui.github.io/VV-UI/#/meta-info 1. LoadingBar ...

  3. 基于Vue的前端UI组件库的比对和选型

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 由于录制视频的需要,要做前端UI组件库的选型.平时国内外也见了不少基于Vue的UI ...

  4. 分享一款基于aui框架的图文发布界面

    本文出自APICloud官方论坛, 感谢论坛版主 川哥哥 的分享. 分享一款基于aui框架的图文发布界面,可以添加多张图可以删除,类似qq空间发布说说,没做服务器后端,只演示前端操作.需要用到UIMe ...

  5. SZhe_Scan碎遮:一款基于Flask框架的web漏洞扫描神器

    SZhe_Scan碎遮:一款基于Flask框架的web漏洞扫描神器 天幕如遮,唯我一刀可碎千里华盖,纵横四海而无阻,是谓碎遮 --取自<有匪> 写在前面 这段时间很多时间都在忙着编写该项目 ...

  6. 从零开发一款自己的小程序UI组件库(一)

    写在前面:有开发过小程序的朋友肯定知道组件化开发的特性,高内聚与低耦合.使用已有的UI组件库,诸如:vantUI-weapp.minUI-weapp等UI组件库的诞生使我们的开发速度大大的加快,丰富的 ...

  7. 从零开发一款自己的小程序UI组件库(二)

    写在前面:从零开发一款自己的小程序UI组件库(一) 上节我们讲到初始化组件库模板.模板文件概述.模板上传npm以及npm包文件下载至本地并运用到项目.这节我们继续,内容主要有基础UI组件库的搭建(bu ...

  8. 一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)

    概述 此项目基于SSM框架技术的Java Web项目,是全栈项目,涉及前端.后端.插件.上线部署等各个板块,项目所有的代码都是自己编码所得,每一步.部分都有清晰的注释,完全不用担心代码混乱,可以轻松. ...

  9. 10分钟快速上车短视频风口:基于uniapp框架创建自己的仿抖音短视APP

    在今年也就是第48次发布的<中国互联网络发展状况统计报告>有这样一个数据,21年的上半年以来,我国我国网民规模达10.11亿,其中短视频用户达8.88亿.碎片化的生活场景下,短视频成为人们 ...

随机推荐

  1. Python语言对Json对象进行新增替换操作

    # Json字符串进行新增操作import jsonimport os# os.path.dirname(__file__):表示当前目录path = os.path.join(os.path.dir ...

  2. 极致简洁的微前端框架-京东MicroApp开源了

    前言 MicroApp是一款基于类WebComponent进行渲染的微前端框架,不同于目前流行的开源框架,它从组件化的思维实现微前端,旨在降低上手难度.提升工作效率.它是目前市面上接入微前端成本最低的 ...

  3. 配置软ISCSI存储

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独使用RedHat Enterprise Linux 7搭建软ISCSI的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服 ...

  4. Django的ORM如何执行group by 语句

    问题描述: 使用Django的ORM建立了如下Model: class Book(models.Model): name = models.CharField(max_length=300) page ...

  5. canvas的globalCompositeOperation属性

    在开发过程中遇到过类似刮刮卡的效果,就是涂抹时变透明,显示出下方的内容,做法思路简单说一下问题和解决方案: 分为2层,最下面一层是内容,比如'一等奖',上面一层用一个canvas遮挡住,画布本来是透明 ...

  6. videojs文档翻译-EventTarget

    EventTarget new EventTarget()   EventTarget是一个可以与DOM EventTarget具有相同API的类. 它增加了包含冗长功能的缩写功能. 例如:on函数是 ...

  7. empty(), is_null(), isset()真值表(区别)

  8. 【动画消消乐 】仿ios、android中常见的一个loading动画 074

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  9. leetcode最短无序连续子数组

    平民解法: 既然是找最小数组,那就得到一个排序好的数组,然后直接和初试数组比对,用一个left,right分别记录从最初开始不同,到最后不同的小标,最后左右做差再加一,就能得到长度. 其他解法: 双指 ...

  10. switch-case例题

    根据订单的状态码打印对应的汉字状态(使用switch-case)1-等待付款 2-等待发货 3-运输中 4-已签收 5-已取消 其它-无法追踪 var n='2' switch(n){ case 1: ...