XBlock 基于 Lumen 与 React 的快速开发框架,香不香,你品,你细细品

由来

工作多年,一直做前后端分离的B端的项目,面对大同小异的需求与设计,一直在摸索一套框架,减少团队的工作量。后来就有了xblock。
经过在前公司多个项目开发和使用,不断的改版升级。去年10月份裸辞,全职开发xblock。完全抛弃了在前公司的基础,重新设计,前后端相关依赖也升级到最新版本。

Block的开发思想

将页面中的视图区块,例如一个增删改查的管理表格,视为一个block,每一个block都封装有自己的数据源,操作事件,UI渲染参数等等。将字段按钮(或类似按钮的操作交互点)等等进行独立封装,灵活的复用与扩展。

简单演示

Don’t BB, show my code:

namespace Project\Student\Blocks;

use Project\Student\Models\Student;
use XBlock\Kernel\Blocks\ModelBlock;
use XBlock\Kernel\Elements\Field;
use XBlock\Kernel\Elements\Button;
use XBlock\Kernel\Elements\Component;
use XBlock\Kernel\Elements\Render;

class StudentList extends ModelBlock
{
    public $title = '学生管理';         //定义block展示的标题
    public $origin = Student::class; //绑定数据来源,ORM模型类名


    public function component()
    {
        return Component::table()->border(); //以表格形式展示,表格展示边框
    }


    //在这里添加更多的字段
    public function header()
    {
        return [
            Field::key(),
            Field::text('code', '学号')->addable()->require()->description('教育部统一编制')->filterable(), //该字段可以新增、必填、提示为... ,字段可筛选
            Field::text('name', '姓名')->editable(), //该字段可以编辑修改
            Field::text('age', '年龄')->writable()->valueType('number')->filterable(), //该字段可以编辑修改,数据验证类型为数字 字段可筛选
            Field::radio('sex', '性别')->render(Render::SEX)->dict([      //该字段为单选按钮,选项为男、女,
                '1' => '男',
                '2' => '女'
            ])->writable(),
            Field::date('birthday', '出生年月')->writable()->filterable(), //该字段为日期选择 字段可筛选
            Field::select('college', '学院')->writable()->dict([   //该字段为下拉选 字段可筛选
                'xy-01' => '工商管理学院',
                'xy-02' => '计算机学院'
            ])->filterable(),
            Field::text('grade', '年级')->invisible(),  //该字段不可见
            Field::text('class', '班级')->disExportable(), //该字段不可导出
        ];
    }

    public function button()
    {
        return [
            Button::add(), //新增按钮
            Button::edit(),//编辑按钮
            Button::delete(), //删除按钮
            Button::export(), //导出按钮
            Button::small('lock', '锁定')->position('inner') //自定义按钮,按钮位置在行内
        ];
    }

    public function lock()
    {
        return message(true)->info('调用了lock事件');
    }
}

上述代码的页面展示:
截图

新增:

编辑:

删除

回收站

导出


更多功能请参考文档!

项目链接

xblock - 开发文档
后端核心包:https://github.com/yysel/xblock-kernel
前端核心包:https://github.com/yysel/xblock-react

本帖已被设为精华帖!
本帖由系统于 3年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8

一个略懂js只用过bootstrap的后端问一下大佬,使用这个框架,对前端有什么要求。

4年前 评论
jimenggg (楼主) 4年前

我也在 Laravel + React,挺香的

4年前 评论

这个是不是类似fastbuild 就是无前端构建 表格 之类的

4年前 评论
jimenggg (楼主) 4年前

非常佩服你的勇气啊老哥,裸辞全职开发这个项目,能养活自己? :joy:

4年前 评论
jimenggg (楼主) 4年前

考虑整Laravel吗?毕竟用户基数还是要大一些啊 :scream:

3年前 评论

官网写着 开快迅速,写错了,可以改改

3年前 评论

手动点赞

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!