通过处理模板来实现语言奇怪的行为

时间:2014-11-28 17:02:13

标签: templates go


您好!

我现在正在学习Go语言并尝试移植一些简单的WEB代码(Laravel 4)。 一切都很顺利,直到我尝试将Blade模板重现为文本模板。 我发现Go只能从名为" bootstrap" 的目录中加载我的CSS和JavaScript文件。

这是我尝试使用的目录树:

start-catalog
  bootstrap (link to bootstrap-3.3.1)
      bootstrap-3.3.1
    css
      bootstrap.min.css
    js
      bootstrap.min.js
  jquery
    jquery (link to jquery-2.1.1.min.js) 
    jsquery-2.1.1.min.js
  go_prg.go

Here are my templates:

base_js.tmpl

{{define "base_js"}}
      {{template "login_1"}}

      <script src = "/bootstrap/js/jquery"></script>
      <script src = "/bootstrap/js/bootstrap.min.js"></script>
{{end}}

base_header.tmpl

{{define "base_header"}} <head> <title>PAGE TITLE</title> <meta name = "viewport" content = "width=device-width, initial-scale=1.0"> <meta charset="utf-8"> <link href = "/bootstrap/css/bootstrap.min.css" rel = "stylesheet"> </head> {{end}}

如果目录名称与&#34; bootstrap&#34;不同Go语言或Firefox无法从上面的模板加载文件: bootstrap.min.css bootstrap.min.js jquery
如果我不直接使用链接而是使用目录名称&#34; bootstrap-3.3.1&#34;比Go或Firefox无法加载 如果所有必需的文件都移动到&#34; bootstrap&#34;我得到了我期望的结果(与Laravel 4完全相同)。

为了启动go语言代码,使用了命令 go run go_prg.go 环境:Ubuntu 14.04,go-1.3.3,Firefox 31。

谁错了:去语言,火狐还是我?

任何帮助都将受到高度赞赏!

1 个答案:

答案 0 :(得分:0)

描述的问题是由

引起的
http.Handle("/bootstrap/", http.StripPrefix("/bootstrap/", http.FileServer(http.Dir("bootstrap"))))

在处理任何模板之前。它允许访问目录&#39; bootstrap&#39;仅

通过更改为修复了问题 http.Handle(,http.StripPrefix(,http.FileServer(http.Dir(&#34;。&#34;)))) 并添加到CSS和JavaScript文件的pathes。像这样

/引导/ JS / jquery的&#34;&GT;