# tplEngine **Repository Path**: cxssang/tplEngine ## Basic Information - **Project Name**: tplEngine - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-10 - **Last Updated**: 2025-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 为了开发方便,封装了一个小小的不像引擎的模板引擎 建议在main里只注册一个http.Handle("/"),在回调函数里对engine进行初始化,因为NewEngine是单例模式 例如:engine:=tplEngine.NewEngine(w,r,fs) 注意fs参数,可以调用tplEngine.fs.NewEmbedFS(embedFs)来嵌入静态资源目录 或调用tplEngine.fs.NewLocalFS(dir)来调用本地文件系统 编译时加参数:-ldflags="-X main.DEBUG=1" 开启调试模式,作用是对html文件的修改即时生效,否则编译后,html文件内嵌到可执行文件里 例子: //go:embed html var embedFS embed.FS func main() { var mfs fs.FS if DEBUG == "1" { mfs = tfs.NewLocalFS("./html") } else { mfs = tfs.NewEmbedFS(embedFS) } ignoreAuthPath := []string{"/login"} http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { engine := tplEngine.NewEngine(w, r, mfs) if !engine.StaticFile() { ignoreAuth := false for _, p := range ignoreAuthPath { if r.URL.Path == p { ignoreAuth = true } } if !ignoreAuth { auth(tplEngine.Handle(r.URL.Path), engine)(w, r) }else{ tplEngine.Handle(r.URL.Path)(engine) } } }) var listen net.Listener var err error if goframe.AppConf.GetString("global.listen")!="" { listen,err = net.Listen("tcp",goframe.AppConf.GetString("global.listen")) }else{ listen,err = net.Listen("tcp","127.0.0.1:0") } if err != nil { log.Fatal(err.Error()) return } fmt.Printf("listen on %s\n",listen.Addr()) fmt.Printf("url http://%s\n",listen.Addr()) log.Fatal(http.Serve(listen,nil)) }