当前位置:首页 > 科技  > 软件

又有新功能!Go 将有生成新模板的 gonew 工具链

来源: 责编: 时间:2023-08-14 22:01:35 505观看
导读大家好,我是煎鱼。不知道大家平时在日常工作中,会不会遇到一个问题?公司用着微服务架构,经常要创建新的服务,需要一个应用模板去初始化新的服务,减少 ctrl+c+v,转为相对自动化。不同团队根据 Leader 的喜好、要求不同,应用模

大家好,我是煎鱼。vRq28资讯网——每日最新资讯28at.com

不知道大家平时在日常工作中,会不会遇到一个问题?公司用着微服务架构,经常要创建新的服务,需要一个应用模板去初始化新的服务,减少 ctrl+c+v,转为相对自动化。vRq28资讯网——每日最新资讯28at.com

不同团队根据 Leader 的喜好、要求不同,应用模板又会不同。有的喜欢 DDD、有的喜欢 MVC、有的大道至简即可。每家公司都会延伸出一个工具链做这个事情。vRq28资讯网——每日最新资讯28at.com

新工具:gonew 生成模板

在 Go 社区也出现了这种诉求,Go 核心团队带头大哥 @Russ Cox 发起了一个新讨论《gonew: templates for new modules[1]》,引发了各方的热议:vRq28资讯网——每日最新资讯28at.com

图片图片vRq28资讯网——每日最新资讯28at.com

原因是:Go 团队经常收到用户反馈要求使用某种 "go new" 功能,以某种基本模板启动一个新的模块(项目)。vRq28资讯网——每日最新资讯28at.com

这个工具不局限于 Go 团队提供的模板,任何人都可以定义这个模板。这个模板也是很 “普通”,没什么特殊的功能。vRq28资讯网——每日最新资讯28at.com

"go new" 的核心工作是下载一个模板,更改其模块路径,然后把它放到一个新的目录中进行编辑。当然这个工具链未来可能还有更多的功能,但这就是最核心的诉求。vRq28资讯网——每日最新资讯28at.com

也出现了一个新的场景。有一名图书作者,希望能够更方便的提供图书示例,不想要图书读者费尽心思克隆一个 git 仓库。答案显而易见,那就是本文提到的 gonew 工具。vRq28资讯网——每日最新资讯28at.com

快速体验和实操

结合前后事迹来看,@Russ Cox 是一个执行效率比较高的人。提出讨论的前几个月,已经写好了工具给大家试用了。vRq28资讯网——每日最新资讯28at.com

安装命令如下:vRq28资讯网——每日最新资讯28at.com

$ go install golang.org/x/tools/cmd/gonew@latestgo: downloading golang.org/x/tools v0.11.1go: downloading golang.org/x/mod v0.12.0

创建命令如下:vRq28资讯网——每日最新资讯28at.com

$ gonew golang.org/x/example/hellogonew: initialized golang.org/x/example/hello in ./hello

执行完毕后,会在当前目录下,创建一个 hello 目录(./hello)。模板的结构如下:vRq28资讯网——每日最新资讯28at.com

$ tree hello hello├── LICENSE├── go.mod├── hello.go└── reverse    ├── example_test.go    ├── reverse.go    └── reverse_test.go1 directory, 6 files

我对比了一下,和模板基准的 git 仓库 github.com/golang/example 的相关代码是一致的。vRq28资讯网——每日最新资讯28at.com

可能会有同学说,不行啊。我还要改 module path。这点在现在也是已经支持的了。vRq28资讯网——每日最新资讯28at.com

如下命令:vRq28资讯网——每日最新资讯28at.com

$ gonew github.com/ServiceWeaver/template example.com/foogonew: initialized example.com/foo in ./foo

生成目录:vRq28资讯网——每日最新资讯28at.com

$ tree foofoo├── LICENSE├── README.md├── go.mod├── go.sum├── main.go├── weaver.toml└── weaver_gen.go

对应生成的目录名是指定的 foo,创建出来的 go.mod 文件的 module path 是:module example.com/foo。vRq28资讯网——每日最新资讯28at.com

符合上面提的要求。vRq28资讯网——每日最新资讯28at.com

一些讨论

结合讨论的内容来看,大家的反馈都是比较积极支持的。因为确实看到社区里很多人为此做了一模一样的事情,各语言都有,真的是各显神通了。vRq28资讯网——每日最新资讯28at.com

图片图片vRq28资讯网——每日最新资讯28at.com

有个别同学支持将本文提到的 go new 放到 go mod init 中,这样就不需要再单独创造一个新的命令集。vRq28资讯网——每日最新资讯28at.com

提出的同学认为 go mod init 本质上也是在引导 Go 应用的使用,和 go new 比较类似。可以调整为:vRq28资讯网——每日最新资讯28at.com

go mod init example.com/x/abc --template github.com/ServiceWeaver/template

以此满足一样的诉求。vRq28资讯网——每日最新资讯28at.com

不过我感觉这命令就太长了,没 go new 那么短小精悍。vRq28资讯网——每日最新资讯28at.com

总结

本次 go new 工具的讨论和实验,Go 团队非常迅速。目测势在必得,肯定会加进去了。vRq28资讯网——每日最新资讯28at.com

因为根据反馈 Google 的几个团队也有兴趣尝试使用 gonew 进行模板化。ServiceWeaver 团队对此也非常感兴趣。vRq28资讯网——每日最新资讯28at.com

功能虽然非常简单,但基本满足了不同的团队为了不同的代码模板,创建一个新的模板的诉求。一旦成熟,也就不需要人均手搓一个模板的脚手架工具了。vRq28资讯网——每日最新资讯28at.com

后续各自在工具链套一下就 OK,一个快速的小成果就好了。推荐大家试用,又或是觉得还需要什么功能补充,也欢迎随时留言。vRq28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-5748-0.html又有新功能!Go 将有生成新模板的 gonew 工具链

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 不要错过这个机会:学习Java 8 Stream,提升编码能力!

下一篇: TIOBE 8 月编程语言排行榜:Python 登顶,C / C++ 包揽第二第三

标签:
  • 热门焦点
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • OPPO、vivo、小米等国内厂商Q2在印度智能手机市场份额依旧高达55%

    7月20日消息,据外媒报道,研究机构的报告显示,在全球智能手机出货量同比仍在下滑的大背景下,印度这一有潜力的市场也未能幸免,出货量同比也有下滑,多家厂
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
  • Windows 11发布,微软一改往常对老机型开放的态度

    距离 Windows 11 发布已经过去一周,在过去一周里,很多数码爱好者围绕其对 Android 应用的支持、对老机型的升级问题展开了激烈讨论。与以往不同的是,在这次大
Top