但是在我这里,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
如果去掉修饰用的图片,核心代码如下:
<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
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页面代码如下:
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=utf-8" />
<title>基于“VFP祺佑开发框架”设计的控制台</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,一切就等待奇迹发生吧。