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