云计算百科
云计算领域专业知识百科平台

vue2 基础学习 day03 (案例、生命周期、注册)

一、生命周期

  • 生命周期介绍

  • 生命周期的四个阶段

  • 生命周期钩子

  • 声明周期案例

  • 1、Vue生命周期:就是一个Vue实例从创建 到 销毁 的整个过程。

    生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁

    1.创建阶段:创建响应式数据

    2.挂载阶段:渲染模板

    3.更新阶段:修改数据,更新视图

    4.销毁阶段:销毁Vue实例

    2、vue的八个钩子函数

    1、案例代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    </head>
    <body>

    <div id="app">
    <h3>{{ title }}</h3>
    <div>
    <button @click="count–">-</button>
    <span>{{ count }}</span>
    <button @click="count++">+</button>
    </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
    const app = new Vue({
    el: '#app',
    data: {
    count: 100,
    title: '计数器'
    },
    // 1. 创建阶段(准备数据)
    beforeCreate () {
    console.log('beforeCreate 响应式数据准备好之前', this.count)
    },
    created () {
    console.log('created 响应式数据准备好之后', this.count)
    // this.数据名 = 请求回来的数据
    // 可以开始发送初始化渲染的请求了
    },

    // 2. 挂载阶段(渲染模板)
    beforeMount () {
    console.log('beforeMount 模板渲染之前', document.querySelector('h3').innerHTML)
    },
    mounted () {
    console.log('mounted 模板渲染之后', document.querySelector('h3').innerHTML)
    // 可以开始操作dom了
    },

    // 3. 更新阶段(修改数据 → 更新视图)
    beforeUpdate () {
    console.log('beforeUpdate 数据修改了,视图还没更新', document.querySelector('span').innerHTML)
    },
    updated () {
    console.log('updated 数据修改了,视图已经更新', document.querySelector('span').innerHTML)
    },

    // 4. 卸载阶段
    beforeDestroy () {
    console.log('beforeDestroy, 卸载前')
    console.log('清除掉一些Vue以外的资源占用,定时器,延时器…')
    },
    destroyed () {
    console.log('destroyed,卸载后')
    }
    })
    </script>
    </body>
    </html>

    2、mounted应用-输入框获取焦点

    <!DOCTYPE html>
    <html lang="zh-CN">

    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>示例-获取焦点</title>
    <!– 初始化样式 –>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reset.css@2.0.2/reset.min.css">
    <!– 核心样式 –>
    <style>
    html,
    body {
    height: 100%;
    }
    .search-container {
    position: absolute;
    top: 30%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    }
    .search-container .search-box {
    display: flex;
    }
    .search-container img {
    margin-bottom: 30px;
    }
    .search-container .search-box input {
    width: 512px;
    height: 16px;
    padding: 12px 16px;
    font-size: 16px;
    margin: 0;
    vertical-align: top;
    outline: 0;
    box-shadow: none;
    border-radius: 10px 0 0 10px;
    border: 2px solid #c4c7ce;
    background: #fff;
    color: #222;
    overflow: hidden;
    box-sizing: content-box;
    -webkit-tap-highlight-color: transparent;
    }
    .search-container .search-box button {
    cursor: pointer;
    width: 112px;
    height: 44px;
    line-height: 41px;
    line-height: 42px;
    background-color: #ad2a27;
    border-radius: 0 10px 10px 0;
    font-size: 17px;
    box-shadow: none;
    font-weight: 400;
    border: 0;
    outline: 0;
    letter-spacing: normal;
    color: white;
    }
    body {
    background: no-repeat center /cover;
    background-color: #edf0f5;
    }
    </style>
    </head>

    <body>
    <div class="container" id="app">
    <div class="search-container">
    <img src="https://www.itheima.com/images/logo.png" alt="">
    <div class="search-box">
    <input type="text" v-model="words" id="inp">
    <button>搜索一下</button>
    </div>
    </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
    const app = new Vue({
    el: '#app',
    data: {
    words: ''
    },
    // 核心思路:
    // 1. 等input框渲染出来 mounted 钩子
    // 2. 让input框获取焦点 inp.focus()
    mounted () {
    document.querySelector('#inp').focus()
    }
    })
    </script>

    </body>

    </html>

    二、工程化开发和脚手架

    1、目录介绍

    2、运行流程

    3、脚手架Vue CLI

    基本介绍:

    Vue CLI 是Vue官方提供的一个全局命令工具

    可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】

    使用步骤:
  • 全局安装(只需安装一次即可) yarn global add @vue/cli 或者 npm i @vue/cli -g

  • 查看vue/cli版本: vue –version

  • 创建项目架子:vue create project-name(项目名不能使用中文)

  • 启动项目:yarn serve 或者 npm run serve(命令不固定,找package.json)

  • 4、组件是由三部分构成

    • 三部分构成

      • template:结构 (有且只能一个根元素)

      • script: js逻辑

      • style: 样式 (可支持less,需要装包)

    • 让组件支持less

      (1) style标签,lang="less" 开启less功能

      (2) 装包: yarn add less less-loader -D 或者npm i less less-loader -D

    5、普通组件的注册使用-局部注册

    1.步骤:

  • 创建.vue文件(三个组成部分)

  • 在使用的组件内先导入再注册,最后使用

  • 2.使用方式:

    当成html标签使用即可 <组件名></组件名>

    3.注意:

    组件名规范 —> 大驼峰命名法, 如 HmHeader

    // 导入需要注册的组件
    import 组件对象 from '.vue文件路径'
    import HmHeader from './components/HmHeader'

    export default {  // 局部注册
      components: {
       '组件名': 组件对象,
        HmHeader:HmHeaer,
        HmHeader
      }
    }

    6、普通组件的注册使用-全局注册

    1.步骤

  • 创建.vue组件(三个组成部分)

  • main.js中进行全局注册

  • 2.使用方式

    当成HTML标签直接使用

    <组件名></组件名>

    3.注意

    组件名规范 —> 大驼峰命名法, 如 HmHeader

    4.语法

    Vue.component('组件名', 组件对象)

    例:

    // 导入需要全局注册的组件
    import HmButton from './components/HmButton'
    Vue.component('HmButton', HmButton)

     在main.js文件里面进行全局注册

     在某个页面进行使用

    5.案例

    代码

    <template>
    <button class="hm-button">通用按钮</button>
    </template>

    <script>
    export default {

    }
    </script>

    <style>
    .hm-button {
    height: 50px;
    line-height: 50px;
    padding: 0 20px;
    background-color: #3bae56;
    border-radius: 5px;
    color: white;
    border: none;
    vertical-align: middle;
    cursor: pointer;
    }
    </style>

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » vue2 基础学习 day03 (案例、生命周期、注册)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!