说明
《Vue开发实战-从0开始搭建大型Vue项目》是 Ant Design Vue
的作者在极客时间开的一门视频课,笔者记录一下学习笔记,仅供参考。
Vue.component 缺点
- 全局定义:强制要求每个
component
中的命名不得重复 - 字符串模板:缺乏语法高亮,在
html
有多行的时候,需要用到丑陋的\
- 不支持css:意味着当
html
和JavaScript
组件化时,css
明显被遗漏 - 没有构建步骤:限制只能使用
html
和ES5 JavaScript
,而不能使用预处理器,如Pug(formerly Jade)
和Bable
单文件组件 优点
- 完整语法高亮
- CommonJS 模块
- 组件作用域的CSS
Vue CLI
可以通过 Vue CLI 搭建项目
npm install -g @vue/cli
vue create my-app
cd my-app
npm install
npm
通过上面的操作,我们可以开始进行单文件.vue的开发。
单文件vue
大致的模板就是下面这个样子
<!-- 视图 -->
<template>
<div id="app"></div>
</template>
<!-- 逻辑 -->
<script>export default {
name: 'app',
data() {
return {
}
}
}</script>
<!-- 样式 -->
<style>#app{
color: green;
}</style>
todolist改造成vue文件
-
App.vue
:父组件 -
TodoItem.vue
:子组件,在App.vue
同级components
文件夹里
App.vue
<template>
<div id="app">
{{msg}}
<div>
<input type="text" v-model="info">
<button v-on:click="handleClick">添加</button>
</div>
<ul>
<todo-item v-for="item in list" :key="item">
<template v-slot:item="itemProps">
<span :style="{fontSize: '20px', color: itemProps.checked ? 'red': 'blue'}">{{item}}</span>
</template>
</todo-item>
</ul>
</div>
</template>
<script>import TodoItem from './components/TodoItem.vue'
export default {
name: 'app',
data() {
return {
msg: 'hello Vue!',
info: '',
list: [],
}
},
methods: {
handleClick() {
this.list.push(this.info)
this.info = ''
}
},
components: {
TodoItem,
}
}</script>
<style>
</style>
TodoItem.vue
<template>
<li class="item">
<input type="checkbox" v-model="checked">
<slot name="item" v-bind="{checked}"></slot>
</li>
</template>
<script>export default {
props: ['item'],
data() {
return {
checked: false
}
}
}</script>
<style scoped>.item {
color: red;
}</style>