Vue框架+Element组件库学习笔记

news2025/1/18 11:56:00

 一、Vue框架

vue:是一款前端框架,免除原生JavaScript中的DOM操作(如document.getElementById("文本输入框名").value),简化书写。基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。

MVVM思想:vue提供ViewModel(VM)实现视图(V)和模型(M)间的双向绑定。

MVC思想:只能实现模型到视图的单向展示。将模型里的数据取出来存放到视图中。但并不能实现模型与视图间的绑定(模型的数据发生变化视图也自动发生变化)。

1.1. Vue快速入门

第1步:新建HTML页面,引入Vue.js文件

<script src="js/vue.js"></script>

第2步:在JS代码区域,创建Vue核心对象,进行数据绑定

用new方式建议一个Vue对象,里面是javascript对象,el是element代表哪个代码区域用vue来控制,写入一个对应的选择器:

例如这里el的值“app”对应的是下面视图里的id属性值,代表<div>标签所包裹的所有内容都由Vue来控制。

data里返回一个数据,在这里是username是空。

new Vue({
    el:"#app",
    data(){
        return{
            username:""
        }
    }
})

第3步:编写视图

id里的值要和vue中el里的值对应,代表将被控制的区域。

v-model里的值要和上面data数据返回的属性名一致。

{{username}}

<div id="app">
    <input name="username" v-model="username">
    {{username}}
</div>

下面是完整代码: 

<body>
    <div id="app">
        <input v-model="username">
        {{username}}
    </div>
<script src="js/vue.js"></script>
    <script>
        new Vue({
            el:"#app",
            data(){
                return{
                    username:""
                }
            }
        });
    </script>
</body>

1.2. Vue常用指令


1. v-bind可以绑定属性值,包括链接等:

href后面的值url对应的是返回值中的url属性名,表示将视图与模型中url的内容绑定,会出现一个点击一下可跳转的链接,点击即可进入百度首页。

<div id="app">
   <a v-bind:href="url">点击一下</a>
   <a :href="url">点击一下</a>
</div>

2. v-model可以将用户输入的值绑定到某个模型上。

3. v-on为HTML标签绑定事件

注意下面2种书写方式:

<div id="app">
   <input type="button" value="点击按钮" v-on:click="show()"/>
   <input type="button" value="点击按钮" @click="show()"/>
</div>

 

4. v-if 、v-else-if 、 v-else 用于判断:

<div id="app">
    <div v-if="count == 3">div1</div>
    <div v-else-if="count ==4">div2</div>
    <div v-else>div3</div>
    <br> <input v-model="count">
</div>

注意这个变量要写在return里面,在方框里输入不同的数字可以实时返回不同结果,很神奇: 

 

5. v-for用于循环遍历

addr是一个临时变量,addrs是模型里的数据,是一个数组,{{addr}}是输出数据:

注意要将<div v-for="addr in addrs"> </div>看作一个整体,循环几次,整个标签就重复出现几次!

<div id="app">
    <div v-for="addr in addrs">
        {{addr}} <br>
    </div>
</div>

   

可以加个角标i,i默认从0开始

<div id="app">
    <div v-for="(addr,i) in addrs">
        {{i}}--{{addr}} <br>
    </div>
</div>

1.3. Vue生命周期

生命周期八个阶段,每触发一个生命周期事件,会自动执行一个生命周期方法(钩子):

mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。

1.4. 案例

1. 查询所有

SelectAllServlet代码见ajax,注意需要在pojo目录下添加Brand类,代码如下:

public String getStatusStr(){
  if(this.status == 1){
      return "启用";
  }
  return "禁用";
}

brand.html代码如下书写: 

<body>
<div id="app">
    <a href="addBrand.html"><input type="button" value="新增"></a><br>
    <table id="brandTable" border="1" cellspacing="0" width="100%">
        <tr>
            <th>序号</th>
            <th>品牌名称</th>
            <th>企业名称</th>
            <th>排序</th>
            <th>品牌介绍</th>
            <th>状态</th>
            <th>操作</th>
        </tr>
        <tr v-for="(brand,i) in brands" align="center">
            <td>{{i+1}}</td>
            <td>{{brand.brandName}}</td>
            <td>{{brand.companyName}}</td>
            <td>{{brand.ordered}}</td>
            <td>{{brand.description}}</td>
            <td>{{brand.statusStr}}</td>
            <td><a href="#">修改</a> <a href="#">删除</a></td>
        </tr>
    </table>
</div>
<script src="js/axios-0.18.0.js"></script>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el: "#app", //设置Vue作用范围就是div标签包裹的部分
        data() {
            return {
                brands: []
            }
        },
        mounted() { //页面加载完成后,发送异步请求查询数据
            var _this = this;
            axios({
                method: "get",
                url: "http://localhost:8080/brand-demo/selectAllServlet"
            }).then(function (resp) {
                _this.brands = resp.data;
            })
        }
    })
</script>
</body>

2. 添加

SelectAllServlet和addServlet代码见ajax,addBrand.html代码如下:

<body>
<div id="app">
    <h3>添加品牌</h3>
    <form action="" method="post">
        品牌名称:<input id="brandName" v-model="brand.brandName" name="brandName"><br>
        企业名称:<input id="companyName" v-model="brand.companyName" name="companyName"><br>
        排序:<input id="ordered" v-model="brand.ordered" name="ordered"><br>
        描述信息:<textarea rows="5" v-model="brand.description" cols="20" id="description" name="description"></textarea><br>
        状态:
        <input type="radio" v-model="brand.status" name="status" value="0">禁用
        <input type="radio" v-model="brand.status" name="status" value="1">启用<br>
        <input type="button" id="btn" @click="submitForm" value="提交">
    </form>
</div>

<script src="js/vue.js"></script>
<script src="js/axios-0.18.0.js"></script>

<script>
    new Vue({
        el:"#app",
        data(){
            return{
                brand:{}
            }
        },
        methods:{
            submitForm(){
                //2.发送ajax请求
                var _this = this;
                axios({
                    method: "post",
                    url:"http://localhost:8080/brand-demo/addServlet",
                    data:_this.brand
                }).then(function(resp){
                    //判断响应数据是否为success
                    if(resp.data =="success"){
                        location.href="http://localhost:8080/brand-demo/brand.html";
                    }
                })

            }
        }
    })
</script>
</body>

二、Element组件库

2.1. Element快速入门

Element:是一套组件库库,由饿了么前端开发团队提供,用于快速构建网页。

组件:组成网页的部件,例如:超链接、按钮、图片、表格等等~

第1步:要导入element-ui,同时还要引入Element的css、js文件和Vue.js,如果没导入会不显示千万小心!

<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">

第2步:创建Vue核心对象

<script>
    new Vue({
        el:"#app"
    })
</script>

第3步:官网复制Element组件代码,代码写入:

<div id="app">
    代码书写区域
</div>

2.2 Element布局

1. Layout布局:通过基础的24分栏,迅速简便地创建布局

规定布局的宽度为24,每一行可以设置多个组件,分别占据一定的宽度(总宽要是24)。

<div class="grid-content bg-purple-dark"></div> //暗色模块
<div class="grid-content bg-purple"></div> //亮色模块

2. Container布局容器:用于布局的容器组件,方便快速搭建页面的基本结构。

<script>
  new Vue({
   el:"#app",
   data() {
     const item = {
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
         };
    return {
        tableData: Array(20).fill(item)
       }
   }
})
</script>

布局注意:将css代码中<style>包裹的代码放在<head>标签内,将<el-row>的代码放在<div id="app">中,data的数据粘贴到el:"#app"下面,一定要粘贴到Vue里面!

2.3 Element组件

1. 表格

<el-table-column prop="address" label="地址"></el-table-column>

data()的return里面的参数名称要和el标签里面prop的值一样,也就是将data里面的内容展示在el标签里面。

Table Attributes是Table整体的属性。Table Events是表的事件。Table Methods是表的方法。Table-column Attributes是设置Table列的属性。

align用于调整居中,修改方式:属性="设置参数"

表格间的间隔过大或者过小是因为加了width,只需要让其自适应即可。

按钮可以通过size属性来更改大小。

点击复选框如何获取行的数据呢?答:复选框要绑定事件。

加入下面3个当选中复选框会获取信息:

加入console.log是给控制台发消息需要f12打开查看:

2. 表单

包括各种表单项,比如输入框、选择器、开关、单选框、多选框等。

3. 对话框

当前按钮点击@click会有dialogVisible属性被设置为true,用于控制对话框是否展示,当设置为true对话框展示

想取消的话只需要设置点击事件让diaogVisible为false即可:

<el-button @click="dialogVisible = false">取消</el-button>

 可以让多个前端视图使用同一个数据模型,因此数据模型对单个前端视图来说属性可以是冗余的。

4. 分页工具条

total是总共有多少条信息;page-size取得是page-sizes里的值,是动态变化的;page-sizes是下拉框里的,自己定义的每页可以显示的数据条数。current-change是页码的变化,size-change是信息量的变化。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YApi 新版如何查看 http 请求数据

YApi 新版如何查看 http 请求数据 因chrome 安全策略限制&#xff0c;在 cross-request 升级到 3.0 后&#xff0c; 不再支持文件上传功能&#xff0c;并且需要通过以下方法查看 network:1.首先在chrome 输入 > chrome://extensions打开扩展页2.开启开发者模式3.点击 cross…

震惊:QGroupBox在linux下居然不显示边框

1、linux系统下GroupBox默认无边框&#xff0c;如需添加&#xff0c;需要通过style来修改 下面介绍几个例子&#xff1a; QGroupBox {background: transparent;border: 1px solid rgb(130, 130, 130);border-radius: 6px;}QGroupBox::title {subcontrol-origin: margin;subcont…

RegShot – 注册表比较工具

RegShot 是一种注册表比较工具&#xff0c;它通过两次抓取注册表而快速地比较出答案。它还可以将您的注册表以纯文本方式记录下来&#xff0c;便于浏览&#xff1b;还可以监察 Win.ini&#xff0c;System.ini 中的键值&#xff1b;还可以监察您Windows目录和 System 目录中文件…

比较聚合模型实战文本匹配

引言 本文我们采用比较聚合模型来实现文本匹配任务。 数据准备 数据准备包括 构建词表(Vocabulary)构建数据集(Dataset) 本次用的是LCQMC通用领域问题匹配数据集&#xff0c;它已经分好了训练、验证和测试集。 我们通过pandas来加载一下。 import pandas as pdtrain_df …

diskqueue第五篇 - 追尾检测,错误处理,如何正常关闭

diskqueue是nsq消息持久化的核心&#xff0c;内容较多&#xff0c;故分为多篇 1. diskqueue第一篇 - 是什么&#xff0c;为什么需要它&#xff0c;整体架构图&#xff0c;对外接口 2. diskqueue第二篇 - 元数据文件&#xff0c;数据文件&#xff0c;启动入口&#xff0c;元数…

熟悉Redis6

NoSQL数据库简介 技术发展 技术的分类 1、解决功能性的问题&#xff1a;Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN 2、解决扩展性的问题&#xff1a;Struts、Spring、SpringMVC、Hibernate、Mybatis 3、解决性能的问题&#xff1a;NoSQL、Java线程、Hadoop、Nginx…

嵌入式-Linux基本操作 pwd cd ls touch clear mkdir rm cp mv

目录 一.Linux文件系统 二.Linux目录结构 三.Linux基本命令 3.1shell脚本 3.2pwd命令 3.3cd命令 3.4ls命令 3.5touch命令 3.6clear命令 3.7mkdir命令 3.8rm命令 3.9cp命令 3.10mv命令 一.Linux文件系统 Linux文件系统是Linux操作系统中用于组织和管理文件和目录的…

【算法训练-链表 六】【查找】:链表中倒数第k个节点

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【查找链表】&#xff0c;使用【链表】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

C盘清理教程

C盘清理教程 首先使用space Sniffer 扫一下c盘&#xff0c;然后看一下到底是哪个文件这么大 第二步&#xff0c;创建软链接。 首先将我们需要移动的文件的当前路径拷贝下来&#xff1a;C:\Users\Tom\Desktop\test-link\abc\ghi.txt 然后假设剪切到D盘下&#xff1a;D:\ghi.…

MOOC软件系统外包开发

MOOC&#xff08;大规模开放在线课程&#xff09;系统是用于创建、管理和交付在线教育课程的软件平台。这些系统通常具有多种功能&#xff0c;旨在支持大规模的在线学习。以下是MOOC系统主要实现的功能以及一些常见的开源系统&#xff0c;希望对大家有所帮助。北京木奇移动技术…

vite项目框架搭建

vite项目框架搭建 1. 使用vite初始化项目 开始 | Vite 官方中文文档 (vitejs.dev) pnpm create vite # 依次设置项目名称、选择框架【vue】、选择语言【typescript】 √ Project name: ... vite-project √ Select a framework: Vue √ Select a variant: TypeScript2. ele…

【strtok函数和strerror函数的介绍和使用以及扩展】

strtok函数和strerror函数的介绍和使用以及扩展 一.strtok函数 1.strtok函数介绍 资源来源于cplusplus网站 它的作用&#xff1a; 对此函数的一系列调用将 str 拆分为标记&#xff0c;这些标记是由分隔符中的任何字符分隔的连续字符序列。 在第一次调用时&#xff0c;该函数…

vue学习之Javascript 表达式内容渲染和属性绑定

Javascript 表达式内容渲染和属性绑定 创建 demo4.html,内容如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

Vuex核心概念 - actions 和 getters

文章目录 actions 和 getters一、actions作用使用目的&#xff1a; 二、actions的使用执行原理代码示例&#xff1a; 三、actions中的辅助函数mapActions代码示例&#xff1a; 四、核心-getters1. 什么是getters&#xff1f;2. getters的作用&#xff1a;3. 访问 getters 的两种…

Compose的一些小Tips - 可组合项的生命周期

系列文章 Compose的一些小Tips - 可组合项的生命周期&#xff08;本文&#xff09; 前言 本系列介绍Compose的一些常识&#xff0c;了解这些tips并不会让人摇身一变成为大佬&#xff0c;但可以帮助到一些学习Compose的安卓开发者避免一些误区&#xff0c;也是对入门详解中遗漏…

python的包管理

要在 mypackage 包外使用 mypackage 包里的 speak.py 文件以及 newpackage 包里的 jump.py 文件&#xff0c;你需要确保以下几个步骤&#xff1a; 确保目录结构正确&#xff0c;如下所示&#xff1a; mypackage/__init__.pyspeak.pynewpackage/__init__.pyjump.py在 speak.py…

解决在cmd中输入mongo出现‘mongo‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件的问题~

当我想通过shell连接mongoDB时&#xff0c;输入mongo命令&#xff0c;出现下述错误&#xff1a; 起初我以为我是忘记配置环境变量了&#xff0c;但检查后发现自己配置了&#xff0c;如果你和我是一样的问题&#xff0c;明明配置了环境变量&#xff0c;但上述问题依然没有被解决…

Go语言的[GPM模型]

在go中,线程是运行Groutine的实体,调度器的功能是把可以运行的Groutine分配到工作线程上 GPM模型 M与P的数量没有绝对的数量关系,当一个M阻塞时,P就会创建一个或者切换到另一个M,所以即使设置了runtime.GOMAXPROCS(1) 也可能创建多个M出来; 当M发现给自己输送G协程的那个P队列为…

懒加载指令实现

问题&#xff1a;页面过长&#xff0c;下面的图片不一定访问到&#xff0c;存在一定浪费。 解决方案&#xff1a;图片懒加载&#xff0c;仅当进入视口区&#xff0c;才发送请求显示图片。 全局指令 // 全局指令 app.directive(指令名称,{mounted(el, binding){// el:指令绑定…

《JUC》万万万万字长文解析!

JUC 四万字长文解析 juc&#xff0c;涵盖线程、内存模型、锁、线程池、原子类、同步器、并发容器、并发编程模式、并发编程应用等。 版本: jdk: 11spring boot: 2.7.0 JUC 是 java.util.concurrent 包的缩写&#xff0c;是 java 提供的用来并发编程的工具包。juc 提供了多种用…