受React组件思想启发,本文讨论在Meteor客户端应用组件化思想,以Spacebar模板语言为例。html
所谓前端组件(个人定义),是一组html代码以及相关样式、行为的封装。它可被复用,经过传递参数进行初始化,并能够调用其定义的方法对其进行控制。而且,其状态,样式都是局部封装的,不会扩散并影响全局。前端
典型地,一个组件具备data和states(React中叫作props和statues)。data是外部传入,用于构建、渲染组件的数据,在组件实例的整个生命周期中是不变的。states是组件内部封装的状态,用于协助控制组件行为,和组件的行为和渲染是双向绑定的,且对外部是透明的,组件能够以提供方法或回调的形式向外部暴露状态。react
Meteor能够以template的形式封装组件。template能够拥有数据和实例变量,能够用template数据来实现组件data,用reactive模板实例变量来实现组件states,例如定义一个ReactiveDict类型的实例变量states。具体实现方式参考http://www.cnblogs.com/zhaoyao91/p/4535928.html函数
todo组件化
如何实现组件方法或回调以供外部获取状态,暂时没有想好。可能的方法是,父组件经过data向子组件传递回调函数双向绑定