在过去一段时间里面,使用nodejs,或者使用npm 一些脚本功能就能对一个资源目录提供一个web的访问功能,非常方便。在接触了golang里后,有一些比较简洁的代码能够实现过去一直的想法,尝试搭建一个静态的web服务器。至于代码是怎样,golang 的一些案例代码发现以下的案例非常有意思。所以今天记录下来。为了实现一个功能。在打包后,修改注册表添加一个鼠标右键的菜单,并且对鼠标右键菜单实现关联golang导出的exe文件。这样一来解决了我过去一些想用c#做的代码。看如下代码案例。
1.构建golang程序
这里的代码中,加上一个运行的参数的判定。当使用右键菜单时候,外部传递进来进行捕捉。
package main
import (
"fmt"
"log"
"net/http"
"os"
)
func main(){
path := "file";
if( len(os.Args) > 1){
path = os.Args[1]
}
fmt.Println(path)
http.Handle("/", http.FileServer(http.Dir(path)))
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe",err)
}
}
完成后,使用go build 进行编译构建出一个运行文件。
2. 添加鼠标右键菜单
使用命令regedit进入注册表,中
HKEY_CLASSES_ROOT\Directory。这个注册表针对文件夹打开才有效。
在这里添加一个命令文件夹egret,对其修改默认值Server,并在内部建立一个选项命为command。这个项中,需要加上一个值,关联构建后的exe程序httpgo.exe。
"G:\google\golang小工具\tool\httpgo.exe" "%1"
其中%1 会返回一个路径给程序。这个程序通过main函数里面获取到入口参数。
在调试过程中,发现os.Args的参数长度大于0,这一点有点奇怪。经过修改下标获取当菜单选项后对应的绝对路径。
这样一来,打包后的程序。设置注册表菜单后,调用一下就能实现对某一个文件夹进行实现web目录。。
执行完成后,该小型功能能够实现到静态文件的web功能。这对于弄实验开发egret非常有意思。但是有一个现象是,当每次执行不同的golang的时候,浏览器会记住旧的情况,所以需要删除缓存,方可以完成。这一点,不知道为什么。在学习golang的时候有点疑惑。
完成后,可以鼠标右键对一个文件夹实现一个web目录的预览了。当白鹭打包后的web程序想运行,不妨可以试试这个方法。其实也可以把相应的程序丢到xampp tomcat等服务器中去。