• 【JAVA】Vue


    目录

    【Vue】

    【使用】

    【Vue指令】

    【常用指令】

    【v-bind】

    【v-model】

    【v-on】

    【v-if】

    【v-show】

    【v-for】

    【Vue生命周期】

    【mounted】

    【Element】

    【使用】

    【Element布局】

    【Element组件】

    【案例】


    【Vue】

    【概述】 

    • Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写
    • 基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上

    【使用】

    1、新建HTML页面,引入Vue.js文件

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

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

    1. //创建vue核心对象
    2. new Vue({
    3. el: "#app",
    4. data() {
    5. return {
    6. username: ""
    7. }
    8. }
    9. })

    3、编写视图

    1. <div id="app">
    2. <input v-model="username">
    3. {{username}}
    4. div>

    Vue指令

    【概述】

    指令:HTML 标签上带有 v- 前缀的特殊属性,不同指令具有不同含义。例如:v-if,v-for…

    【常用指令】

    指令作用
    v-bind为HTML标签绑定属性值,如设置href,css样式等
    v-model在表单元素上创建双向数据绑定

    v-bind

    点击一下

    点击一下

    【v-model】

    例:

    1. html>
    2. <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. head>
    7. <body>
    8. <div id="app">
    9. <a v-bind:href="url">点击一下a>
    10. <input v-model="url">
    11. div>
    12. <script src="js/vue.js">script>
    13. <script>
    14. //创建vue核心对象
    15. new Vue({
    16. el: "#app",
    17. data() {
    18. return {
    19. username: "",
    20. url: "https://www.baidu.com"
    21. }
    22. }
    23. })
    24. script>
    25. body>
    26. html>
    指令作用
    v-on为HTML标签绑定事件

    v-on

    • html

    • vue

    new Vue({

            el: "#app",

            methods:{

                    show() {

                            alert("我被点了");

                    }

            }

    });

    例:

    1. html>
    2. <html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. head>
    7. <body>
    8. <div id="app">
    9. <input type="button" value="一个按钮" v-on:click="show()"><br>
    10. div>
    11. <script src="js/vue.js">script>
    12. <script>
    13. //创建vue核心对象
    14. new Vue({
    15. el: "#app",
    16. data() {
    17. return {
    18. username: "",
    19. url: "https://www.baidu.com"
    20. }
    21. },
    22. methods:{
    23. show() {
    24. alert("我被点了");
    25. }
    26. }
    27. });
    28. script>
    29. body>
    30. html>
    指令作用
    v-if条件性的渲染某元素,判定为true时渲染,否则不渲染
    v-else
    v-else-if
    v-show根据条件展示某元素,区别在于切换的时display属性的值

    【v-if】

    div1

    div2

    div3

    【v-show】

    div-show

    例:

    1. html>
    2. <html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. head>
    7. <body>
    8. <div id="app">
    9. <div v-if="count ==3">div1div>
    10. <div v-else-if="count ==4">div2div>
    11. <div v-else>div3div>
    12. <hr>
    13. <div v-show="count==2">div-showdiv>
    14. <br>
    15. <input v-model="count">
    16. div>
    17. <script src="js/vue.js">script>
    18. <script>
    19. //创建vue核心对象
    20. new Vue({
    21. el: "#app",
    22. data() {
    23. return {
    24. username: "",
    25. url: "https://www.baidu.com",
    26. count: "3"
    27. }
    28. },
    29. methods: {
    30. show() {
    31. alert("我被点了");
    32. }
    33. }
    34. });
    35. script>
    36. body>
    37. html>
    指令作用
    v-for列表渲染,遍历容器的元素或者对象的属性

    【v-for】

             {{adder}}

           

             {{i+1}}--{{adder}}

    例:

    1. html>
    2. <html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. head>
    7. <body>
    8. <div id="app">
    9. <div v-for="adder in address">
    10. {{adder}}<br>
    11. div>
    12. <hr>
    13. <div v-for="(adder,i) in address">
    14. {{i+1}}--{{adder}}<br>
    15. div>
    16. div>
    17. <script src="js/vue.js">script>
    18. <script>
    19. //创建vue核心对象
    20. new Vue({
    21. el: "#app",
    22. data() {
    23. return {
    24. username: "",
    25. url: "https://www.baidu.com",
    26. count: "3",
    27. address:["北京","西安","上海"]
    28. }
    29. },
    30. methods: {
    31. show() {
    32. alert("我被点了");
    33. }
    34. }
    35. });
    36. script>
    37. body>
    38. html>

    【Vue生命周期】

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

    状态阶段周期
    berforeCreate创建前
    created创建后
    beforeMount载入前
    mounted挂载完成
    beforeUpdate更新前
    updated更新后
    befoerDestroy销毁前
    destroyed销毁后

    【mounted】

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

    new Vue({
        el:"#app",
        mounted(){
            alert("vue 挂载完毕,发送异步请求");
        }
    });

    【作用】

    发送异步请求,加载数据

    例:

    1. html>
    2. <html lang="en" >
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. head>
    7. <body>
    8. <div id="app">
    9. div>
    10. <script src="js/vue.js">script>
    11. <script>
    12. //创建vue核心对象
    13. new Vue({
    14. el: "#app",
    15. data() {
    16. return {
    17. username: "",
    18. url: "https://www.baidu.com",
    19. count: "3",
    20. address:["北京","西安","上海"]
    21. }
    22. },
    23. methods: {
    24. show() {
    25. alert("我被点了");
    26. }
    27. },
    28. mounted(){
    29. alert("加载完成")
    30. }
    31. });
    32. script>
    33. body>
    34. html>

    【Element】

    【概述】 

    Element:是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库,用于快速构建网页

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

    【官网】

    Element - 网站快速成型工具

    【使用】

    1、引入Element的css、js文件和Vue.js

    2、创建Vue核心对象

    3、官网复制Element组件代码

             删除

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. head>
    7. <body>
    8. <div id="app">
    9. <el-row>
    10. <el-button type="danger">删除el-button>
    11. el-row>
    12. div>
    13. <script src="js/vue.js">script>
    14. <script src="element-ui/lib/index.js">script>
    15. <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
    16. <script>
    17. new Vue({
    18. el:"#app"
    19. })
    20. script>
    21. body>
    22. html>

    【Element布局】

    【方式】

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

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <style>
    7. .el-row {
    8. margin-bottom: 20px;
    9. }
    10. .el-col {
    11. border-radius: 4px;
    12. }
    13. .bg-purple-dark {
    14. background: #99a9bf;
    15. }
    16. .bg-purple {
    17. background: #d3dce6;
    18. }
    19. .bg-purple-light {
    20. background: #e5e9f2;
    21. }
    22. .grid-content {
    23. border-radius: 4px;
    24. min-height: 36px;
    25. }
    26. .row-bg {
    27. padding: 10px 0;
    28. background-color: #f9fafc;
    29. }
    30. style>
    31. head>
    32. <body>
    33. <div id="app">
    34. <el-row>
    35. <el-col :span="3"><div class="grid-content bg-purple">div>el-col>
    36. <el-col :span="3"><div class="grid-content bg-purple-light">div>el-col>
    37. <el-col :span="3"><div class="grid-content bg-purple">div>el-col>
    38. <el-col :span="3"><div class="grid-content bg-purple-light">div>el-col>
    39. <el-col :span="3"><div class="grid-content bg-purple">div>el-col>
    40. <el-col :span="3"><div class="grid-content bg-purple-light">div>el-col>
    41. <el-col :span="3"><div class="grid-content bg-purple">div>el-col>
    42. <el-col :span="3"><div class="grid-content bg-purple-light">div>el-col>
    43. el-row>
    44. div>
    45. <script src="js/vue.js">script>
    46. <script src="element-ui/lib/index.js">script>
    47. <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
    48. <script>
    49. new Vue({
    50. el:"#app"
    51. })
    52. script>
    53. body>
    54. html>
    • Container布局容器:用于布局的容器组件,方便快速搭建也买你的基本结构

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. <style>
    7. .el-header {
    8. background-color: #B3C0D1;
    9. color: #333;
    10. line-height: 60px;
    11. }
    12. .el-aside {
    13. color: #333;
    14. }
    15. style>
    16. head>
    17. <body>
    18. <div id="app">
    19. <el-container style="height: 500px; border: 1px solid #eee">
    20. <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
    21. <el-menu :default-openeds="['1', '3']">
    22. <el-submenu index="1">
    23. <template slot="title"><i class="el-icon-message">i>导航一template>
    24. <el-menu-item-group>
    25. <template slot="title">分组一template>
    26. <el-menu-item index="1-1">选项1el-menu-item>
    27. <el-menu-item index="1-2">选项2el-menu-item>
    28. el-menu-item-group>
    29. <el-menu-item-group title="分组2">
    30. <el-menu-item index="1-3">选项3el-menu-item>
    31. el-menu-item-group>
    32. <el-submenu index="1-4">
    33. <template slot="title">选项4template>
    34. <el-menu-item index="1-4-1">选项4-1el-menu-item>
    35. el-submenu>
    36. el-submenu>
    37. <el-submenu index="2">
    38. <template slot="title"><i class="el-icon-menu">i>导航二template>
    39. <el-menu-item-group>
    40. <template slot="title">分组一template>
    41. <el-menu-item index="2-1">选项1el-menu-item>
    42. <el-menu-item index="2-2">选项2el-menu-item>
    43. el-menu-item-group>
    44. <el-menu-item-group title="分组2">
    45. <el-menu-item index="2-3">选项3el-menu-item>
    46. el-menu-item-group>
    47. <el-submenu index="2-4">
    48. <template slot="title">选项4template>
    49. <el-menu-item index="2-4-1">选项4-1el-menu-item>
    50. el-submenu>
    51. el-submenu>
    52. <el-submenu index="3">
    53. <template slot="title"><i class="el-icon-setting">i>导航三template>
    54. <el-menu-item-group>
    55. <template slot="title">分组一template>
    56. <el-menu-item index="3-1">选项1el-menu-item>
    57. <el-menu-item index="3-2">选项2el-menu-item>
    58. el-menu-item-group>
    59. <el-menu-item-group title="分组2">
    60. <el-menu-item index="3-3">选项3el-menu-item>
    61. el-menu-item-group>
    62. <el-submenu index="3-4">
    63. <template slot="title">选项4template>
    64. <el-menu-item index="3-4-1">选项4-1el-menu-item>
    65. el-submenu>
    66. el-submenu>
    67. el-menu>
    68. el-aside>
    69. <el-container>
    70. <el-header style="text-align: right; font-size: 12px">
    71. <el-dropdown>
    72. <i class="el-icon-setting" style="margin-right: 15px">i>
    73. <el-dropdown-menu slot="dropdown">
    74. <el-dropdown-item>查看el-dropdown-item>
    75. <el-dropdown-item>新增el-dropdown-item>
    76. <el-dropdown-item>删除el-dropdown-item>
    77. el-dropdown-menu>
    78. el-dropdown>
    79. <span>王小虎span>
    80. el-header>
    81. <el-main>
    82. <el-table :data="tableData">
    83. <el-table-column prop="date" label="日期" width="140">
    84. el-table-column>
    85. <el-table-column prop="name" label="姓名" width="120">
    86. el-table-column>
    87. <el-table-column prop="address" label="地址">
    88. el-table-column>
    89. el-table>
    90. el-main>
    91. el-container>
    92. el-container>
    93. div>
    94. <script src="js/vue.js">script>
    95. <script src="element-ui/lib/index.js">script>
    96. <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
    97. <script>
    98. new Vue({
    99. el:"#app",
    100. data() {
    101. const item = {
    102. date: '2016-05-02',
    103. name: '王小虎',
    104. address: '上海市普陀区金沙江路 1518 弄'
    105. };
    106. return {
    107. tableData: Array(20).fill(item)
    108. }
    109. }
    110. })
    111. script>
    112. body>
    113. html>

    【Element组件】

    【案例】

    实现如图页面

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>品牌列表title>
    6. <style>
    7. .el-table .warning-row {
    8. background: oldlace;
    9. }
    10. .el-table .success-row {
    11. background: #f0f9eb;
    12. }
    13. style>
    14. head>
    15. <body>
    16. <div id="app">
    17. <el-form :inline="true" :model="brand" class="demo-form-inline">
    18. <el-form-item label="当前状态">
    19. <el-select v-model="brand.status" placeholder="当前状态">
    20. <el-option label="启用" value="1">el-option>
    21. <el-option label="禁用" value="0">el-option>
    22. el-select>
    23. el-form-item>
    24. <el-form-item label="企业名称">
    25. <el-input v-model="brand.companyName" placeholder="企业名称">el-input>
    26. el-form-item>
    27. <el-form-item label="品牌名称">
    28. <el-input v-model="brand.brandName" placeholder="品牌名称">el-input>
    29. el-form-item>
    30. <el-form-item>
    31. <el-button type="primary" @click="onSubmit">查询el-button>
    32. el-form-item>
    33. el-form>
    34. <el-row>
    35. <el-button type="danger" plain>批量删除el-button>
    36. <el-button type="primary" plain @click="dialogVisible = true">新增el-button>
    37. el-row>
    38. <el-dialog
    39. title="编辑品牌"
    40. :visible.sync="dialogVisible"
    41. width="30%">
    42. <el-form ref="form" :model="brand" label-width="80px">
    43. <el-form-item label="品牌名称">
    44. <el-input v-model="brand.brandName">el-input>
    45. el-form-item>
    46. <el-form-item label="企业名称">
    47. <el-input v-model="brand.companyName">el-input>
    48. el-form-item>
    49. <el-form-item label="排序">
    50. <el-input v-model="brand.ordered">el-input>
    51. el-form-item>
    52. <el-form-item label="备注">
    53. <el-input type="textarea" v-model="brand.description">el-input>
    54. el-form-item>
    55. <el-form-item label="状态">
    56. <el-switch v-model="brand.status"
    57. active-value="1"
    58. inactive-value="0">el-switch>
    59. el-form-item>
    60. <el-form-item>
    61. <el-button type="primary" @click="addBrand">提 交el-button>
    62. <el-button @click="dialogVisible = false">取 消el-button>
    63. el-form-item>
    64. el-form>
    65. span>
    66. el-dialog>
    67. <template>
    68. <el-table
    69. :data="tableData"
    70. style="width: 100%"
    71. :row-class-name="tableRowClassName"
    72. @selection-change="handleSelectionChange">
    73. <el-table-column
    74. type="selection"
    75. width="55">
    76. el-table-column>
    77. <el-table-column
    78. type="index"
    79. width="50">
    80. el-table-column>
    81. <el-table-column
    82. prop="brandName"
    83. label="品牌名称"
    84. align="center">
    85. el-table-column>
    86. <el-table-column
    87. prop="companyName"
    88. label="企业名称"
    89. align="center">
    90. el-table-column>
    91. <el-table-column
    92. prop="ordered"
    93. label="排序"
    94. align="center">
    95. el-table-column>
    96. <el-table-column
    97. prop="status"
    98. label="当前状态"
    99. align="center">
    100. el-table-column>
    101. <el-table-column
    102. label="操作"
    103. align="center">
    104. <el-row>
    105. <el-button type="primary">修改el-button>
    106. <el-button type="danger">删除el-button>
    107. el-row>
    108. el-table-column>
    109. el-table>
    110. template>
    111. <el-pagination
    112. @size-change="handleSizeChange"
    113. @current-change="handleCurrentChange"
    114. :current-page="currentPage4"
    115. :page-sizes="[5,10,15,20]"
    116. :page-size="5"
    117. layout="total, sizes, prev, pager, next, jumper"
    118. :total="400">
    119. el-pagination>
    120. div>
    121. <script src="js/vue.js">script>
    122. <script src="element-ui/lib/index.js">script>
    123. <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
    124. <script>
    125. new Vue({
    126. el: "#app",
    127. methods: {
    128. tableRowClassName({row, rowIndex}) {
    129. if (rowIndex === 1) {
    130. return 'warning-row';
    131. } else if (rowIndex === 3) {
    132. return 'success-row';
    133. }
    134. return '';
    135. },
    136. //复选框选中后执行的方法
    137. handleSelectionChange(val) {
    138. this.multipleSelection = val;
    139. console.log(this.multipleSelection);
    140. },
    141. //查询方法
    142. onSubmit() {
    143. console.log(this.brand);
    144. },
    145. //添加数据
    146. addBrand() {
    147. console.log(this.brand);
    148. },
    149. handleSizeChange(val) {
    150. console.log(`每页 ${val} 条`);
    151. },
    152. handleCurrentChange(val) {
    153. console.log(`当前页: ${val}`);
    154. }
    155. },
    156. data() {
    157. return {
    158. //当前页码
    159. currentPage: 4,
    160. //添加数据对话框是否展示的标记
    161. dialogVisible: false,
    162. //品牌数据模型
    163. brand: {
    164. status: '',
    165. brandName: '',
    166. companyName: '',
    167. id: '',
    168. ordered: '',
    169. description: ''
    170. },
    171. //复选框选中数据集合
    172. multipleSelection: [],
    173. //表格数据
    174. tableData: [{
    175. brandName: '小米',
    176. companyName: '小米科技有限公司',
    177. ordered: '100',
    178. status: "1"
    179. }, {
    180. brandName: '小米',
    181. companyName: '小米科技有限公司',
    182. ordered: '100',
    183. status: "1"
    184. }, {
    185. brandName: '小米',
    186. companyName: '小米科技有限公司',
    187. ordered: '100',
    188. status: "1"
    189. }, {
    190. brandName: '小米',
    191. companyName: '小米科技有限公司',
    192. ordered: '100',
    193. status: "1"
    194. }]
    195. }
    196. }
    197. })
    198. script>
    199. body>
    200. html>
  • 相关阅读:
    武汉便宜的ov通配符https证书
    halcon二维码识别简单案例
    NIFI关于Parameter Contexts的使用
    PostgreSQL部署与配置
    c++day6
    扫普通二维码进入小程序、链接进入小程序
    Python 霸榜的一周,又有什么新 AI 力作呢?「GitHub 热点速览」
    创建Zookeeper伪集群启动失败
    No module named ‘PyQt5.QtWebEngineWidgets‘kn-----已解决
    如何进入 mysql?
  • 原文地址:https://blog.csdn.net/huihu__/article/details/126344005