首页 > 其他分享 >miniframe开源Web框架(适配Delphi、lazarus)

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

时间:2023-08-01 23:01:20浏览次数:49  
标签:HTML Web miniframe 适配 编译 json lazarus mds 源码

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

源码及demo下载 编译及运行环境配置 github地址

技术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;
 %>

预览效果

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

与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>

预览效果

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

只提供数据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;
 %>

预览效果

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

windows端Demo界面

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

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

HTML Demo界面

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

脚本Demo

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

标签:HTML,Web,miniframe,适配,编译,json,lazarus,mds,源码
From: https://blog.51cto.com/u_15747438/6929916

相关文章

  • ruby web 实战(9)-vue 3基础(3)
    目录选项式API(OptionsAPI)选项式API(OptionsAPI)用包含多个选项的对象来描述组件的逻辑,例如data、methods和mounted。选项所定义的属性都会暴露在函数内部的this上,它会指向当前的组件实例。<script>exportdefault{//data()返回的属性将会成为响应式的状态......
  • 适配器模式
    分类类适配器模式对象适配器模式类适配器是由继承关系构成,对象适配器是聚合或组合的关系构成所以类适配器耦合性较高,使用较少角色/结构目标接口:我们中国的手机充电器适配者类:欧洲那边已有的欧洲标准的插座适配器类:可以把我们的手机充电器调整到可以用欧洲插座的适......
  • ASP.NET WebForm中asp:Repeater和UI:Grid数据为空时如何显示表头?
    一、asp:RepeaterRepeater控件用于显示被绑定在该控件上的项目的重复列表。Repeater控件可被绑定到数据库表、XML文件或者其他项目列表。1.1-前台页面代码<asp:RepeaterID="ImageTypeListNew"runat="server"OnItemCommand="ImageTypeListNew_ItemCommand">......
  • ASP.NET WebForm中在TextBox输入框回车时会触发其他事件,如何处理?
    一、TextBox在输入框回车时会触发其他事件,如何解决?在ASP.NETWebForm中,在页面中按键盘上的回车键,会自动触发某些事件,但是这并不是我们想要的效果,我们可以设置将其取消,那如何处理呢?前台代码:<ul><li><span>名称:</span><asp:TextBoxID="txtCategoryName"runat="ser......
  • JavaWeb和MVC三层架构
    JavaWeb概述网站发布和部署一定要依托技术语言吗:不一定,一个网站可以直接发布和部署,因为因为浏览器能够识别网页只需要两样东西,网络和静态页面,还有一个装在他们的容器,比如nginx。静态页面面临的问题:1:静态网页是固定的,是不可变的。如果一个网站比如腾讯首页,这里需要1000文......
  • eWebEditor 从word中复制内容带多张图片
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action名称 */    "wordFieldName":"upfile",/* 提交的......
  • WEB漏洞—XXE&XML之利用检测绕过全解
    一.基础概念1.XMLXML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。XXE漏洞全称XMLExternalEntityInjection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML......
  • pycharm配置webots外部控制器,同时添加多个路径,使得能够使用ROS
    1.先配置pycharm的PojectStructure打开Pycharm-->File-->Settings-->Project:项目名-->ProjectStructure-->+AddContentRoot,添加上会用到的库/opt/ros/melodic/lib/python2.7/dist-packages/usr/local/webots/lib/controller/python39/home/xx/multi-ro......
  • web渗透测试(8):SQL注入
    SQL注入是最常见的(web)漏洞之一。所有SQL注入练习,在这里找到,使用MySQL作为后端。当SQL查询中包含SQL注入时,缺少用户控制输入的编码/转义。 根据信息在查询中的添加方式,您需要不同的东西来破坏语法。有三种不同的方法可以在SQL语句中回显信息:使用引号:单引号或双引号。使用反......
  • webpack的部分知识
    webpack真的好累啊什么是webpackwebpack是一个现代javascript应用的静态模块打包工具,其主要功能就是模块和打包这里我一直觉得和maven很像,早在之前的学习过程中,maven具体的工作是什么我一直百思不得其解,认为我们普通的java程序就能够很好的跑起来为什么还要maven呢?这里先说we......