PHP转Go,框架选什么?

news/2024/11/17 6:00:25/

文章目录

  • 内功心法
  • PHP转Go,优选哪个框架?
    • 为什么?
    • 为什么不火?
  • GoFrame特点
    • 优势:
    • 劣势:
  • 框架选型
    • 谁适合用GoFrame
    • 谁不适合用GoFrame
  • GoFrame框架设计思想
  • 开发流程
    • 从0到1
    • 核心步骤
  • 总结
  • 视频
  • 一起学习

这是一期会引起广泛讨论的内容,不亚于“PHP是世界上最好的语言”。
在这里插入图片描述

内功心法

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

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

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

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

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

PHP转Go,优选哪个框架?

答案:GoFrame

为什么?

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

为什么不火?

对新手不友好,有门槛。

GoFrame特点

优势:

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

劣势:

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

框架选型

谁适合用GoFrame

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

谁不适合用GoFrame

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

GoFrame框架设计思想

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

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

  • 模块化设计

  • 统一框架设计
  • 工程开发设计
  • 全链路跟踪设计
  • 全错误堆栈设计
  • 接口化与泛型设计
  • 隐式与显式初始化
  • Context相关设计
  • 微服务相关设计

开发流程

我梳理的 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站视频链接

一起学习

欢迎在CSDN私信我,如果没能及时回复,欢迎扫下方公众号关注我:


http://www.ppmy.cn/news/8.html

相关文章

进程与信号(三)

目录 一、前言 二、Signals 1、Signal Handling(ctrlc.c) 2、Sending Signals (1)alarm.c (2)A Robust Signals Interface (3)ctrlc2.c 3、Signal Sets (1&…

ThinkPHP5文档学习——配置

文章目录一、配置目录二、配置格式PHP数组定义其它格式的支持二级配置三、配置加载惯例配置应用配置拓展配置场景配置四、读取配置参数五、动态配置设置配置参数六、独立配置独立配置文件V5.0.1版本已经废除该写法自动读取扩展配置七、配置作用域八、环境变量配置一、配置目录 …

C语言—指针进阶(详解篇)

目录 1.字符指针 1.1字符指针定义 1.2 字符指针用法 2.指针数组 2.1 指针数组定义及使用 3.数组指针 3.1 数组指针定义 3.2 &数组名和数组名 3.3 数组指针的基本用法 4. 数组参数、指针参数 5. 函数指针 5.1 函数指针定义既基本使用 5.2 有趣的代码 6. 函…

【python与数据分析】CH5 函数

目录 前言 一、函数定义与调用基本语法 1.函数定义语法 2.【例5.1.1】编写生成(不大于n)斐波那契数列的函数并调用 3.函数递归调用 (1)介绍 (2)【例5-2】使用递归法对整数进行因数分解 二、函数参数 1.位置参数 2.默认值参…

要想后期修改少,代码重构要趁早

摘要:在敏捷中,让设计简单化,必须让设计从简单开始,然后变得成熟。要做到这一点,重构是唯一的出路。本文分享自华为云社区《敏捷技术实践之重构》,作者:华为云PaaS服务小智 。 前言 极限编程&…

太卷了,这份Java性能调优手册仅上线1小时,竟被恶意封杀下架

在各大厂的面试中,性能优化的问题肯定不会缺席,这足以说明其重要性。今天给大家带来的便是由资深程序员葛一鸣老师写的《Java程序性能优化实战》,同样是没有开源版本,我会将领取方式放在文末 Java程序性能优化实战 我看过几篇讲…

分享五款没什么名气却意外好用的软件

噔噔噔噔,作为一个黑科技软件爱好者,电脑里肯定是不会缺少这方面的东西,今天的5款优质软件闪亮登场了。 1.密码管理工具——RoboForm 这是一款密码管理的小插件,相信很多人都曾被各种各样的密码记忆弄得心力交瘁过,尤…