19

golang 开发后端基础(2)

 5 years ago
source link: https://studygolang.com/articles/18020?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

继续周日内容,我们看一下 home.html 文件,在 index 中我们引入 style.css 作为样式表来控制页面的显示。将 style.css 放置 public/css 目录下。

rIrmyie.jpg!web
RJ3Y7bY.jpg!web

运行程序,我们没有看到页面有任何的变化,说明样式没有成功加载。看一下是什么原因,打开控制台看一下有关 style.css 的加载信息,发现 html 加载content type 为 text/html ,这个没有问题,而 css 的 content type为 text/plain 而不是 text/css 所以没有样式,我们来尝试解决一下这个问题。

nYn2iia.jpg!web
Azaqam3.jpg!web

在之前代码的基础之上,我们添加名称 contentType 的 string 类型变量让他接受类型, 然后根据文件扩展名来给出不同 contentType 表示加载文件的类型,大家注意到了 css 文件我们给出 contentType 为 text/css

AZRRNrq.jpg!web
eQRZfu3.jpg!web

在 style.css 中给body背景色为蓝色

zMfmEfr.jpg!web

这一次运行程序,发现页面背景色变为蓝色说明已经加载了 css 文件并解析他。

VbmMFfF.jpg!web
uIbyEbf.jpg!web

接下来为了提高性能,我们用 buffer 来读取文件,这是只是读取文件方式不同,其他内容不变。大家可以看一下

e2yeyq3.jpg!web

修改项目结构在 src 下加一个文件夹 main 文件夹,然后将 main.go 文件放到这个文件夹下。目的是为了让项目结构更清晰。

zyAVjaY.jpg!web

删除 main.go 文件中的原有的代码,重新写一下。这一次我们使用 http.Dir 让我们可以直接读取服务端的目录结构,可以同 http 访问服务端的文件夹以及其内容。有点像打开svn 服务

73qi6rE.jpg!web
UVFFf2Q.jpg!web

好到现在为止,我们对用 go 写 web 应用有一定的了解,不过现在渲染的界面都是静态界面,接下来我们来通过模板的形式来动态地给用户展示页面,先看以一个简单的示例。

这里新建一个模板,可以给模板起任意的名称,然后解析 html 字符串。tmpl 执行模板时第二个参数我们给nil 第二参数是让模板里传数据

22IbauB.jpg!web
bqINfiE.jpg!web

动态模板,我们上面的代码基础上进行修改,将 Execute 第二个参数替换为 url 中内容,然后将模板中添加占位符来显示传入的数据,{{.}}代表全部。

qeUZ3iq.jpg!web
6juUB3y.jpg!web

接下里代码很多,看上去有点复杂,其实很好懂,我就不解释了,大家自己看吧。我已经把需要看的内容标记出来

MZRBzqQ.jpg!web
URRzUfe.jpg!web

早上好!

zAZB7rB.jpg!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK