Hello,Echo 从画瓢到改变世界

Posted

距离上次通过写一个应用来学习一门语言还是在 Flask (python2.7) 的时候,自从那次后,对简单要求的 web app 就有了简单的了解。现在将那时的体会用到 golang 的学习上来,因为不是专业的全职程序员,所以希望网友看到不要喷得太厉害,一起学习嘛。在有一点 web 开发经验的基础上,入手一个新语言、一个新的库或者新的框架,想做出一个能用的 web app,我觉得走过一下几步就基本能写出点东西了(以 golang 的 echo 框架为例):

  1. 了解基本语法,这个不多说,我目前看 golang 的书只看到语言基本类型。。。其他都是面向 github 编程。因为有编程经验,很多都是照着画,画多了自然就会了。

  2. 根据 echo 官方,写出 Hello world。(现在我还是一个 main.go 搞定一个程序,分开多个文件写是好组织一些,但是,你懂的,golang 的书到这一步我还没看完,我只知道,首字母需要大写),看这里:Echo guide

  3. 让 echo 使用 html 模板,能根据请求的URL给出对应的模板(这个功能叫路由,route),这样至少你能做出一个高性能的静态网站了。我没用 golang 自带的 template ,我用的是 render 配合 renderer 使用,栗子:。example

  4. 让 echo 能返回想要的 json 数据。这样我们能用来些 Restful API 了,哈哈。(我现在写 web app 已经基本实现前后端分离,所以这一点对我来说很重要。这个 echo 官方有提供了栗子:cookbook,同时我还参考了 sf 上关于返回数据的讨论:REST API error return good practices

  5. 实现登录功能以及 session。这样我们就能做一个有登录功能的程序了,深入点就能做 acl 等功能了。对于密码验证和保存,请不要直接保存密码了(明文密码),golang提供了有bcrypt.GenerateFromPasswordbcrypt.CompareHashAndPassword帮助我们进行密码的 hash 操作。另外我找了一下,echo 似乎认为 session 太简单了而不提供栗子,我用的是这个:session

  6. 实现文件上传。如果是写博客程序,我们也能传图了。(这里可能需要用到 golang 的 os 库了,因为我们开始要和文件打交道了。这个官方 cookbook 也有。(小心路径参数种出现 "../",如果不处理,你的系统根目录会出现很多奇怪的东西,233。还有更严重的事情,要注意。)

  7. 连接数据库,对,不连个数据库现在都不好意思了。

  8. 将 web 安全应用到其中。

  9. 尝试使用更多、更好的技术。

  10. 开始改变世界。

-EOF-