diff --git a/.gitignore b/.gitignore
index 0745553..5857228 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ node_modules/
skouter
*.sw[poqa]
.env
+assets/app.js
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cf5c7f8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,6 @@
+
+
+### Bundling ###
+Uses ESbuild and the Vue node package.
+`sudo apt install esbuild; npm install vue;`
+``
diff --git a/app.tpl b/app.tpl
new file mode 100644
index 0000000..9afcd77
--- /dev/null
+++ b/app.tpl
@@ -0,0 +1,6 @@
+{{define "main"}}
+
+
+
+
+{{end}}
diff --git a/assets/image/icon/sheriff-hat-50.png b/assets/image/icon/sheriff-hat-50.png
new file mode 100644
index 0000000..9179413
Binary files /dev/null and b/assets/image/icon/sheriff-hat-50.png differ
diff --git a/assets/main.css b/assets/main.css
new file mode 100644
index 0000000..5ec6a2f
--- /dev/null
+++ b/assets/main.css
@@ -0,0 +1,3 @@
+main {
+ background: blue;
+}
diff --git a/components/App.vue b/components/App.vue
new file mode 100644
index 0000000..3bce6e7
--- /dev/null
+++ b/components/App.vue
@@ -0,0 +1,6 @@
+
+hello world
+
+
+
diff --git a/home.tpl b/home.tpl
index 5628346..d4b17c4 100644
--- a/home.tpl
+++ b/home.tpl
@@ -1,3 +1,12 @@
+{{define "header"}}
+
+{{end}}
+
{{define "main"}}
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..68b4a26
--- /dev/null
+++ b/main.js
@@ -0,0 +1,5 @@
+import {createApp} from "vue"
+import App from "./components/App.vue"
+import "./assets/main.css"
+
+createApp(App).mount("#app")
diff --git a/master.tpl b/master.tpl
index 9ac8f04..f977142 100644
--- a/master.tpl
+++ b/master.tpl
@@ -3,20 +3,14 @@
-
+
+ href="/assets/image/icon/sheriff-hat-50.png" />
Skouter - {{.Title}}
{{block "header" .}}
-
{{end}}
{{template "main" .}}
diff --git a/skouter.go b/skouter.go
index cb3e4e4..fbfe7df 100644
--- a/skouter.go
+++ b/skouter.go
@@ -23,11 +23,13 @@ var (
var paths = map[string]string {
"home": "home.tpl",
"terms": "terms.tpl",
+ "app": "app.tpl",
}
var pages = map[string]Page {
"home": cache("home", "Home"),
"terms": cache("terms", "Terms and Conditions"),
+ "app": cache("app", "App"),
}
func cache(name string, title string) Page {
@@ -72,6 +74,10 @@ func route(w http.ResponseWriter, r *http.Request) {
page = pages[ "home" ]
case match(p, "/terms", &args):
page = pages[ "terms" ]
+ case match(p, "/app", &args):
+ page = pages[ "app" ]
+ case match(p, "/assets", &args):
+ page = pages[ "app" ]
default:
http.NotFound(w, r)
return
@@ -81,7 +87,9 @@ func route(w http.ResponseWriter, r *http.Request) {
}
func main() {
+ files := http.FileServer(http.Dir(""))
+
+ http.Handle("/assets/", files)
http.HandleFunc("/", route)
log.Fatal(http.ListenAndServe(address, nil))
}
-
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..f25ebd0
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,27 @@
+const { VueLoaderPlugin } = require('vue-loader')
+const path = require('path');
+
+module.exports = {
+ entry: './main.js',
+ output: {
+ path: path.resolve(__dirname, 'assets'),
+ filename: 'app.js'
+ },
+ module: {
+ rules: [
+ {test: /\.vue$/, use: 'vue-loader'},
+ {test: /\.css$/, use: 'css-loader'}
+ ]
+ },
+ devServer: {
+ static: './assets',
+ proxy: {
+ '*': {target: 'http://localhost:8001',
+ secure: false,
+ changeOrigin: true
+ }
+ }
+ },
+ // Required for also applying rules to sections of SFC
+ plugins: [new VueLoaderPlugin()],
+};