-
Notifications
You must be signed in to change notification settings - Fork 2
hmhao edited this page Feb 11, 2018
·
6 revisions
组件主要由一个对象收集模板、数据和逻辑,如下面列出的,这样使组件更加清晰
以下带星号的都是必须的
-
name
:组件名 * -
template
:模板 * -
data
:组件内部属性 -
props
:来自父组件的数据 -
computed
:组件计算属性 -
methods
:组件方法及钩子函数 -
watch
:组件内部观察属性变化 -
filters
:组件自定义过滤器(avalon
的过滤器是全局的,所以最好命名唯一) -
events
:组件对外分发事件的声明 -
components
:组件依赖的子组件 -
beforeCreate
:组件创建vm
前会调用,可用于vm
数据校验或补充 -
afterCreate
:组件创建vm
后会调用,可马上操作组件vm
注:当然也可以按avalon
组件那样书写,上面收集的最终都会转换为avalon
组件的形式
对avalon
扩展了registerComponent
方法,该方法接收上面的Object
参数,在使用组件前需要注册组件
const App = {
name: 'app',
template: '<div>App</div>'
}
avalon.registerComponent(App)
一般在main.js
里面这样书写就能启动avalon
解析和生成整个应用
import App from './App'
// bootstrap内部会调用registerComponent注册组件
avalon.bootstrap({
el: '#app',
component: App
})
当在template
里面用到自定义组件时,需要引入该自定义组件并在定义template
的组件对象里显示声明使用该自定义组件
import Header from '@/components/Header'
import Footer from '@/components/Footer'
let template =
`
<div>
<ms-header />
<ms-footer />
</div>
`
export default {
name: 'app',
template,
components: {
Header,
Footer
}
}
如果要对自定义组件传递参数,那么在template
里需要使用widget参数
<ms-alert :widget="[{global: true}]" />
<ms-alert :widget="[alertProps]" />
这里widget
的值是一个数组,数组里包含要传递给组件的props
对象