前端基础 Vue -组件化基础

1.全局组件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="node_modules/vue/dist/vue.js"></script>
    <script>
        Vue.config.productionTip = false //设置为 false 以阻止 vue 在启动时生成生产提示
    </script>
</head>

<body>
    <div id="root">
        <button @click="add">我被点击了 {{count}} 次</button>
        <counter></counter>
        <counter></counter>
        <counter></counter>
        <counter></counter>
        <counter></counter>
        <counter></counter>
        <counter></counter>
    </div>
    <script>
        //1、全局声明注册一个组件
        Vue.component("counter", {
            template: `<button @click="add">我被点击了 {{count}}  次</button>`,
            data() {
                return {
                    count: 1
                }
            },
            methods: {
                add() {
                    this.count++;
                }

            }

        })

        const app = new Vue({
            el: '#root',
            data: {
                count: 1


            },
            methods: {
                add() {
                    this.count++;
                }
            }

        });
    </script>
    <script>

    </script>
</body>

</html>
  1. 组件其实也是有一个vue实例,因此它在定义时也会接收:data、methods、生命周期函数等
  2. 不同的是组件不会与页面的元素绑定,否则就无法复用了,因此没有el属性。
  3. 全局组件定义完毕,任何vue实例都可以直接在绑定的html 容器 中通过 组件名称来使用组件了
  4. data必须是一个函数,作用就是,提供内部作用域,是其vue实例提供的data对象是独立存在的。以提供一个复用效果。

2.局部组件

    //局部声明一个组件
        const buttonCounter = {
            template: `<button @click="add">我被点击了 {{count}}  次</button>`,
            data() {
                return {
                    count: 1
                }
            },
            methods: {
                add() {
                    this.count++;
                }

            }


        }




        const app = new Vue({
            el: '#root',
            data: {
                count: 1


            },
            methods: {
                add() {
                    this.count++;
                }
            },
            components:{
                'button-counter':buttonCounter


            }

        });
   <div id="root">
        <button @click="add">我被点击了 {{count}} 次</button>
    
        <button-counter></button-counter>
    </div>

3.生命周期

  1. beforecreate: 数据模型未创建  模版未创建
  2. created :数据模型已创建 模板未渲染
  3. beforemount: 数据模型已创建 模板未渲染
  4. mouted :数据模型已创建 模板已渲染
  5. beforeupdate 数据模型已更新 模板未渲染
  6. updated 数据模型已更新 模板已渲染
  7. beforedistroy 销毁之前
  8. distroyed  已经销毁

4.使用Vue脚手架进行模块化开发

4.1 全局安装 webpack

npm install webpack -g

4.2 全局安装 vue 脚手架

npm install -g @vue/cli-init

4.3 初始化vue项目

vue init webpack vue-demo

4.4 启动vue项目

cd xxx
npm run dev

启动成功 

5. 路由 跳转

创建一个 hello.vue组件 在components文件夹下

<template>
  <div>
     <h1>你好 hello ,{{name}}</h1>
  </div>
</template>

<script>
export default {
    data(){
        return{
            name:"张三"
        }
    }

};
</script>

<style  >

</style>

在route文件下的index.js写上路由controller

然后再App.vue 根组件下随便写个  就可以跳转了

<router-link to="/hello"> Go to Hello </router-link>

6.Vue整合 ElementUI快速开发

Element - The world's most popular Vue UI framework

6.1安装 element UI

npm i element-ui -S

6.2 引入Element

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.config.productionTip = false
Vue.use(ElementUI);
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
<template>
  <div>
    <h1>你好 hello ,{{ name }}</h1>
    <el-radio v-model="radio" label="1">男生</el-radio>
    <el-radio v-model="radio" label="2">女生</el-radio>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: "张三",
      radio: "1",
    };
  },
};
</script>

<style  >
</style>

6.3 再举个例子

在element ui 导航栏上面跳转路由

<!--  -->
<template>
  <div>
       <el-table :data="tableData">
          <el-table-column prop="date" label="日期" width="140">
          </el-table-column>
          <el-table-column prop="name" label="姓名" width="120">
          </el-table-column>
          <el-table-column prop="address" label="地址"> </el-table-column>
        </el-table>
  </div>
</template>

<script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';

export default {
  //import引入的组件需要注入到对象中才能使用
  components: {},
  props: {},
  data() {
      const item = {
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
      };
      return {
        tableData: Array(20).fill(item)
      }
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {},
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {},
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {},
  beforeCreate() {}, //生命周期 - 创建之前
  beforeMount() {}, //生命周期 - 挂载之前
  beforeUpdate() {}, //生命周期 - 更新之前
  updated() {}, //生命周期 - 更新之后
  beforeDestroy() {}, //生命周期 - 销毁之前
  destroyed() {}, //生命周期 - 销毁完成
  activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style  scoped>
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/487527.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何搭建ERP帮助中心提升工作效率

现在是个信息化时代&#xff0c;ERP系统成了企业日常运营里必不可少的一部分。不过&#xff0c;随着ERP系统用得越来越多&#xff0c;大家在使用过程中碰到的问题变得多且复杂。为了解决这些麻烦&#xff0c;提高大家的工作效率&#xff0c;搭建ERP帮助中心其实是一个很有必要的…

FreeRTOS从代码层面进行原理分析(2 任务的启动)

FreeRTOS分析二—任务的启动 上一篇文章我们带着三个问题开始了对 FreeRTOS 代码的探究。 1. FreeRTOS 是如何建立任务的呢&#xff1f; 2. FreeRTOS 是调度和切换任务的呢&#xff1f; 3. FreeRTOS 是如何保证实时性呢&#xff1f; 并且在上一篇文章 FreeRTOS从代码层面进行…

学习刷题-13

3.23 hw机试【二叉树】 剑指offer32 剑指 offer32&#xff08;一、二、三&#xff09;_剑指offer 32-CSDN博客 从上到下打印二叉树I 一棵圣诞树记作根节点为 root 的二叉树&#xff0c;节点值为该位置装饰彩灯的颜色编号。请按照从 左 到 右 的顺序返回每一层彩灯编号。 输…

产品推荐 | 基于 Zynq UltraScale+ XCZU27DR的 FACE-RFSoC-C高性能自适应射频开发平台

一、产品概述 FACE-RFSOC-C自适应射频开发平台&#xff0c;是FACE系列新一代的产品。 平台搭载有16nm工艺的Zynq UltraScale™ RFSoC系列主器件。该器件集成数千兆采样RF数据转换器和ARM Cortex-A53处理子系统和UltraScale可编程逻辑&#xff0c;是一款单芯片自适应射频平台。…

电脑卸载软件怎么清理干净?电脑清理的5种方法

随着我们在电脑上安装和卸载各种软件&#xff0c;很多时候我们会发现&#xff0c;即使软件被卸载&#xff0c;其残留的文件和注册表项仍然存在于电脑中&#xff0c;这不仅占用了宝贵的磁盘空间&#xff0c;还可能影响电脑的性能。那么&#xff0c;如何确保在卸载软件时能够彻底…

FakeLocation报虚拟位置服务连接失败,请重启设备再试

虚拟位置服务连接失败&#xff0c;请重启设备再试 最近遇到一个手机软件报的bug“虚拟位置服务连接失败&#xff0c;请重启设备再试” 因为我的实体“虚拟机”已经root&#xff0c;按道理是不可能报这个错的 折腾了2天&#xff0c;终于解决了 原来是这样&#xff0c;安装最新…

Linux文件系统 底层原理

linux文件、目录、Inode inode负责文件的元数据和数据存储&#xff0c;文件存储块负责实际数据的存储&#xff0c;而目录文件维护文件名和inode之间的联系。 1. 用户空间到内核空间 首先&#xff0c;当用户程序请求打开一个文件时&#xff08;例如使用open系统调用&#xff09…

关系型数据库mysql(6)备份与恢复

一.数据备份的重要性 &#xff08;1&#xff09;在生产环境中&#xff0c;数据的安全性至关重要 &#xff08;2&#xff09;任何数据的丢失都可能产生严重的后果 &#xff08;3&#xff09;造成数据丢失的原因 程序错误人为操作失误运算错误磁盘故障灾难&#xff08;如火灾…

YOLOv9改进策略:卷积魔改 | SCConv:空间和通道重建卷积,即插即用,助力检测 | CVPR2023

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a; CVPR2023 SCConv 由两个单元组成&#xff1a;空间重建单元&#xff08;SRU&#xff09;和通道重建单元&#xff08;CRU&#xff09;。 SRU利用分离重建方法来抑制空间冗余&#xff0c;而CRU使用分割-变换-融…

ssm004新生报到系统+jsp

新生报到系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对新生报到信息管理混乱&#xff0c;出错率…

【k8s网络】梳理cni发展脉络

参考 《深入剖析 Kubernetes&#xff08;张磊&#xff09;》 补充 详解 Calico 三种模式&#xff08;与 Fannel 网络对比学习&#xff09;_calico vxlan-CSDN博客 容器网络 容器的网络栈 每个容器有自己的 net namespace net namespace 可以称之为网络栈所谓“网络栈”&…

mac 系统如何生成秘钥

1.打开终端&#xff0c;输入 cd ~/.ssh 进入.ssh目录&#xff0c;输入 ls 检查是否已经存在SSH密钥。如果看到类似 id_rsa.pub 的文件&#xff0c;说明已经有一对公钥和私钥&#xff0c;不用新建&#xff0c;直接查看就可以&#xff0c;如果没有需要生成新的密钥。 2.在终端输…

【k8s调度】梳理调度相关知识与device plugin

资源 CPU —— 可压缩资源 —— 资源不足时&#xff0c;只会”饥饿“&#xff0c;不会退出内存 —— 不可压缩资源 —— 资源不足时&#xff0c;会 OOM 被内核杀死 请求与限制 调度时候&#xff0c; kube-scheduler 按照 Requests 的值进行计算真正设置 Cgroups 限制时&…

探索AI大模型学习的未来发展与挑战

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 AI大模型学习的理论基础 AI大模型的训练与优化 AI大模型在特定领域的应用 AI大模型学习的伦理与社会影响 未来发展趋势与挑…

【智能算法】秃鹰搜索算法(BES)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c; Alsattar等人受到秃鹰猎食自然行为启发&#xff0c;提出了秃鹰搜索算法&#xff08;Bald Eagle Search&#xff0c;BES&#xff09;。 2.算法原理 2.1算法思想 BES主要分为三…

一篇复现Docker镜像操作与容器操作

华子目录 Docker镜像操作创建镜像方式1docker commit示例 方式2docker import示例1&#xff1a;从本地文件系统导入示例2&#xff1a;从远程URL导入注意事项 方式3docker build示例1&#xff1a;构建镜像并指定名称和标签示例2&#xff1a;使用自定义的 Dockerfile 路径构建镜像…

SiteServer 学习笔记 Day01 新增站点字段和获取站点字段

1、站点字段设置&#xff0c;在站点下选择设置管理->字段设置->站点字段设置。新增字段&#xff0c;Iphone、welcome、moblie、email&#xff0c;如下图所示&#xff1a; 2、查看内容字段设置&#xff0c;设置管理->字段设置->内容字段设置。新建站点后&#xff0c…

docker的部署与安装以及部署一个docker(容器)应用及docker容器常出现的问题

docker 架构图 一、docker的部署与安装 1、在 CentOS 上安装 Docker 移除旧版本&#xff08;如果有的话&#xff09;&#xff1a;sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-…

TCP重传机制详解——04FACK

文章目录 TCP重传机制详解——04FACK什么是FACKFACK的发展为什么要引入FACK实战抓包讲解开启FACK场景&#xff0c;且达到dup ACK门限值开启FACK场景&#xff0c;未达到dup ACK门限值 为什么要淘汰FACK总结REF TCP重传机制详解——04FACK 什么是FACK FACK的全称是forward ackn…

如果出现虚拟机与此版本VMware版本不兼容问题,的解决方法

问题样式&#xff1a; 解决方法与步骤&#xff1a; 1.右击虚拟机 ————》管理 ————》更改硬件兼容性 2.再弹出的页面中点击下一步 ————》下一步 3.再这个页面点击更改此虚拟机 ————》下一步 然后就可以愉快的使用虚拟机了