前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用“VFP祺佑开发框架”开发BS应用系统(秦时明月学习笔记)

使用“VFP祺佑开发框架”开发BS应用系统(秦时明月学习笔记)

作者头像
加菲猫的VFP
发布2021-09-10 17:22:39
1K0
发布2021-09-10 17:22:39
举报
文章被收录于专栏:加菲猫的VFP加菲猫的VFP
大家好,我是秦时明月,一个业余VFP爱好者。我从1999年接触VFP(全称:visual foxpro),时至今日,我也算业余了20多年。使用过VFP的朋友都知道,VFP即是一种编程语言,又是一种数据库管理系统,针对数据处理,在速度上有天然的优势。在桌面型应用系统开发上,也具有快速简洁之美誉。

但是在我这里,VFP并没有大发异彩,甚至有点没落。因为我很快淹没在了这个各种语言层出不穷的年代。新的语言,新的程序开发方式,让我已经眼花缭乱。和大多数人一样渐渐疏远了VFP,开始去学习C#,甚至追风python之流。

大概是2012年,我步入梅子论坛。也许时间更早,只不过我认为这只是VFP的最后乐园而已。当我认清梅子论坛真正面目应该大概是在2018年,目睹了梅子论坛上各位大咖依然为VFP后时代发展,正在孜孜不倦的耕耘着。但是那时候,因为工作和家庭方面的琐事,我依然没有觉醒。

2021年,当我参加了“加菲猫”老师的视频课“VFP开发BS极简入门”之后,突然间,觉得“原力”觉醒。在“加菲猫”老师的带动下,我强烈意愿想要加入到VFP的后时代发展中,想加入VFP的新程序开发模式中。

首先说明,为了适应现代潮流,现代新程序的开发模式变成了多端化模式:

那么问题来了:VFP从哪个地方切入程序开发呢?答案显而易见。当然是从后端啦。就是我们俗称的API,或者更具体点叫做WEBAPI。我们怎么样来实现呢?如何让IIS理解VFP制作的WEBAPI呢?即使解决了这一个问题,我们能边开发边测试吗?能摆脱传统的 VFP应用程序开发测试模式吗?答案是:可以。

下面从实现BS开发功能的实例来介绍一下“加菲猫”老师设计的VF之“祺佑开发框架”(以下简称”猫框“)的使用方法。这个例子功能很简单,就是实现一个登陆界面,然后显示欢迎信息和一个世界通用的“呼唤”:hello word。

先让我们准备以下实验“材料”:

1.用户表 wuser(密码明码存储,可自行加密。)

2.登陆页面login.htm

如果去掉修饰用的图片,核心代码如下:

代码语言:javascript
复制
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>登陆</title>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>

<bodybgcolor="#ffffff">
<form method="post" action="login.fsp" target=_selfname="fm" id="fm">

     <input name="uname"type="text" id="uname" />

     <input name="upass"type="text" id="upass" />

     <input type="submit"name="img" id="img" value="登陆"/>

</form>
</body>
</html>

重点: action=”login.fsp” 其实他是一个login.prg 文件,它定义了一个类,类里面有各种各样的方法,当被调用时,又未指定方法名称,那么自动启用ondefault 方法。那么接下来我们看看login.prg 的代码。

3login.prg

代码语言:javascript
复制
DEFINE CLASS login as Session

      PROCEDURE ondefault
            PRIVATE cU,cP,cPdata    && *method=get/post 键值对
            cU=httpqueryParams("uname")
            cP=httpqueryParams("upass")            
            ofrmmain.log(cp+cu)
            
            _currentcode="UTF-8"
            if not used('wuser') then
              sele 0
              use  wuser
            endif
                    
            LOCAL cname
            sele wuser
            loca for allt(uid)==allt(cu) and allt(upwd)==allt(cp)
            if found()
               cname=uname
               use  in select('wuser')
               ?cname
               return  this.makewelcome(cname)
            else
              use
              ERROR  "您输入了不正确的用户名或密码!"
            endif             
       ENDPROC 

       

       && 动态左边页面

        procedure  makewelcome
            PARAMETERS  cuser
            ?cuser
            chtml=GetWwwRootPath("tmpl")+"control.htm"
           _currentCode="UTF-8"
           chtml=FWS_MergeFile(chtml)       
           return chtml           
       endpro

enddefine

当我们输入不正常的用户名与密码后,点击登陆后,系统会提示错误信息:

ERROR "您输入了不正确的用户名或密码!"

当您正常登陆后,就会切换到另外一个页面control.htm.

4control.htm页面代码如下:

代码语言:javascript
复制
<htmlxmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type"content="text/html; charset=utf-8" />

<title>基于&ldquo;VFP祺佑开发框架&rdquo;设计的控制台</title>

</style>

</head>

 

<body>

欢迎你,<%u(m.cuser)%>!<br />

让我们大声说出来:Hello World!

</body>

</html>

这里面我需要注意一下:<%u(m.cuser)%>,这里就是告诉WEBAPI,有一个cuser变量,需要把其值替换出来并显示到页面。

至于u(),这是一个约定输出函数。那么输出效果如下图:

接下来,我们可能会想,就是这么简单实现了VFP的BS开发?那么如何将猫框应用在BS开发中呢?接下来请看图:

猫框的目录结构:

图中箭头代表文件应存入的目录,我们开发的项目就基于此框架下进行,那么我们如何实现边开发边测试呢?

方法就是打开项目文件,打开按下图进行操作,先运行环境设置程序,再去运行调试服务器程序,然后你就看到了模拟服务器界面。

直到这步,所有操作就绪,你只要打开浏览器:输入http://192.168.0.104:801/login.htm,一切就等待奇迹发生吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库智能管家 DBbrain
数据库智能管家(TencentDB for DBbrain,DBbrain)是腾讯云推出的一款为用户提供数据库性能、安全、管理等功能的数据库自治云服务。DBbrain 利用机器学习、大数据手段、专家经验引擎快速复制资深数据库管理员的成熟经验,将大量传统人工的数据库运维工作智能化,服务于云上和云下企业,有效保障数据库服务的安全、稳定及高效运行。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档