阅读量: 7
在日常开发工作业务场景中,你可能会遇到重复性的业务工作脚本功能维护。笔者分析了下,其在修改业务代码后,大致都会遇到如下问题:
笔者推荐遇到类似这种业务场景,可以将 应用程序脚本代码
直接嵌入在云端,用户实际需要使用的时候进行加载到应用程序
主体中,这样主体应用在得到应用程序脚本代码
之后,就可以获得到最新的输入、输出结果。这样的应用方式其扩展性将会得到极大的增强。
本着可持续化、高便捷功能迭代、高聚合,笔者在遇到以上业务场景时,主要采用golang
进行业务逻辑脚本代码封装,然后采用 gomacro 进行REPL,配合 wails (使用 Go 和 Web 技术)编写桌面应用项目,实现嵌入式脚本
可视化客户端应用程序。
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理念技术,可明确看出,它能大幅度的提升项目中”应用的便捷更新、业务拓展性“。其次动态编译应用的理念对于在客户端调试环境还是有待提升,目前大多数场景下笔者都是在开发环境调试无误才发布至服务端商店中。