在go语言的martini-framwork环境下使用fis
$ npm install -g gois
gois
扩展自fis,包含FIS的全部功能,包括添加md5、cdn、打包等等,详细请见FIS。
$ go get github.com/go-martini/martini
$ go get github.com/xiangshouding/martini-middleware/fis
martini-middleware/fis 修改并重新发布了render,并包含所有render的方法。其中 添加了一些模板函数。
git clone https://github.com/xiangshouding/martini-fis-app.git
➜ martini-fis-app git:(master) ✗ tree -L 1
.
├── README.md
├── app.go
├── public
├── src
└── template
src 目录下是FIS项目源码,编译后产出到public和template两个目录下。
$ cd src
$ gois release -d remote
-
url加md5
$ gois release -md remote
-
合并静态资源(打包)
$ gois release -pd remote
-
静态资源压缩
$ gois release -od remote
-
静态资源加CDN
$ gois release -Dd remote
-
md5 + 打包 + 压缩 + CDN
$ gois release -ompDd remote
app.go 是使用martini写的web程序;
package main
import (
"github.com/go-martini/martini"
"github.com/xiangshouding/martini-middleware/fis" //引入FIS
)
func main() {
m := martini.Classic()
m.Use(martini.Static("public")) //设置静态资源目录
//martini使用FIS martini-middleware
m.Use(fis.Renderer(fis.Options{
Directory: "template", //设置模板目录
Extensions: []string{".tpl"}, //设置模板扩展
}))
m.Get("/", func(r fis.Render) {
r.HTML(200, "page/index", "") //渲染模板
})
m.Run()
}
$ go run app.go
浏览器访问 http://127.0.0.1:3000 查看效果
widget 目录下的js都会被组件化;
源码 | 编译后 |
---|---|
console.log('test'); | define('widget/test.js', function(require, exports, module){console.log('test');}); |
{{framework "mod.js"}} //引入组件化库
{{require "widget/test.js"}} //页面加载test.js
<script>
var testjs = "{{uri `widget/test.js`}}" //获得test.js的线上路径
</script>
<!-- widget/header/header.tpl -->
{{define "widget/header/header.tpl"}}
<script>
//blabla
</script>
{{require "widget/header/header.tpl"}} <!-- load widget使用到的静态资源 -->
{{end}}
<!-- page/index.tpl -->
{{template "widget/header/header.tpl"}} <!-- use widget `widget/header/header.tpl` -->
静态资源在</head>
前加载