我们看一下 home.html 文件, 在 index 中我们引入 style.CSS 作为样式表来控制页面的显示. 将 style.CSS 放置 public/CSS 目录下.
图
style 位置
运行程序, 我们没有看到页面有任何的变化, 说明样式没有成功加载. 看一下是什么原因, 打开控制台, 看一下有关 style.CSS 的加载的信息, 发现 HTML 加载 content type 为 text/HTML , 这个没有问题, 而 CSS 的 content type 也是 text/plain 而不是 text/CSS . 所以没有识别出样式, 我们来尝试解决一下这个问题.
图
图
在之前代码的基础之上, 我们添加名称 contentType 的 string 类型变量, 让他接受类型, 然后根据文件扩展名来给出不同的 contentType 表示加载不同类型的文件, 大家注意一下, CSS 文件类型 contentType 应为 text/CSS.
图
在 style.CSS 中给 body 背景色为蓝色, 以便清楚查看样式是否加载成功.
图
这一次运行程序, 发现页面背景色变为蓝色说明已经成功地加载了 CSS 文件并解析他.
图
图
接下来为了提高性能, 我们用 buffer 来读取文件, 这次只是读取文件方式不同, 其他内容不变. 大家可以看一下
图
修改项目结构, 在 src 下添加一个名字为 main 文件夹, 然后将 main.go 文件放到这个文件夹下. 目的是为了让项目结构看起来更清晰.
图
删除 main.go 文件中的原有的代码, 重新写一下. 这一次我们使用 http.Dir 来直接读取服务端的目录结构, 可以通过 http 访问服务端的文件夹以及其内容. 有点像打开 SVN 服务
图
图
好到现在为止, 我们对用 go 写 web 应用有一定的了解, 不过现在渲染的界面都是静态的界面, 接下来我们来通过模板的形式来动态地给用户展示页面, 先看以一个简单的示例.
这里新建一个模板, 可以给模板起任意的名称, 然后解析 HTML 字符串. tmpl 执行模板时, 第二个参数我们给 nil 第二参数是往模板里传的数据.
图
现在就完成了动态模板功能, 在上面的代码基础上进行修改, 将 Execute 第二个参数替换为 url 中内容, 然后往模板中添加一些占位符, 来显示将要传入的数据,{{.}} 代表全部.
图
图
接下里代码很多, 看上去有点复杂, 其实很好懂, 我就不做过多的解释了, 大家自己看吧. 我已经把需要看的内容标记出来
来源: http://www.jianshu.com/p/a790991d403c