Javascript 添加html、css、js等的可能性。。。去服务器?

Javascript 添加html、css、js等的可能性。。。去服务器?,javascript,html,css,go,server,Javascript,Html,Css,Go,Server,我无法在我的Go服务器上获取index.html、main.js、style.css等文件。 我的html文件与本地文件上的javascript和css配合得很好,但我无法使其在服务器上工作。 我已经在代码中尝试过这样做,但它只启动html文件,javascript、css、jquer和字体在控制台中列出,就像找不到页面一样(404找不到页面) 我的问题是: 在没有Node.js的情况下是否有可能做到这一点。是否有任何选项可以在html中显示我的所有javascript文件和css。我真的不想

我无法在我的Go服务器上获取index.html、main.js、style.css等文件。 我的html文件与本地文件上的javascript和css配合得很好,但我无法使其在服务器上工作。
我已经在代码中尝试过这样做,但它只启动html文件,javascript、css、jquer和字体在控制台中列出,就像找不到页面一样(404找不到页面)

我的问题是:
在没有Node.js的情况下是否有可能做到这一点。是否有任何选项可以在html中显示我的所有javascript文件和css。我真的不想让这个节点变得复杂

注意
我的html、css、javascript代码都可以使用。我的服务器也可以工作,现在唯一需要做的就是将文件添加到服务器。


这是从网站文件夹运行的

问题是您试图将
http.FileServer
提供给Gorilla mux的
route.Handle
函数。这将处理单个URL,因此它仅对给定的URL有效,
/

为静态文件提供服务所需的是
路由.PathPrefix()
。它提供以给定字符串开头的任何URL路径,而
route.Handle()
只提供与字符串完全匹配的路径

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()
    r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static")))

    // Create and start HTTP server.
    s := &http.Server{
        Handler: r,
        Addr:    ":8009",
    }

    log.Fatalln(s.ListenAndServe())
}

问题是您试图将
http.FileServer
提供给Gorilla mux的
route.Handle
函数。这将处理单个URL,因此它仅对给定的URL有效,
/

为静态文件提供服务所需的是
路由.PathPrefix()
。它提供以给定字符串开头的任何URL路径,而
route.Handle()
只提供与字符串完全匹配的路径

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()
    r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static")))

    // Create and start HTTP server.
    s := &http.Server{
        Handler: r,
        Addr:    ":8009",
    }

    log.Fatalln(s.ListenAndServe())
}


你是说所有其他文件(如main.js、style.css)都与index.html在同一个文件夹中,但你只能得到index.html?检查浏览器控制台的“网络”选项卡,你可能会看到404的资产,这可能是由于服务器的文件夹结构和html文件资产路径不兼容造成的。@DavidB这在Go(本地或公共)中非常简单,不重要。不需要包含节点。请在服务器上添加项目文件夹结构的问题,以便我们可以查看索引文件和资产文件所在的位置。此外,您在Go代码中使用的是相对路径,在这种情况下,请确保从服务器中的正确位置启动Go二进制文件,以便程序的cwd是您假定的。您使用的是gorilla mux吗?如果是这样,这可能就是问题所在。你应该给出一个关于导入的工作示例。@mkopriva我解决了所谓的“问题”。服务器在同一个文件夹中,因此func main被一次又一次地重写。所以我所做的只是将一台服务器移动到另一个目录,因为它只是一台实际要使用的服务器的测试服务器,然后从两个不同的终端启动服务器。再次感谢您的帮助。您是说所有其他文件(如main.js、style.css)都与index.html位于同一文件夹中,但您只能获取index.html?检查浏览器控制台的“网络”选项卡,您可能会看到404的资产,这可能是由于服务器的文件夹结构和html文件资产路径不兼容造成的。@DavidB这在Go(本地或公共)中非常简单,不重要。不需要包含节点。请在服务器上添加项目文件夹结构的问题,以便我们可以查看索引文件和资产文件所在的位置。此外,您在Go代码中使用的是相对路径,在这种情况下,请确保从服务器中的正确位置启动Go二进制文件,以便程序的cwd是您假定的。您使用的是gorilla mux吗?如果是这样,这可能就是问题所在。你应该给出一个关于导入的工作示例。@mkopriva我解决了所谓的“问题”。服务器在同一个文件夹中,因此func main被一次又一次地重写。所以我所做的只是将一台服务器移动到另一个目录,因为它只是一台实际要使用的服务器的测试服务器,然后从两个不同的终端启动服务器。再次感谢您的帮助。它的工作方式与以前不同,但现在仍然会为静态文件夹中的每个文件显示错误。大多数人说这是一种MIME类型(文本/纯文本)。对不起,我还是说,用使用http.FileServer(如下所示)的自定义路由器取代了
mux.NewRouter
,帮助?@dylan myers我现在已经从代码中完全丢弃了mux,并尝试了正常的服务器创建方法。它现在可以正常工作了。迈克尔的回答可能是对你的问题的一个很好的回答,不过,我接受其他任何有同样问题的人的回答:)@DavidB这个最小的例子就是如此。它的目的是在
运行时演示该概念。如果您无法将其适应现有代码,您可能会提出一个新问题。它的工作方式与以前不同,但现在仍然会为静态文件夹中的每个文件显示错误。大多数人说这是一种MIME类型(文本/纯文本)。对不起,我还是说,用使用http.FileServer(如下所示)的自定义路由器取代了
mux.NewRouter
,帮助?@dylan myers我现在已经从代码中完全丢弃了mux,并尝试了正常的服务器创建方法。它现在可以正常工作了。迈克尔的回答可能是对你的问题的一个很好的回答,不过,我接受其他任何有同样问题的人的回答:)@DavidB这个最小的例子就是如此。它的目的是在
运行时演示该概念。如果您在将其调整到现有代码时遇到困难,您可能会提出一个新的问题。
        go run *.go -c config.toml
package main

import (
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()
    r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static")))

    // Create and start HTTP server.
    s := &http.Server{
        Handler: r,
        Addr:    ":8009",
    }

    log.Fatalln(s.ListenAndServe())
}