router.go
func (rs *Routers) Add(r router.Router, h HandlerFunc, v view.View) {
	defer rs.Unlock()
	rs.Lock()
	s := struct {
		r router.Router
		v view.View
		h HandlerFunc
	}{r, v, h}
	// simple will full-match the path
	if sr, ok := r.(*router.Base); ok {
		rs.s[sr.Path] = s
		return
	}
	rs.l.PushFront(s)
}
func (rs *Routers) Add(r router.Router, h HandlerFunc, v view.View) {
	defer rs.Unlock()
	rs.Lock()
	s := struct {
		r router.Router
		v view.View
		h HandlerFunc
	}{r, v, h}
	// simple will full-match the path
	if sr, ok := r.(*router.Base); ok {
		rs.s[sr.Path] = s
		return
	}
	rs.l.PushFront(s)
}
// Add a router to list