Perl的Mojolicous框架开发大型项目的样例参考,涉及Vue/elementUI/Mojolicious/Selenium以及perl的xml、数据库、面向对象的类封装、workflow(工作流程管理)模块等技术。
该系统主要是为了提升工作效率而开发的,过去相当长时间里我每天都要拿出部分时间处理VPN账户有关的申请单,通过Web页面建立/删除账户、配置安全策略,而且还要手工记录申请信息做好台账,日复一日的重复操作,十分枯燥。当学习完Perl语言后,我就开始尝试解决这个问题,把流程审批、台账管理、系统配置自动化的整合在一起。自去年11月起至今年(2019)2月历时4个月开发,然后经历了几个月的上线运行及Bug修复后,终于实现了当初的设计。
该系统是经过修改后的开源版本,主要作为Perl语言和Mojolicious开发教材使用。
当前,国内使用perl语言的开发者并不多,而且web开发有关的perl语言材料均是五六年甚至十多年以前的资料。随着流行趋势的变迁,实际上perl语言也发生了很大的变化。
Mojolicious就是一个很好的例子,Mojo的开发逻辑与flask是一模一样的,我就是前期已经熟悉了Mojo后,简单的看了一周的flask狗书,很快就可以开发项目了。
该系统是一套简易的办公流程审批系统,分为三个申请单——公司信息、VPN账户以及MAC地址三个申请单。在业务逻辑上,任何一家公司必须先登记公司信息,有了公司信息才能申请账户。有了账户才能申请MAC地址。申请单的相关信息,会被记录在Mysql数据库中。系统还提供了台账查询功能,以查询每家公司的账户信息。还有流程审批的“待办”、“我的申请”以及“近期已完成的申请单”等功能。
系统简易开发了分权功能,普通用户有申请单、待办、台账查询以及修改自己账户信息和密码的功能;而管理员除了普通用户的功能外,还有流程管理、账户管理等功能。
该系统的另一个主要的目的,就是为了与公司现有的VPN系统做集成,当申请单审批完成后,系统会自动生成账户、MAC地址等配置信息以导入VPN系统中。
根据VPN系统的配置方式,主要有两个导入途径,一个XML格式的配置文件,另一个是利用selenium自动操作网页导入。
(注意:该系统已经删除了所有的真实配置信息,因此selenium的有关功能并没有实际的用处。但是可以参照着学习一下perl语言如何操作selenium)。
系统后端使用perl语言开发,采用Mojolicious框架。前端使用vue+elementUI开发。两个框架间使用JSON接口通信,是相互分离的。
前端页面在login、dahamavpnapp两个目录下,login目录仅为登录界面,主业务界面在dahamavpnapp目录下,采用了vue的开发方式,可以使用npm run serve以及npm run build命令运行或编译。在前端部署方面,我直接使用buid的编译后,将得到.html文件和文件夹放到了perl目录——my_app相应目录下。
在后端(my_app目录),办公流程方面采用了CPAN上的workflow模块,流程的相关配置文件在Configure目录下的xml文件中,所有的xml涉及到的流程action和condition都在lib/MyApp/Workflow目录下。
后端的所有业务逻辑在lib/MyApp/Controller目录下。而额外的功能在同级的Model目录下。
下载后进入my_app文件夹 perl自带web发布程序: bug调试模式请使用morbo script/my_app.pl 正式模式请使用hypnotod script/my_app.pl
vue采用build编译后直接导入Mojolicous框架的template目录下实现,未通过node.js
该系统是我个人利用业余时间,结合自身工作场景开发,但不涉及任何工作信息。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。