miniframe开源Web框架,一个使用pascal脚本编写业务代码的服务端框架。框架已实现了HTTP服务、脚本解释执行、多种数据库连接、数据库缓冲池、连接缓冲池等底层支持。在此基础上使用者只需要关注自己的业务实现即可。
技术qun:821855479 如果加不了群,请联系Q:3123827806
特性
- 在lazarus下编译的服务程序可以在国产操作系统信UOS、deepin等linux上运行,为软件国产化添砖加瓦。
- miniframe框架源码可以同时在lazarus、Delphi下编译通过,即Delphi和lazarus是同一套代码。
- 可以像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也是一样的):