因为工作需要,准备开发一个golang的web开发框架,所以请教大家一个问题,一个好的web开发框架需要具备哪些功能、特质、特性?

2013-03-24 00:02:18 +08:00
 hfeeki
或者说大家觉得哪个框架的某个特性好用、设计思想好,为什么?一定要非常具体,不要泛泛而谈。不同开发语言都可以,只要把相关的思想、特性介绍清楚就好!!

例如:
喜欢rails的约定优于配置的设计思路,可以减少配置文件的数量和代码的复杂性,但是又觉得rails在这点上有些过头了。
喜欢python的 WSGI 规范,简洁明了,是我见过的最简单的一个web服务器规范。

喜欢erlang的推导性的语法,很简单优雅,对某些问题很能节省代码量,而且容易编写。如果能够在golang里面也能用到那就好了。

java的主流开发框架太重型了,不看好。
12768 次点击
所在节点    程序员
16 条回复
daweiba
2013-03-24 15:58:40 +08:00
1 自动路由。要求不需要配置,直接通过url访问,自动按restful映射到位。
2 各种视图重用,模板语法支持restful
3 orm,这个不用说了吧
4 缓存。统一调用各种缓存的api
5 内置队列。查询数据库时,不需要再调用外部的队列服务。
6 开发时,修改代码后不需要重新编译或go run,且错误信息直接输出到浏览器。
7 最重要的是一定要减少import的书写量。


用golang好像很难满足。。
cooper
2013-03-24 16:14:04 +08:00
url route/map,web开发框架的核心,它决定了代码的组织方式
html 模版子系统
orm,或者说数据库访问层
form 前后端验证
helper 包括:分页,cache,session,sitemap,rss,email等
deployment 支持,简单说,这个框架起码要内置一个http server
twm
2013-03-24 16:15:08 +08:00
大量的第三方库
summic
2013-03-24 16:53:56 +08:00
对框架的需求每个项目都不同, 及时基础的mvc、route、orm、form、auth也不是谁都需要的
我觉得应该先开发给自己用,做最核心的,之后如果能形成一个社区,就好走了

我有时候想,如果让一个产品经理来设计VIM,会成为什么样子
felinx
2013-03-24 17:03:37 +08:00
给你推荐一个,一位朋友写的
https://github.com/astaxie/beego
Rabbit52
2013-03-24 19:11:20 +08:00
@summic +1
liuxurong
2013-03-24 21:33:43 +08:00
Flask 这种
onetown
2013-03-25 00:34:15 +08:00
我觉得不需要内置ORM, 框架为什么非要带ORM, 我觉得bottle, tornado这种小的框架挺好的。 只要route, template, i18n, 其他交给别人做吧。
sobigfish
2013-03-25 00:37:03 +08:00
可扩展性啊,laravel (php) 火起来不是没有原因的。
0x0001
2013-03-25 08:27:29 +08:00
@daweiba 我一直搞不懂restful是什么东东…
nickdine
2013-03-25 08:53:27 +08:00
java 有一个playframework 已经很不错了 支持restful 支持热编译 充血模型 约定大于配置 各种牛逼 你可以下源码看看 了解下
daweiba
2013-03-25 08:57:45 +08:00
@onetown 没有ORM 生产力就不够,永远无法上升为主流框架,主流框架都是full stack的。


@0x0001 http://ihower.tw/rails3/restful.html
Xg
2013-03-25 15:37:08 +08:00
full stack的可以看看revel,play的Go语言版。应该是目前比较成熟的一个了。
类似web.go那种的微框架还是自写自用吧,基本上推广不开。。
我自用的 https://github.com/xgdapg/xgo
RisingV
2013-03-25 16:22:52 +08:00
框架的主要目的是把那些重复的工作提取出来,提供足够健壮的实现,保证框架使用者将注意力集中在业务逻辑上,同时提供良好的解耦,便于维护和再开发。

对于web框架而言,我觉得应该做到以下几点
1)为业务系统提供良好的模块化支持,符合Open/Closed Principle
2)对http请求可配置的Pipeline过滤器流程机制
3)url映射,静态资源的统一管理
4)web框架不应该包含orm,但是可以有拓展机制可以和orm层或者redis等服务衔接
hfeeki
2013-03-25 18:00:18 +08:00
@RisingV 真是巧了,昨天还在思考如何实现Pipelines Filters的机制呢。具体怎么实现还没有想好,请问你有啥思路?
关于Open/Closed Principle:可否更具体一点,应该注意些什么?哪些是好的工程实践,哪些是差的工程实践?
to all: 关于把REST API部分(或者叫 Resources Management)与普通的web ui部分分开来,各位有啥意见?
我的想法就是以后网站开发的标准流程变成:
1. 定义资源、REST API,使用
2. 分别开发web ui server 和 api server, 考虑为ui server提供一个fake api server, 准备好一些典型的json数据,这样ui server的开发、测试就可以独立进行了。
大概的架构:
https://www.lucidchart.com/documents/view/4e45-01b0-51501ebd-b7d4-690e0a000267
shen100
2017-11-16 14:01:51 +08:00
这里有大家对 Go Web 框架的投票,可以参考下
https://www.golang123.com/vote/1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/63867

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX