You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For now, the code has been moved to angular/angular. APIs are still rapidly changing, so I don't recommend using this in an important production app quite yet.
前端已不止于前端-Angular New Router初体验
原文写于 2015-08-07
最近两周在给xxxx跟xxxx两个产品搭前端框架,关于路由这块的技术选型让我犹豫了一下。且让我们先来分析一下
然后想起了angular new router
what is angular new router
ngNewRouter是为angular2设计的新的路由机制,采用纯组件的思路(ng2的设计主旨),同时支持在任意时刻设置路由,具有极大的自由度及可复用性。大约在几个月前,angular团队为ngNewRouter提供了兼容angular 1.4.x的版本。
有这么好的东西还不用,简直是天理不容啊。
基于现有的少的可怜的文档,第一个基于ngNewRouter的项目诞生了。
一步步来看这玩意咋玩吧
setup
路由配置
是的,你没看错,在ngNewRouter中,每一个路由都是一个组件。在ng2中,所有的东西都是组件,UI自然是,但是controller、service甚至是一个路由都是组件。
配置路由控制器的映射规则
按照以往ngRoute和ui-router的使用经验,配置路由的同时我们是还需要配置路由的模板及控制器的,即templateUrl 和 Controller,但是第二步并没有发现这样的代码。这是因为ngNewRouter默认路由组件的位置是 ./components/+componentName+/+componentName.html ,而controller的名字默认是 ComponentController
例如第二步中我们配置的 home 路由组件,则这个路由的模板位置是(应用根目录开始) components/home/home.html , 控制器名字则为 HomeController
当然这个规则我们也能自己去配置,like this
使用路由
ngNewRouter提供两个基本指令,ngViewpoint & ngLink ,这么去玩
ngViewpoint就类似于ngRoute里的ngView(ui-router里的ui-view).
ngLink类似于ui-router里的ui-serf
其他
如果只能提供这么几个简单的功能那完全没优势可言啊
嵌套路由,配components即可
至于他有啥用,还记得ngRoute和ui-router的resolve配置吗?
写到这里我差不多写不下去了,因为今天又碰到了一个问题,然后研究了半天它的源码网上找了一些资料最后也只能通过绕道的方式解决,然后就开始想,这玩意直接用到项目中是否合适,社区支持太少,官方文档太简洁,毕竟生下来就不是为angular1设计的?
在经过一番思想斗争后,对于技术一向都是有新的就不用旧的这样激进态度的我,最后还是不得不放弃应用ngNewRouter的想法。
然后就在刚才,我在github上看到这个
好吧,我终于可以说服自己不是技术上妥协而是战略上放弃了。。。
虽然好像是绕了一圈又回到了原点,但是基于ngNewRouter还是有了一些新的认识:
对于大型应用而言,组件化必定是趋势。而组件并不仅仅指代的UI层的组件,它还包括逻辑组件。ng2就是这样一个设计思路。另外,有这样一篇文章Thinking in Components
ngNewRouter在路由模板及控制器的配置上,采用一种约定的方式,要求使用者必须按照规则命名模板和控制器,这也是后端web框架常用的 约定优于配置 的方式。看了下ngNewRouter这一块的实现,他重写了用于路由组件上的controller注入逻辑。结合最近半年在做的前端框架性的工作,有了一些自己的思考:
The text was updated successfully, but these errors were encountered: