Skip to content

msawangwan/webpack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

webpack


a golang package designed to support both serving webpack resources and handling api requests. can be used standalone or as an imported module. not much fluff here, very basic stuff.

why?

for fun, because i really enjoy writing golang backend services but also really enjoy using reactjs for the frontend ui. the most obvious and straight-forward approach, if one needed a backend for a react frontend, is to use nodejs but that's no fun.

so i built this.

usage

simply create an instance of an EntrypointRouter and a ResourceRouter and register these to any other router that takes the type http.HandlerFunc. if you don't have a preference use the included Router as your mux.

for example:

entrypoints := webpack.NewEntrypointRouter()

entrypoints.RegisterFile("/", "../some/index.html")
entrypoints.RegisterFile("/dashboard", "../some/dashboard.html")

resources := webpack.NewResourceRouter()

resources.RegisterDirectory("../some/other/dist/")
resources.RegisterDirectory("../random/images/")

router := webpack.NewRouter()

router.GET("/$", entrypoints.ServeHTTP)
router.GET("(\\.js|\\.json|\\.css|\\.png|\\.gif|\\.jpe?g|\\.ico)$", resources.ServeHTTP)

server := &http.Server{
    Addr:    "127.0.0.1:1339",
    Handler: router,
}

log.Fatal(server.ListenAndServe())

see router_test.go for a working example (that is, if you change the constants).

from your terminal:

~$ git clone https://github.com/msawangwan/webpack.git
~$ cd webpack
~$ vim router_test.go

update the two constants, entrypointfilepath and resourcedirpath to actual filepaths on your local filesystem, save the changes, exit and then:

~$ go run test -v

finally in your browser navigate to localhost:1337 to see it all in action.

About

serve javascript resources with golang

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages