方法一

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>vue</title>
		<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<menu-component :title="title"></menu-component>
		</div>
		
		<template id="menu-component">
			<div>
				<ul>
					<li>{{title}}</li>
				</ul>
			</div>
		</template>
	</body>
</html>
<script>
	let MenuComponent = {
		name: 'MenuComponent',
		template: '#menu-component',
		props:['title']
	}
	var app = new Vue({
		el: '#app',
		components:{
			MenuComponent
		},
		data: {
			title:"父组件传值"
		}
	})
</script>

方法二

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>vue</title>
		<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<Foo1></Foo1>
		</div>
	</body>
</html>
<script>
	const Foo1 = {
		template:`<div>
				我是foo1
				<button @click="foo1">go foo2</button>
			</div>`,
		methods:{
			foo1(){
				console.log('我是foo1');
			}
		}
	}
	var app = new Vue({
		el: '#app',
		components:{
			Foo1
		},
		data: {}
	})
</script>

方法三

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>vue</title>
		<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<Foo1></Foo1>
		</div>
	</body>
</html>
<script>
	Vue.component('Foo1', {
	  // ... 选项 ...
	  template:"<div>我是foo1</div>"
	})
	
	var app = new Vue({
		el: '#app',
		data: {}
	})
</script>