golang 使用twig模板引擎,站在php的肩膀上!

Python014

golang 使用twig模板引擎,站在php的肩膀上!,第1张

和有些小伙伴一样,本人是从php转到了go,从事php时使用symfony框架一直享受其丰富的功能带来的便利,转到其他语言时比较直观的感觉就是twig真强,为什么其他语言没有扩展twig呢?

虽然前后端的开发模式,让模板引擎这个东西慢慢淡去,但是有时候还是需要用到这种东西,所以就有了,go调用php实现twig模板引擎的想法。

原理,go 通过exec.Command调用php,通过STDIN,STDOUT 方式进行数据交互

go在初始化阶段提供一些配置参数,比如模板引擎的为止,是否为开发环境等,php接收数据并初始化

初始换环境完毕后,当需要渲染模板,go再讲模板文件和数据以json字符串的形式写入STDIN告知php,

php接收到数据后,解析数据,选取指定的模板并渲染,然后通过STDOUT返回给go

这样一次渲染就结束了

整理好的文件打包在github上了

如果喜欢就动动你的小手指点个赞,star一下吧!

近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

本节我们分享一个超轻量级的工作流引擎 go-workflow ,基本架构同Activiti工作流有些相似,但是它更精简,更轻量,它是一个工作流微服务。它将所有的无关流程的数据,包括用户、用户组等信息从服务中解耦出去,go-workflow只纪录流程的流转,同时使用json数组替代bpmn来生成流程定义,简化流程定义的生成。

表 procdef 用于保存流程的配置,

主要字段有:

表 proc_inst 用于保存流程实例,当用户启动一个流程时,就会在这个表存入一个流程实例,

主要字段有:

表 execution 用于保存执行流,当用户启动一个流程时,就会生成一条执行流,之后的流程就会按照执行流的顺序流转,

比如:开始-主管审批-财务审批-人事审批-结束 ,

主要的字段有:

表 identitylink 用于保存任务task的候选用户组或者候选用户以及用户所参与的流程信息,

主要字段有

表 task 用于保存任务,

主要字段有:

历史数据表包括 execution_history,identitylink_history,proc_inst_history,task_history这些表字段同正常的表相同,每隔20秒,将已经结束的流程数据会自动迁移过来

启动 go-workflow 微服务后,可以在浏览器中输入: http://localhost:8080/workflow/procdef/save 进行存储

具体见 example.md 说明文档

通过调用 StartProcessInstanceByID 方法来启动流程实例,

主要涉及:

调用方法 Complete()方法来执行任务的审批,

涉及方法:

调用方法 WithDrawTask() 方法来执行任务的撤回

更多内容可以参考其官方 README