大家好,我是绿茶,多年前曾用VFP写了点非常简单的小程序,一直是单位或自己为提高效率所做的权宜之计,简陋至极。但自从出现了B/S架构,一度和许多人一样,几乎要放弃VFP了,直到遇到了加菲猫老师和他的祺佑框架。
加菲猫老师强调,使用框架能少写80%左右的代码,能让你专注于业务逻辑,事实证明,这绝对不是一句空话。
01
—
BS真的好看也不难
上面两图,是我用框架给单位做的一个应用中的截图。比如第1个图的首页,其实使用框架,后台的代码很简洁,核心代码如下
Procedure getUser
oDbHelper = Newobject("MSSQLHelper","MSSQLHelper.prg")
TEXT TO lcSqlCmd NOSHOW textm
SELECT code,name,value FROM branch
ENDTEXT
oDbHelper.SQLQuery(lcSqlCmd,"branch")
oJsons = Createobject("foxjson",{})
Scan
oJson = Createobject("foxjson")
oJson.Append("value",branch.Value)
oJson.Append("name",branch.Name)
oJsons.Append(oJson)
Endscan
oJson = Createobject("foxjson")
**这期间都是反复利用foxjson,形成JSON数据,代码省略
rJson.Append('data',oJsons)
…
oMonJson = Createobject("foxjson")
…
oJsons = Createobject("foxjson",{})
rJson.Append('week',oMonJson)
rJson.Append('value',oJsons)
Return rJson.tostring()
Endproc
后将上面rJson返回的结果提交给前端,前端调用eCharts,就可以轻松生成有图表的界面了。
这里的MsSqlHelper类,让我们不用关心数据库如何连接,句柄如何创建,我们需要做的,仅是需要new一个对象,然后去使用就好了,框架把里面的东西已经封装好了,我们开心去用就行。
还有,和前端交互,需要使用的JSON,在这里也可以轻松操作,只需反复折腾foxjson,需要什么样的JSON数据,按自己的想法组装就是了。
也就是说,有了框架,我们又可以利用VFP进行愉快地玩耍了,岂不是一件美事?
关于框架,不想说太多,大家已经有目共睹,以下说点关于小程序上线前出现的插曲。
02
—
我的水果商城上线
最近由于亲戚有个水果店铺,想做个小程序,实现对一些热销抢购水果的线上交易、库存控制等。因为在群里参加了商城的众筹,前期工作也都做得差不多了,然后按部就班,购买云服务器和域名,申请ICP备案,然后域名解析,申请SSL证书等,万事俱备,开始部署到云服务器。
按照步骤,先将uni-app的代码打包发行,然后导入到微信开发者工具,最后提交代码。一切搞定后,信心满满,开始测试。
结果是不能访问数据库,光有界面,点击进入分类,所有图片全部不能显示,排查了半天,感觉所有步骤都没有问题。无奈之下,只得请求曾老师帮忙救火。
曾老师不但技术厉害,人也很热情,看到我发的请求,老师及时帮我排除了故障,程序得以顺利上线。以下是根据老师此次帮我排除故障的步骤,和前期老师发过的项目部署到服务器的文档整理而成,供大家参考。
03
—
排查安全证书的问题
如下图,在自己的网站上点右键—编辑绑定。
顺便看是否配置了443端口(小程序使用),或80端口(B/S端程序使用),然后选绑定的443端口,点编辑,然后看下面的SSL证书是否已正确绑定。
04
—
检查处理程序映射
上面的步骤确认没有问题,下一步,是到云服务器上,看cgi是否配置成功。
①找到处理程序映射,先看是否已配置了CgiModule,如上图。
②如果已配置,再选右面的的编辑权限功能,打好勾,如下图。
③处理程序映射非常关键,许多时候项目跑不起来,都是这里出了问题。确保以上步骤没有问题后,再到网站的根目录中,找到web.config文件,打开检查其配置是否确实正确。
④假如网站名称为qiyu,VFP编译的可执行文件存放的目录为qiyuserver,那web.config的正确配置应该是:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="qiyu" path="*.fsp" verb="*" modules="CgiModule" scriptProcessor="c:\qiyuserver\qiyuserver.exe" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
</configuration>
⑤确保以上配置都没有问题,那cgi基本就配置好了。
05
—
检查云服务器安全组中80端口和443端口是否开放
这里真的是坑苦了我,上次我使用的是腾讯的云服务器,服务器操作系统为 Windows Server 2008 R2 企业版,我按曾老师部署项目的步骤,非常顺利就把项目放到了服务器上,运行完全没有问题。
这次使用的阿里的服务器,操作系统为Windows Server 2012 R2 数据中心64位中文版,我仍按以前的步骤,结果就出现了数据库不能访问的问题。还是曾老师厉害,他马上意识到是安全组的端口没有打开。
入云服务器控制台,选安全组,进入配置规则,在下图中选”入方向”中的“手动添加”,将80和443的端口添加进去。
然后,可以用telnet命令,看80和443端口是否可以访问。
如果以上配置全部没有问题,可以到浏览器中检验一下fsp是否能跑起来,验证方法非常简单,但很有效。比如你申请的域名是baidu.top,那在地址栏输入http://baidu.top/1.fsp,如果你能看到如下的返回:
{ "errno": 1, "errmsg": "File '1.prg' does not exist.", "success": "false", "errorMsg": "File '1.prg' does not exist.", "total": 0, "rows": "[ ]" }
那恭喜你,基本上已经没有问题了,这说明fsp已经能正确跑起来了。如果没有看到这样的返回,那说明革命尚未成功,仍需继续努力…
下图为曾老师帮我排除故障后,程序运行的截图,因为后台没有添加多少东西,前期的需求也相对简单,所以其实真正实现的内容也比较简单,大神们就不要见笑了。就说这么多吧,以后有空,再继续和大家一起分享,一起学习!
VFP版的小程序商城终于顺利运作了。
写在最后面的话
加菲猫的VFP公众号接受投稿,一经采用,即有稿费,稿费暂定50元一篇。
加菲猫的vfp倡导用VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发。
已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。