有哪些相见恨晚的golang库
Golang(或称 Go 语言)以其简洁、高效且并发友好的特性,越来越受到开发者的青睐。在开发过程中,使用合适的第三方库可以极大地提高生产力和开发体验。以下是一些被咱认为是“相见恨晚”的 Golang 库,这些库涵盖了从 Web 开发、测试、数据库操作到各种实用功能的多个领域:
- Gin: Gin 是一个高性能的 HTTP Web 框架,具有快速开发和清晰的路由功能,被很多开发者用来替代标准库的 net/http。
- Echo: Echo 是另一个高性能 Web 框架,它以极高的吞吐量和最低的资源消耗而闻名。
- Fiber: Fiber 是受 Express.js影响的一个 Web 框架,专注于快速开发,并且与很多中间件兼容。
- GORM: GORM 是一个强大且灵活的 ORM 库,可以帮助开发者轻松地处理数据库操作。
- sqlx: sqlx 是一个增强版的 database/sql,提供更强的数据操作能力,以及一些简化查询的助手功能。
- Go-redis: go-redis 是一个 Redis 客户端,满足高吞吐量需求且具有丰富的功能,适合搭建分布式系统。
- Cobra: Cobra 是一个用于创建强大的现代 CLI 应用的库,常配合 Viper 用于构建命令行工具。
- Viper: Viper 是一个全面的配置解决方案,支持 JSON、TOML、YAML、HCL、envfile 等格式,具有热加载特性,常用于微服务架构。
- Logrus: Logrus 是一个结构化的日志记录器,为开发者提供灵活的日志处理功能。
- Zap: zap 是一个高性能的日志库,提供结构化和快速的日志操作,适合对日志性能有高要求的项目。
- Testify: Testify 提供了一组丰富的断言函数和单元测试辅助工具,支持模拟和断言。
- Ginkgo: Ginkgo 是一个行为驱动开发(BDD)的测试框架,提供了富有表现力的同步和异步测试模式。
- UUID: UUID 是由 Google 提供的一个为 UUID 生成和处理提供支持的库,非常稳定和可靠。
- Goquery: Goquery 是一个类 jQuery 的库,允许在 Go 中使用 jQuery 风格的选择器操作 HTML 文档。
- Goimports: Goimports 是一款工具,能自动格式化 Go 源代码并添加/移除 import 语句,极大地改善了代码风格和一致性。
这些库都是 Golang 生态中极具影响力的项目,因其稳定性和强大的功能性而深受开发者的喜爱。在项目中引入合适的库可以帮助开发者提高代码的可维护性和开发效率,值得尝试和深入研究。
SpringBoot Thymeleaf使用教程(实用版)
原文地址:https://dwz.cn/2UR4feq8
作者:yizhiwazi
学习目标
- 快速掌握Thymeleaf的基本使用(五大基础语法+常用内置对象)
温馨提示:Thymeleaf 最为显著的特征是增强属性,任何属性都可以通过th:xx 来完成交互,例如th:value最终会覆盖value属性。
一、基础语法
变量表达式 ${}
使用方法:直接使用th:xx = \”${}\” 获取对象属性 。例如:
选择变量表达式 *{}
使用方法:首先通过th:object 获取对象,然后使用th:xx = \”*{}\”获取对象属性。
这种简写风格极为清爽,推荐大家在实际项目中使用。 例如:
链接表达式 @{}
使用方法:通过链接表达式@{}直接拿到应用路径,然后拼接静态资源路径。例如:
片段表达式 ~{}
片段表达式是Thymeleaf的特一,细粒度可以达到标签级别,这是JSP无法做到的。
片段表达式拥有三种语法:
- ~{ viewName } 表示引入完整页面
- ~{ viewName ::selector} 表示在指定页面寻找片段 其中selector可为片段名、jquery选择器等
- ~{ ::selector} 表示在当前页寻找
使用方法:首先通过th:fragment定制片段 ,然后通过th:replace 填写片段路径和片段名。例如:
在实际使用中,我们往往使用更简洁的表达,去掉表达式外壳直接填写片段名。例如:
值得注意的是,使用替换路径th:replace 开头请勿添加斜杠,避免部署运行的时候出现路径报错。(因为默认拼接的路径为spring.thymeleaf.prefix = classpath:/templates/)
消息表达式
即通常的国际化属性:#{msg} 用于获取国际化语言翻译值。例如:
其它表达式
在基础语法中,默认支持字符串连接、数学运算、布尔逻辑和三目运算等。例如:
二、内置对象
官方文档: 附录A: Thymeleaf 3.0 基础对象
官方文档: 附录B: Thymeleaf 3.0 工具类
七大基础对象:
- ${#ctx} 上下文对象,可用于获取其它内置对象。
- ${#vars}: 上下文变量。
- ${#locale}:上下文区域设置。
- ${#request}: HttpServletRequest对象。
- ${#response}: HttpServletResponse对象。
- ${#session}: HttpSession对象。
- ${#servletContext}: ServletContext对象。
常用的工具类:
- #strings:字符串工具类
- #lists:List 工具类
- #arrays:数组工具类
- #sets:Set 工具类
- #maps:常用Map方法。
- #objects:一般对象类,通常用来判断非空
- #bools:常用的布尔方法。
- #execInfo:获取页面模板的处理信息。
- #messages:在变量表达式中获取外部消息的方法,与使用#{…}语法获取的方法相同。
- #uris:转义部分URL / URI的方法。
- #conversions:用于执行已配置的转换服务的方法。
- #dates:时间操作和时间格式化等。
- #calendars:用于更复杂时间的格式化。
- #numbers:格式化数字对象的方法。
- #aggregates:在数组或集合上创建聚合的方法。
- #ids:处理可能重复的id属性的方法。
三、迭代循环
想要遍历List集合很简单,配合th:each 即可快速完成迭代。例如遍历用户列表:
在集合的迭代过程还可以获取状态变量,只需在变量后面指定状态变量名即可,状态变量可用于获取集合的下标/序号、总数、是否为单数/偶数行、是否为第一个/最后一个。例如:
如果缺省状态变量名,则迭代器会默认帮我们生成以变量名开头的状态变量 xxStat, 例如:
四、条件判断
条件判断通常用于动态页面的初始化,例如:
如果想取反则使用unless 例如:
五、日期格式化
使用默认的日期格式(toString方法) 并不是我们预期的格式:Mon Dec 03 23:16:50 CST 2018
此时可以通过时间工具类#dates来对日期进行格式化:2018-12-03 23:16:50
六、内联写法
- (1)为什么要使用内联写法?·答:因为 JS无法获取服务端返回的变量。
- (2)如何使用内联表达式?答:标准格式为:[[${xx}]] ,可以读取服务端变量,也可以调用内置对象的方法。例如获取用户变量和应用路径:
- (3)标签引入的JS里面能使用内联表达式吗?答:不能!内联表达式仅在页面生效,因为Thymeleaf只负责解析一级视图,不能识别外部标签JS里面的表达式。
七、国际化
需要了解更多关于国际化的精彩描述请前往 SpringBoot 快速实现国际化i18n 。
例如在国际化文件中编写了user.title这个键值,然后使用#{}读取这个KEY即可获取翻译。
八、详细教程
======== 有了上述基础后 下面正式开始Thymeleaf 的详细教程 ==============
首先通过Spring Initializr创建项目,如图所示:
然后在POM文件引入web 、thymeleaf等依赖:
然后在src/main/resources/application.yml 配置页面路径:
接着在src/main/java/com/hehe/web/UserController 获取用户信息:
开始编写公共页面:src/main/resources/views/common/head.html ,其中static为页面片段:
接着编写用户列表页:src/main/resources/views/user/user.html 配合th:each显示用户列表信息。
使用说明:这里 th:replace=\”common/head::static\” 表示将引用${spring.thymeleaf.prefix}/common/head.html的static页面片段,值得注意的是由于替换路径默认会拼接前缀路径,所以开头切勿在添加斜杠,否则在打包成JAR部署运行时将提示报Templates not found… 。
然后编写单个用户页面:
至此大功告成,然后快速启动项目,如图所示:
快速启动项目
然后访问用户列表: http://localhost:8080 ,如图所示:
然后访问单个用户: http://localhost:8080/user/1 ,如图所示:
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。