热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Go模板中包含js文件

如何解决《在Go模板中包含js文件》经验,为你挑选了1个好方法。

我最近开始学习Go.我有一个像网络应用程序的样本.我有:

/* tick-tock.go */
package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
)

// Content for the main html page..
var page = `
           
             
             
           
           
             

Go Timer

` // handler for the main page. func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, page) } // handler to cater AJAX requests func handlerDevs(w http.ResponseWriter, r *http.Request) { //fmt.Fprint(w, time.Now().Format("Mon, 02 Jan 2006 15:04:05 MST")) fmt.Fprint(w, "Dev1
") } func handlerV1(w http.ResponseWriter, r *http.Request) { //fmt.Fprint(w, time.Now().Format("Mon, 02 Jan 2006 15:04:05 MST")) fmt.Fprint(w, "Vertical1
") } func handlerV2(w http.ResponseWriter, r *http.Request) { //fmt.Fprint(w, time.Now().Format("Mon, 02 Jan 2006 15:04:05 MST")) fmt.Fprint(w, "Vertical2
") } func main() { http.HandleFunc("/", handler) http.HandleFunc("/dev", handlerDevs) http.HandleFunc("/v1", handlerV1) http.HandleFunc("/v2", handlerV2) log.Fatal(http.ListenAndServe(":9999", nil)) http.HandleFunc("/jquery.min.js", SendJqueryJs) panic(http.ListenAndServe(":8081", nil)) } func SendJqueryJs(w http.ResponseWriter, r *http.Request) { data, err := ioutil.ReadFile("jquery.min.js") if err != nil { http.Error(w, "Couldn't read file", http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/Javascript") w.Write(data) }

我无法加载本地jquery.min.js.我写的src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"时候就加载了.如何加载本地js文件?我不擅长Go中的编码而且我没有编写完整的代码.所以请尽量解释一下.提前致谢!



1> icza..:

您需要a Handler或a HandlerFunc,它会jquery.min.js在请求时将文件content()发送到Web浏览器.

你有3个选择:

手动做

这是更复杂的解决方案.看起来在您的处理函数中,您读取文件的内容,设置正确的响应内容类型(application/Javascript)并将内容(即a []byte)发送到响应.

需要注意的事项:读取文件时,必须指定绝对路径.如果指定相对路径,请确保该文件位于当前文件夹(工作目录)中,以便从中启动应用程序.

例:

func SendJqueryJs(w http.ResponseWriter, r *http.Request) {
    data, err := ioutil.ReadFile("jquery.min.js")
    if err != nil {
        http.Error(w, "Couldn't read file", http.StatusInternalServerError)
        return
    }
    w.Header().Set("Content-Type", "application/Javascript; charset=utf-8")
    w.Write(data)
}

func main() {
    http.HandleFunc("/jquery.min.js", SendJqueryJs)
    panic(http.ListenAndServe(":8081", nil))
}

上面的示例只能提供1个文件:jquery.min.js对于请求:

http://localhost:8081/jquery.min.js

利用 http.ServeFile()

这更容易:该函数http.ServeFile()能够将一个文件的内容发送到指定的响应.您仍然需要创建一个函数或处理程序来使用它,但它会为您完成剩下的工作:

func SendJqueryJs(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "jquery.min.js")
}

利用 http.FileServer()

如果您需要提供多个静态文件,这就是FileServer()函数派上用场的地方,它会返回一个Handler自动提供本地文件系统中的文件,这些文件是您指定的根文件夹的后代.

此解决方案更灵活:它可以发送多种类型的文件,自动检测和设置内容类型.处理程序还能够呈现用于列出目录内容的HTML页面,其中包含指向文件和父/子文件夹的链接.

例:

http.Handle("/tmpfiles/",
    http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))

这将Handler在URL中注册一个URL /tmpfiles/,该URL 提供文件/tmp夹中本地文件系统中的文件.例如,以下链接:



/tmp/jsquery.min.js将从服务器获取文件.

查看此答案,详细说明如何使用/启动静态文件服务器.


推荐阅读
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 如何解决《使用golangwebserver,网站的根目录在哪里映射到文件系统?》经验,为你挑选了1个好方法。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • This guide provides a comprehensive step-by-step approach to successfully installing the MongoDB PHP driver on XAMPP for macOS, ensuring a smooth and efficient setup process. ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • andr ... [详细]
author-avatar
手机用户2502856203
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有