工程化开发和脚手架Vue CLI
开发Vue的两种方式:
-  
核心包创痛开发模式:基于html/css/js文件,直接引入核心包,开发Vue。
 -  
工程化开发模式:基于构建工具(例如:webpack)的环境中开发Vue。
源代码→自动化编译压缩组合→运行的代码
意思即为 源代码(es6语法/typescript/less/sass)通过自动化编译压缩组合(webpack配置)转换成运行大代码(js/css)
存在的问题:
- webpack配置不简单
 - 雷同基础配置
 - 缺乏统一标准
 
解决方案:需要一个工具,生成标准化的配置
 
Vue CLI基本介绍
VueCLI是Vue官方提供的一个全局命令工具。
可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】
好处:
- 开箱即用,零配置
 - 内置babel等工具
 - 标准化
 
使用步骤:
1.全局安装(一次):yarn global add @vue/cli或 npm i @vue/cli -g
2.查看Vue 版本:vue–version
3.创建项目架子:vuecreateproject-name(项目名-不能用中文)
4.启动项目:yarn serve 或 npm run serve(找package.json)

脚手架目录文件介绍&项目运行流程

组件化开发&根组件
-  
组件化:一个页面可以拆分成一个个组件,每个组件有着自己独立的结构、样式、行为。
好处:便于维护,利于复用→提升开发效率
组件分类:普通组件、根组件
 -  
根组件:所有应用最上层组件,包裹所有普通小组件。
语法高亮插件 Vetur
一个根组件App.vue,包含三个部分:
- template结构(只能有一个根节点)
 - style样式(可以支持less,需要安装包less和less-loader)
 - script行为
 
 

<template>
  <div id="app" @click="fn()">
   我是一个盒子
   <div class="box"></div>
  </div>
</template>
<script>
// 导出的是当前组件的配置项
// 里面可以提供data(特殊) method computed watch 生命周期八大钩子
export default {
  created() {
  console.log("我是created");
  },
  methods: {
    fn() {
    alert('你好')
  }
 }
}
</script>
<style lang="less">
/*让style支持less
1.给style加上  lang="less"
2.安装依赖包 less 和 less-loader
  yarn add less less-loader -D(开发依赖)
*/
#app {
 width:300px;
 height: 300px;
 background-color: pink;
 .box{
  width:100px;
 height: 100px;
 background-color: rgb(145, 181, 209);
 }
}
</style>
 
普通组件的注册使用
组件注册的两种方式:
- 局部注册:只能在注册的组件内使用 
  
- 创建.vue文件(单文件组件)
 - 在使用的组件内导入,并局部注册 components:{组件名:组件对象}
 
 - 全局注册:所有组件内都能使用 
  
- 创建.vue文件(单文件组件)
 - main.js内导入,并全局注册Vue.component(组件名,组件对象)
 
 
使用:当成HTML标签使用 <组件名></组件名>
注意:组件名规范→大驼峰命名法,如MyHeader
技巧:一般都用局部注册,如果发现确实是通用组件,再抽离到全局。
局部注册

App.vue
<template>
  <div class="vue">
    <!-- 头部组件 -->
    <MyHeader></MyHeader>
    <!-- 主体组件 -->
    <MyMain></MyMain>
    <!-- 尾部组件 -->
    <MyFooter></MyFooter>
  </div>
</template>
<script>
import MyFooter from './components/MyFooter.vue'
import MyHeader from './components/MyHeader.vue'
import MyMain from './components/MyMain.vue'
export default {
  components: {
  MyHeader,
  MyMain,
  MyFooter
}
}
</script>
<style>
.vue{
  width: 400px;
  height: 500px;
  background-color: pink;
  padding: 20px;
  font-size: 20px;
  margin: 0 auto;
  color: rgb(72, 77, 81);
}
</style>
 
components中的MyHeader.vue
<template>
  <div class="my-header">我是MyHeader</div>
</template>
<script>
export default {
}
</script>
<style>
.my-header{
   width: 100%;
  height: 80px;
  background-color: rgb(122, 186, 154);
  text-align: center;
  line-height: 80px;
}
</style>
 
components中的MyMain.vue
<template>
  <div class="my-main">我是MyMain</div>
</template>
<script>
export default {
}
</script>
<style>
.my-main{
 width: 100%;
  height: 300px;
  background-color: rgb(147, 198, 242);
  margin: 10px 0;
  text-align: center;
  line-height: 300px;
}
</style>
 
components中的MyFooter.vue
<template>
  <div class="my-footer">我是MyFooter</div>
</template>
<script>
export default {
}
</script>
<style>
.my-footer{
  width: 100%;
  height: 80px;
  background-color: rgb(242, 225, 147);
  text-align: center;
  line-height: 80px;
}
</style>
 
全局注册

在需要使用的地方直接标签导入即可。
组件拆分
页面开发思路:
-  
分析页面,按模块拆分组件,搭架子(局部或全局注册)
 -  
根据设计图,编写组件html结构cSs样式(已准备好)
 -  
拆分封装通用小组件(局部或全局注册)
将来→通过js 动态渲染,实现功能
 



















