因为工作需要,准备开发一个golang的web开发框架,所以请教大家一个问题,一个好的web开发框架需要具备哪些功能、特质、特性? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
hfeeki

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

  •  
  •   hfeeki Mar 24, 2013 13683 views
    This topic created in 4785 days ago, the information mentioned may be changed or developed.
    或者说大家觉得哪个框架的某个特性好用、设计思想好,为什么?一定要非常具体,不要泛泛而谈。不同开发语言都可以,只要把相关的思想、特性介绍清楚就好!!

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

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

    java的主流开发框架太重型了,不看好。
    Supplement 1    Mar 25, 2013
    我的想法是把实现RESTFUL API的部分独立出来,因为restful api与普通网站开发(指的是需要考虑UI、交互比较多)完全是两种不同的思路,如果硬要混合到一起,会很痛苦的。而且独立出来有一个好处就是可以把网站开发分为两个部分,在API接口定义完之后,两部分就可以并行开发,独立测试,API部分的测试可以使用各种命令行模式的测试工具、方法。而页面部分就要使用UI自动化的工具、方法进行测试。
    另外我倾向与小而美的思路,但是又不能忽略大而全的需求。所以我觉得WSGI/Rack的思路很好,即做到小而美,又能兼顾大而全,接口很简单,什么功能都能通过Middleware来实现,你可以使用系统自带的东西,也可以很容易的进行自定义开发。
    Supplement 2    Mar 28, 2013
    准备先实现一个fake json api server, 有啥好的想法、建议? 我想每个资源对应一个json文件,增加、删除、查询、修改操作都直接对文件进行操作,这样修改也简单谁有更加简单有效的办法尽管提出来!!
    还有关于怎样实现资源操作代码的自动化生成,有啥建议,想法?
    还有关于模板的支持,想先收集下各位关于模板的最佳实践,怎样才能做到兼顾开发效率、质量,运行效率? 哪些模板最受欢迎?为什么?
    如果有人对这个项目感兴趣的话,请踊跃报名,开源golang web framework,求同道中人踊跃支持!!!
    16 replies    2017-11-16 14:01:51 +08:00
    daweiba
        1
    daweiba  
       Mar 24, 2013
    1 自动路由。要求不需要配置,直接通过url访问,自动按restful映射到位。
    2 各种视图重用,模板语法支持restful
    3 orm,这个不用说了吧
    4 缓存。统一调用各种缓存的api
    5 内置队列。查询数据库时,不需要再调用外部的队列服务。
    6 开发时,修改代码后不需要重新编译或go run,且错误信息直接输出到浏览器。
    7 最重要的是一定要减少import的书写量。


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

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


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

    对于web框架而言,我觉得应该做到以下几点
    1)为业务系统提供良好的模块化支持,符合Open/Closed Principle
    2)对http请求可配置的Pipeline过滤器流程机制
    3)url映射,静态资源的统一管理
    4)web框架不应该包含orm,但是可以有拓展机制可以和orm层或者redis等服务衔接
    hfeeki
        15
    hfeeki  
    OP
       Mar 25, 2013
    @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
        16
    shen100  
       Nov 16, 2017
    这里有大家对 Go Web 框架的投票,可以参考下
    https://www.golang123.com/vote/1
    About     Help     Advertise     Blog     API     FAQ     Solana     5146 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 63ms UTC 08:59 PVG 16:59 LAX 01:59 JFK 04:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86