学习
实践
活动
专区
工具
TVP
写文章

问卷调查网站小结

问卷调查网站小结

江川

这几天做了个问卷调查的网站。先用三天做了个可以匿名答题并统计结果的,后来需求有变,需要实名,且要能分单位统计,就又用了两天,昨天晚上嗑了半斤瓜子后,完成。

先说技术选型。问卷调查这类网站,业务逻辑不复杂,并发的要求也不高,所以对于平台和语言没有特殊要求,选熟悉的就行。这里我用的是go,简单轻快,性能优秀,天然支持高并发,第三方库较为丰富(虽然比不上Java那么丰富,也足够用了),编译型,部署简单,不需要再安装LAMP之类的运行环境,而且,如果有必要,还能交叉编译,运行在ARM平台上也是可以的。这是语言的选择。

关于数据库的选择,调查问卷网站的数据量不大,用了个最简单的,SQLite,无需安装,有库就能用,而且外键、索引等基本数据库特性也都支持,就选了这个。

网站开发框架,用了gin,据说是go语言下最快的web开发框架。以前也用过beego,感觉beego有点死板,逼着你用MVC模式,而gin的自由度要高一些,基本上该有的功能也都有,用了几天,感觉挺好用。简单,几乎只有路由功能,可以实现路由分组,支持过滤器,用这些写个web API应该是很方便的。

数据库操作用的gorm,可以把struct直接映射到数据库里面,反过来也可以,省的自己去手工写sql语句了。

网页模板用的go自带的template,页面不复杂的话,够用了。

前端UI用的bootstrap,没写一行JavaScript,所有的逻辑都在后台实现。

中间也遇到的坑记一下。

gorm在查询的时候,会首先检查deleted_at字段,如果此字段不是null,那么这条记录会被忽略,而用go创建结构体的时候,默认情况下会给所有的简单类型赋值,包括time类型,这样就有可能导致一条记录插到数据库之后,gorm会认为此记录已经被“软删除”了,后面查询不到。

后面要求分单位统计结果的时候,涉及到到了多表的联合查询,而且查询条件会有多种,最后用了一个map来存储过滤条件,根据map的key决定如何查询,有点麻烦,暂时没想到更好的组织方法。

跳过了这些坑,还有一些经验可以总结一些。

首先,谋定而后动。虽然花了五天的时间来做这个东西,但是大部分时间其实都在嗑瓜子(si kao),坐在电脑前敲键盘的时间其实并不是很多。现在终于明白“架构狮”为什么工资要比“程序猿”高很多了。

然后,选择合适的工具组合很重要。对于这种业务逻辑不复杂的场景,使用一些小工具的组合,比直接上大而全的架构更合适,像Spring这种,航母级别的,用来打土匪,就太浪费了,也不灵活。

最后,一个好的键盘+大显示器很有用。去年买了个filco键盘,偶尔敲一些文章,感觉还不明显,用来写代码,感觉超级好,或者说,感觉不到键盘的存在,键盘不会再成为思维的阻碍;大屏显示器可以让视野更开阔,省去了很多翻页的麻烦。如果要长期工作,好的键盘和显示器是不可或缺的,电脑的性能倒是其次,毕竟不是写算法类的程序。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190105G0FHIQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券