前言

在日常开发工作业务场景中,你可能会遇到重复性的业务工作脚本功能维护。笔者分析了下,其在修改业务代码后,大致都会遇到如下问题:

  1. 部署较繁琐;
  2. 用户使用不便捷;
应用程序脚本代码应用程序应用程序脚本代码
golang嵌入式脚本

gomacro热加载代码示例

package main
 
import (
	`strings`
 
	"github.com/cosmos72/gomacro/fast"
 
	_ "my-project/core/gomacro-package-init" // inject `github.com/imroc/req/v3` package
)
// string code
const source = `
 
import (
	"fmt"
	"github.com/imroc/req/v3"
)
 
// http client get url data
func getData() string {
    client := req.C()
    // send http url request 
    response, err := client.R().Get("https://api.github.com/users/cosmos72")
    // get response data
    fmt.Println(len(response.Bytes()), err)
    return "finish"
}
 
`
 
func main() {
	src := strings.NewReader(source)
        // int gomacro
	interp := fast.New()
        // check code 
	if _, err := interp.EvalReader(src); err != nil {
		panic(err)
	}
	interp.ChangePackage("main", "main")
        // call func
	interp.Eval1("getData()")
}

   

嵌入式应用程序简略流程图

成品效果图

服务端管理商店中的应用脚本

客户端执行商店中的应用脚本

结语

通过REPL理念技术,可明确看出,它能大幅度的提升项目中”应用的便捷更新、业务拓展性“。其次动态编译应用的理念对于在客户端调试环境还是有待提升,目前大多数场景下笔者都是在开发环境调试无误才发布至服务端商店中。