Iron.Router是Meteor事实标准的路由包。在学习了其提供的五花八门的功能之后,应该如何应用实践呢?
首先简要地理解一下基本组件。
Route
route是指一个路由规则,其组成包括:name、path、controller、<action>
name是该route在程序内其他地方被引用的依据,path是该route的匹配模式,当path匹配成功时,将调用该route指定的controller.<action>,如果没有指定<action>,则调用controller.action(也即默认action)
Controller
controller是路由体系中的身体力行者,它负责订阅数据,控制加载,配置layout、loading、not found等模板,提供方法来组合数据与模板以进行渲染。总的来说,一个controller主要负责维护一组相关的数据与模板,并且提供接口以进行正确的渲染。
Router
配置router,实际上相当于配置一个默认的controller,具体controller未指定的行为都从这里继承,比如设置公共的layout、loading、not found模板等工作。另外,plugin只能在router上配置。
Template
渲染工作的实际执行者,主要由template和配套的helpers与events组成,加工接受的订阅和数据(注意,subscription和data是两个东西)来进行渲染工作。
综上,要如何在实践中应用它们呢?
首先,规划好应用的UI组成,抽象出layout和可变页面部分。
然后,编写各页面、各部分的template,注意不要主动去订阅和设置自己的数据源,约定好需求订阅和数据的接口,等待controller来订阅和设置数据。
然后,编写controller,订阅、加载数据并提供action以渲染template。由于目前仅在前端工作,所以发布和其他数据可以先硬编码伪造。
然后,编写route,设置path并连接到具体的controller和action。
然后,配置router(全局配置)
然后,测试并调整
最后,加入后端数据再测试并调整