将更改应用于GO执行的vue应用程序

时间:2018-11-05 13:45:23

标签: node.js go vue.js webpack

我使用Go创建了一个仅包含一个网页的非常简单的Web应用程序。在这个项目中,我使用Vue CLI安装webpack。如果我在npm之前运行vue应用程序,一切都很好并且可以完美工作,但是我想在运行go web应用程序时获得与vue一起工作的能力。为此,我通过npm'npm run build'构建了vue-project并获取了dist目录,之后在go应用程序中,我编写了这样的内容:

func main() {
    http.Handle("/static/", http.FileServer(http.Dir("web-vue/dist")))

    http.HandleFunc("/", HomePage)
    http.ListenAndServe(":8080", nil)
}

func HomePage(w http.ResponseWriter, r *http.Request){
    t, err := template.ParseFiles("web-vue/dist/index.html")
    if err != nil {
        log.Print("template parsing error: ", err)
    }
    err = t.Execute(w,"SerGorn")
    if err != nil {
        log.Print("template executing error: ", err)
    }
}

它工作正常,但有一个例外,当我更改.vue文件时,要应用此更改,需要再次通过npm重建应用程序。我该如何解决这个问题?任何想法?还是如果只在node.js中使用vue,这可能是一种错误的方法,更好吗?

2 个答案:

答案 0 :(得分:0)

您可以将vue与任何后端一起使用。好像是FileServer或您的浏览器会缓存您的静态文件。您可以使用Cache-Control: no-cache标头来避免缓存。

答案 1 :(得分:0)

.vue源文件必须经过处理才能由Web服务器用作HTML。您无法修改.vue文件,并且期望在针对生产Web服务器运行的Web浏览器中看到更改。因此,修改后,您必须运行npm run build,该文件将处理.vue文件并在/dist中生成有效的HTML文件。

现在查看您的代码,我发现您可以通过执行以下操作进一步简化代码:

func main() {
    http.Handle("/static", http.FileServer(http.Dir("web-vue/dist/")))
    http.Handle("/", http.FileServer(http.Dir("web-vue/dist/")))
    http.ListenAndServe(":8080", nil)
}