大多数编程语言之上的 Web 开发框架都是遵照 MVC 的处理流程去开发 Web 应用:Model 部分封装数据,Controller 部分处理业务逻辑,View 部分植入变量填充模板页面。而大部分 Web 框架关于 MVC 的三部分都是在 Server-side 处理,比如对 View 部分的处理都是在 Server-side 通过程序动态对模版变量求值后再拼接组装成 HTML 页面输出给浏览器去呈现。而 Go 开发 Web 应用,并不依赖任何 Web 开发框架,用内置的标准库就可以轻而易举地实现:比如使用 net/http 标准库就可以数行代码构建一个完整的 Web 骨架应用;再比如,通过关键字 struct 封装一个数据结构就可以表达原本 MVC 框架中需要用厚重的 ORM (Object-Relational Mapping) 才能表达的那部分。大道至简,这可以说是 Go 的哲学。在 View 这一层,Go 也有相应标准库提供支持,但更推荐的做法,是当下比较流行的 MVVM (Model-View-ViewModel):Server-side 只输出 JSON,浏览器 DOM 作为 View 层,前端 JavaScript 充当 Contoller 部分;这样,不仅减少了 Server-side 的资源消耗还有中间传输的网络流量,而且前端可以更灵活和更丰富,后端也可以更轻盈和更高效,也更有利于项目的分工和协作。 而 Go 对 JSON 的生成和输出,有数据测试表明异常高效(在 i7-2600K 处理器上针对所有编程语言包含开发框架总计约100个测试对比中,Go 的性能指标稳居第一,详见:http://t.cn/RvZHyKI)。以我个人喜好之见,后端用 Go 前端用 AngularJS 可以说是现今流行 MVVM 方式的 Web 开发之绝唱组合。所以,如有疑问 Go 适不适合用来做 Web 开发,我想答案很肯定的:不但可以而且更简单同时做得更出色甚至还可以做的更多。
有疑问加站长微信联系(非本文作者)