PHP转Go,框架选什么?

简介: 这是一期会引起广泛讨论的内容,不亚于“PHP 是世界上最好的语言”。

内功心法

不管我们是否基于框架去开发,不管使用什么框架去开发。

6个字的内功心法一定要牢记:高内聚,低耦合

不管是单体项目还是微服务,不管是小组件还是大功能,不管是业务还是领域 DDD,也都遵从这个原则:

(模块、功能、业务、领域)内部高内聚,

(模块、功能、业务、领域)之间低耦合。

PHP 转 Go,优选哪个框架?

答案:GoFrame

为什么?

和 PHP 的 Laravel 简直太像了,用起来太香了,很顺手。

为什么不火?

对新手不友好,有门槛。

GoFrame 特点

优势:

  • 模块化
  • 高性能
  • 企业级

劣势:

  • 有学习门槛
  • 版本兼容性不好
  • 暂不支持微服务

框架选型

谁适合用 GoFrame

  • PHP 转 Go(Laravel 的同学会用起来很爽)
  • Java 转 Go (Spring Boot 的同学会用起来很爽)
  • 比较复杂的企业级单体项目 (很规范,维护成本低,少踩很多坑)

谁不适合用 GoFrame

  • 编程小白(容易被劝退)
  • 特别简单的项目用 gin 等轻量级框架(杀鸡焉用牛刀)
  • 非常复杂的分布式微服务项目用 go-zero 等微服务框架(没有任何一款框架是万能的)

GoFrame 框架设计思想

这些不作为本期内容的重点,大家可以直接阅读官方文档。

我也有计划录制视频,结合我们的商业项目,站在使用者的角度去分享使用 GoFrame 的感受,如何理解框架的设计思想。

151688361df80feeac0be53b5c40aaf.png

开发流程

我梳理的 GoFrame V2 最新版的开发流程

从 0 到 1

  1. 设计表结构
  2. 使用 gf gen dao 生成对应的 dao/do/model
  3. 编写 api 层:定义业务侧数据结构,提供对外接口的输入/输出数据结构
  4. 编写 model 层:定义数据侧数据结构,提供对内的数据处理的输入/输出数据结构
  5. 编写 logic 层,自动生成 service 层代码。(通过配置 goland File Watcher 自动生成,也可以通过 gf gen service 手动执行脚本生成,建议前者)
  6. 在 service 层代码生成 RegisterXX()方法后,在对应的 logic 模块注册服务(每个模块只需要写一次)
  7. 编写 controller 层,接收/解析用户输入的参数,调用 service 层的服务。
  8. 注册路由,对外暴露接口,比如这个项目是编写 cmd.go 文件。
  9. 在 main.go 中 加入一行  _ "project-name/internal/logic" (只需写一次)
  10. 在 main.go 中加入一行 _ "github.com/gogf/gf/contrib/drivers/mysql/v2" (如果你使用的是 mysql;只需写一次)

核心步骤

  1. 编写 api 层:定义业务侧数据结构,提供对外接口的输入/输出数据结构
  2. 编写 model 层:定义数据侧数据结构,提供对内的数据处理的输入/输出数据结构
  3. 编写 logic 层,自动生成 service 层代码。(通过配置 goland File Watcher 自动生成,也可以通过 gf gen service 手动执行脚本生成,建议前者)
  4. 编写 controller 层,接收/解析用户输入的参数,调用 service 层的服务。
  5. 注册路由,对外暴露接口,比如这个项目是编写 cmd.go 文件。

总结

没有一个框架是万能的,也没有一个语言是万能的。

结合自己的需求去选择合适的框架,合适的开发语言。

不要被眼前暂时的得意或者失意“一叶障目”,结合实际情况,实事求是,拥抱变化,不断学习,才能“见泰山”。

面向“养家糊口”编程,能稳定赚钱的职业才是好职业。

视频

这期内容也录制了视频,视频更精彩,欢迎一键三连:B 站视频链接


公众号:程序员升职加薪之旅

微信号:wangzhongyang1993

B站视频:王中阳Go

相关文章
|
2月前
|
中间件 Go 数据库
Go开发者必读:Gin框架的实战技巧与最佳实践
在当今快速发展的互联网时代,Web开发的需求日益增长。Go语言以其简洁、高效、并发性强的特点,成为了开发者们的首选。而在Go语言的众多Web框架中,Gin无疑是其中的佼佼者。本文将深入探讨Gin框架的特性、优势以及如何利用Gin构建高性能的Web应用。
|
4月前
|
JSON JavaScript Go
Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析
掌握 Go 语言的常见概念,如变量、循环、条件语句、函数、数据类型等等。深入了解 Go 基础知识的好起点是查阅 Go 官方文档
466 2
|
3月前
|
Serverless PyTorch 算法框架/工具
Serverless应用引擎部署问题之下个节点不可用如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
366 2
|
25天前
|
JSON 缓存 物联网
推荐一款go语言的开源物联网框架-opengw
推荐一款go语言的开源物联网框架-opengw
34 4
|
1月前
|
开发框架 JSON Go
Go语言Web开发基础与框架探索
【2月更文挑战第21天】本文将带领读者深入了解Go语言在Web开发领域的基础知识和常用框架。通过介绍Go语言的Web开发特点、核心库的使用,以及流行框架如Gin、Echo等的基本用法和优势,帮助读者快速上手Go语言Web开发,提升开发效率。
|
1月前
|
关系型数据库 MySQL 数据库连接
实战演练:使用Go语言和ORM框架与数据库进行交互
【2月更文挑战第13天】本文将通过一个实战演练,展示如何使用Go语言和ORM(对象关系映射)框架与数据库进行交互。我们将选择一个流行的ORM框架,如GORM,来完成这个任务。通过实际编码,我们将演示如何连接数据库、执行CRUD操作、处理错误和异常,并展示ORM框架如何简化数据库操作过程。
|
1月前
|
SQL 关系型数据库 MySQL
Go语言中的ORM框架介绍
【2月更文挑战第13天】本文将介绍ORM(对象关系映射)框架在Go语言中的应用。ORM框架能够简化数据库操作,将数据库表映射为Go结构体,并提供了一系列方法来执行CRUD(创建、读取、更新、删除)操作。我们将探讨几个流行的Go语言ORM框架,包括GORM、SQLBoiler和Squirrel,并比较它们的特性和用法。
|
2月前
|
XML JSON Java
RPC框架之Thrift—实现Go和Java远程过程调用
RPC框架之Thrift—实现Go和Java远程过程调用
48 1
|
3月前
|
PHP Windows
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
|
3月前
|
开发框架 前端开发 小程序
分享47个PHP框架源码,总有一款适合您
分享47个PHP框架源码,总有一款适合您
67 0