index.vue 執行順序 - daniel-qa/Vue GitHub Wiki
下面是一个完整的示例,展示如何使用 index.html 和 index.vue 组件。
- 1 . 项目结构
my-vue-app/
├── index.html
└── index.vue
- 2 . index.html 这是你的主 HTML 文件,其中引入了 Vue 和你的 Vue 组件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue App</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/x-template" id="index-template">
<div>
<h1>Hello from Index Component</h1>
<p>This is a single file component example.</p>
</div>
</script>
<script src="app.js"></script> <!-- 这里引入你的 JS 文件 -->
</body>
</html>
- 3 . index.vue 这是你的 Vue 组件,包含模板、脚本和样式。
<template>
<div>
<h1>Hello from Index Component</h1>
<p>This is a single file component example.</p>
</div>
</template>
<script>
export default {
name: 'Index',
data() {
return {
// 在这里定义你的数据
};
},
methods: {
// 在这里定义你的方法
},
created() {
// 在这里可以添加创建时的逻辑
}
};
</script>
<style scoped>
h1 {
color: blue;
}
</style>
- 4 . JavaScript 文件 app.js 在 app.js 中实例化 Vue 和注册组件。
// app.js
// 注册 Vue 组件
Vue.component('index', {
template: '#index-template'
});
// 创建 Vue 实例
new Vue({
el: '#app',
template: '<index/>'
});
- 5 . 启动 http-server
在 my-vue-app 目录下运行 http-server:
http-server
- 6 . 访问项目
在浏览器中访问 http://localhost:8080 (或你终端显示的其他端口),你应该能看到 index.vue 组件的内容。
下面是一个基本的 Vue 2 组件的 .vue 示例,并描述了执行顺序。
示例 .vue 文件 vue
<template>
<div>
<h1>{{ title }}</h1>
<input v-model="searchTerm" placeholder="Search..." />
<button @click="performSearch">Search</button>
<ul>
<li v-for="item in searchResults" :key="item.id">{{ item.name }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
title: 'Search Example',
searchTerm: '',
searchResults: []
};
},
methods: {
performSearch() {
// 模拟 API 请求
const results = [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' },
{ id: 3, name: 'Item 3' }
];
this.searchResults = results.filter(item =>
item.name.toLowerCase().includes(this.searchTerm.toLowerCase())
);
}
},
mounted() {
console.log('Component is mounted.');
}
};
</script>
<style scoped>
h1 {
color: blue;
}
</style>
- 1 . 组件初始化:
Vue 解析 .vue 文件,准备挂载组件。
- 2 .数据定义:
data 函数执行,返回初始状态: title 为 "Search Example" searchTerm 为空字符串 searchResults 为一个空数组
- 3 .生命周期钩子:
beforeCreate:数据未初始化,组件实例尚未创建。 created:数据已初始化,但 DOM 尚未挂载。 beforeMount:即将挂载到 DOM。 mounted:组件已挂载,DOM 可以操作,输出 "Component is mounted." 到控制台。
- 4 .用户交互:
用户在输入框中输入内容,v-model 绑定会自动更新 searchTerm。
- 5 . 方法调用:
用户点击 "Search" 按钮,触发 performSearch 方法: 模拟 API 请求,使用一个静态数组过滤结果。 根据 searchTerm 更新 searchResults。
- 6 .数据更新与视图渲染:
当 searchResults 更新时,组件会重新渲染,显示匹配的结果。
- 7 .样式应用:
使用 scoped 样式,确保样式仅影响当前组件。
- 总结
这个示例展示了 Vue 2 组件的基本结构和执行顺序。通过用户交互,组件状态和视图会动态更新。