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

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

源码及demo下载:https://www.wyeditor.com/files/miniframe.rar 编译及运行环境配置:https://www.wyeditor.com/miniframe/miniframesetup.html github地址:https://github.com/dajingshan/miniframe 技术群: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

原文链接:,转发请注明来源!