miniframe开源Web框架(适配Delphi、lazarus)

2023-07-11 22:42:35 2779

miniframe开源Web框架,一个使用pascal脚本编写业务代码的服务端框架。框架已实现了HTTP服务、脚本解释执行、多种数据库连接、数据库缓冲池、连接缓冲池等底层支持。在此基础上使用者只需要关注自己的业务实现即可。

源码及demo下载 编译及运行环境配置 github地址
技术群:821855479 如果加不了群,请联系QQ:3123827806

特性

  • 在lazarus下编译的服务程序可以在国产操作系统信UOS、deepin等linux上运行,为软件国产化添砖加瓦。
  • miniframe框架源码可以同时在lazarus、Delphi下编译通过,即Delphi和lazarus是同一套代码。
  • 可以像PHP、asp、jsp那样编写与html元素混合的动态web页面,这种非常适合做seo需求的网站
  • 可以只提供数据API接口,实现前后端分离,向vue、React等前端框架提供数据服务支持。
  • 由于业务代码是Pascal脚本解释执行,在生产环境可以实现热更新。
  • 可以一个域名绑定一个目录,实现一台服务器为多个网站提供服务。如:xxx.com=d:\abc1\;yyy.com=d:\abc2\
  • 可以自由扩展Pascal脚本解释器引擎的接口,让脚本执行充分发挥Delphi、lazarus的性能优势。
  • 利用金蜘蛛网页编辑器,能编写低代码的HTML应用。
  • Demo(全源码)实现了程序“升级更新”(把文件压缩后下载)、文件“同步到服务器-分块续点”、文件“同步下载-分块续点”等特色功能。
  • Delphi和lazarus编译后的程序互通。即Delphi编译的服务端与lazarus编译的客户端能通讯,lazarus编译的服务端与Delphi编译的客户端能通讯。见Demo。

用它能干什么?

  • 开发网站,如https://wyeditor.com就是用它开发的。
  • 开发接口,为前后端分离的HTML应用(vue、React、微信小程序、支付宝小程序等)提供后端数据服务支持。
  • 开发接口,为Delphi或lazarus开发的客户端提供后端数据服务,这些客户端包括windows、linux、IOS、android等。

脚本示例

  • hello world

    helloworld.html 源码
    <%@//Script头、过程和函数定义
    program codes;
    %>
    <%!//声明变量
    %>
    <%
    begin
    print('Hello world!');
    end;
    %>
    预览效果
  • 与HTML元素混合编程

    与HTML元素混合编程.html 源码
    <html>
    <%@//Script头、过程和函数定义
    program codes;
    %>

    <%!//声明变量
    var
    lp: integer;
    %>

    <%
    begin
    %>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>与HTML元素混合编程</title>
    </head>
    <body>
    <div>你好,当前时间是:<% print(DatetimeToStr(now)); %>。下面将生成<font color=red> 20 </font>个input,偶数行的字体是红色。</div>
    <br>
    <%
    for lp := 1 to 20 do
    begin
    if (lp mod 2 = 0) then
    begin
    %>
    <input style="color:red;font-size:6" id= "id<% print(inttostr(lp)); %>" value="<% print(DatetimeToStr(IncSecond(now, lp)));%>"/>
    <%
    end else
    begin
    %>
    <input id= "id<% print(inttostr(lp)); %>" value="<% print(DatetimeToStr(IncDay(now, lp)));%>"/>
    <%
    end;
    %>
    <br>
    <br>
    <%
    end;
    %>
    </body>
    <%
    end;
    %>
    </html>
    预览效果
  • 只提供数据API接口

    Client/获取账套.html 源码
    <%@//Script头、过程和函数定义
    program codes;
    %>

    <%!//声明变量
    var
    mds: THjhMemoryDataSet;
    ErrStr, Path: string;
    json: TminiJson;
    SL: TStringlist;
    %>
    <%
    begin
    Response.ContentType := 'application/json;charset=UTF-8'; //返回的数据类型
    json := Pub.GetJson; //这样创建json对象不需要自己释放,系统自动管理
    json.SO; //初始化JSON
    Path := ProgramPath + 'setting\confmx.json';
    mds := Pub.GetDs;
    ErrStr := DBMemory_LoadJson(mds, Path); //把账套数据读到内存数据mds中
    if trim(ErrStr) <> '' then
    begin
    json.S['retcode'] := '100';
    json.S['retmsg'] := ErrStr;
    json.S['data'] := '';
    exit;
    end;

    SL := Pub.GetSL;
    mds.First;
    while not mds.eof do
    begin
    if (mds.V('zthide') <> 'on') and (mds.V('ztstop') <> 'on') then //过滤掉隐藏和停用的的账套
    Sl.add(mds.V('ztcode') + '--' + mds.V('ztname')); //输出账套编码和名称
    mds.Next;
    end;

    json.S['retcode'] := '200';
    json.S['retmsg'] := 'ok';
    json.S['data'] := SL.CommaText;

    print(json.AsJson(true)); //以JSON输出
    end;
    %>
    预览效果

windows端Demo界面

lazarus编译运行后的界面(Delphi的demo也是一样的):

HTML Demo界面

脚本Demo