<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          VUE&Element簡單介紹。

          2023-1-5    前端達人

          目錄

          一、VUE

          1、基本介紹

          2、Vue 指令

          3、生命周期 

          二、Element

          1、基本介紹

          2、Element 布局


          一、VUE

          1、基本介紹

          ? 概述

            Vue 是一套前端框架,免除原生JavaScript中的DOM操作,簡化書寫。

            我們之前也學習過后端的框架 `Mybatis` ,`Mybatis` 是用來簡化 `jdbc` 代碼編寫的;而 `VUE` 是前端的框架,是用來簡化 `JavaScript` 代碼編寫的。前面的綜合性案例,里面進行了大量的DOM操作,如下

            使用 `VUE` 后,這部分代碼我們就不需要再寫了。那么 `VUE` 是如何簡化 DOM 書寫呢?基于MVVM(Model-View-ViewModel)思想,實現數據的雙向綁定,將編程的關注點放在數據上。之前我們是將關注點放在了 DOM 操作上;而要了解 `MVVM` 思想,必須先了解 `MVC` 思想,如下圖就是 `MVC` 思想圖解

          其中的C 就是咱們 js 代碼,M 就是數據,而 V 是頁面上展示的內容,如下圖:

           `MVC` 思想是沒法進行雙向綁定的。雙向綁定是指當數據模型數據發生變化時,頁面展示的會隨之發生變化,而如果表單數據發生變化,綁定的模型數據也隨之發生變化。接下來了解`MVVM` 思想,如下圖是三個組件圖解:

           圖中的 `Model` 就是我們的數據,`View` 是視圖,也就是頁面標簽,用戶可以通過瀏覽器看到的內容;`Model` 和 `View` 是通過 `ViewModel` 對象進行雙向綁定的,而 `ViewModel` 對象是 `Vue` 提供的。雙向綁定的效果:下圖是提前準備的代碼寫出來的,輸入框綁定了 `username` 模型數據,而在頁面上也使用 `{{}}` 綁定了 `username` 模型數據

          通過瀏覽器打開該頁面可以看到如下頁面

          當我們在輸入框中輸入內容,而輸入框后面隨之實時的展示我們輸入的內容,這就是雙向綁定的效果。

          ? 快速入門

          Vue 使用起來是比較簡單的,總共分為如下三步:

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

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

           2. 在JS代碼區域,創建Vue核心對象,進行數據綁定

           
              
          1. new Vue({
          2.        el: "#app",
          3.        data() {
          4.            return {
          5.                username: ""
          6.            }
          7.        }
          8.    });

             創建 Vue 對象時,需要傳遞一個 js 對象,而該對象中需要如下屬性:

             ●  `el` : 用來指定哪個地方的標簽受 Vue 管理。 該屬性取值 `#app` 中的 `app` 需要是受管理的標簽的id屬性值
             ● `data` :用來定義數據模型
             ● `methods` :用來定義函數。這個我們在后面就會用到

          3. 編寫視圖

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

             `{{}}` 是 Vue 中定義的 `插值表達式` ,在里面寫數據模型,到時候會將該模型的數據值展示在這個位置。

          ? 整體代碼如下:

           
              
          1. <!DOCTYPE html>
          2. <html lang="en">
          3. <head>
          4.     <meta charset="UTF-8">
          5.     <title>Title</title>
          6. </head>
          7. <body>
          8. <div id="app">
          9.     <input v-model="username">
          10.     <!--插值表達式-->
          11.     {{username}}
          12. </div>
          13. <script src="js/vue.js"></script>
          14. <script>
          15.     //1. 創建Vue核心對象
          16.     new Vue({
          17.         el:"#app",
          18.         data(){  // data() 是 ECMAScript 6 版本的新的寫法
          19.             return {
          20.                 username:""
          21.             }
          22.         }
          23.         /*data: function () {
          24.             return {
          25.                 username:""
          26.             }
          27.         }*/
          28.     });
          29. </script>
          30. </body>
          31. </html>

          2、Vue 指令

          指令:HTML 標簽上帶有 v- 前綴的特殊屬性,不同指令具有不同含義。例如:v-if,v-for…

          ? v-bind & v-model 指令

          ? v-bind

            該指令可以給標簽原有屬性綁定模型數據。這樣模型數據發生變化,標簽屬性值也隨之發生變化,例如:

          <a v-bind:href="url">百度一下</a>

            上面的 `v-bind:"`  可以簡化寫成 `:`  ,如下:

           
              
          1. <!--
          2.       v-bind 可以省略
          3.   -->
          4.   <a :href="url">百度一下</a>

          ? v-model

            該指令可以給表單項標簽綁定模型數據。這樣就能實現雙向綁定效果。例如:

          <input name="username" v-model="username">

           ? 代碼演示:

           
              
          1. <!DOCTYPE html>
          2. <html lang="en">
          3. <head>
          4.     <meta charset="UTF-8">
          5.     <title>Title</title>
          6. </head>
          7. <body>
          8. <div id="app">
          9.     <a v-bind:href="url">點擊一下</a>
          10.     <a :href="url">點擊一下</a>
          11.     <input v-model="url">
          12. </div>
          13. <script src="js/vue.js"></script>
          14. <script>
          15.     //1. 創建Vue核心對象
          16.     new Vue({
          17.         el:"#app",
          18.         data(){
          19.             return {
          20.                 username:"",
          21.                 url:"https://www.baidu.com"
          22.             }
          23.         }
          24.     });
          25. </script>
          26. </body>
          27. </html>

            通過瀏覽器打開上面頁面,并且使用檢查查看超鏈接的路徑,該路徑會根據輸入框輸入的路徑變化而變化,這是因為超鏈接和輸入框綁定的是同一個模型數據

          ? v-on 指令

          我們在頁面定義一個按鈕,并給該按鈕使用 `v-on` 指令綁定單擊事件,html代碼如下:

          <input type="button" value="一個按鈕" v-on:click="show()">

          而使用 `v-on` 時還可以使用簡化的寫法,將 `v-on:` 替換成 `@`,html代碼如下

          <input type="button" value="一個按鈕" @click="show()">

          上面代碼綁定的 `show()` 需要在 Vue 對象中的 `methods` 屬性中定義出來

           
              
          1. new Vue({
          2.     el: "#app",
          3.     methods: {
          4.         show(){
          5.             alert("我被點了");
          6.         }
          7.     }
          8. });

          注意:`v-on:` 后面的事件名稱是之前原生事件屬性名去掉on。
          例如:
           ● 單擊事件 : 事件屬性名是 onclick,而在vue中使用是 `v-on:click`
           ● 失去焦點事件:事件屬性名是 onblur,而在vue中使用時 `v-on:blur`

          ? 整體頁面代碼如下:

           
              
          1. <!DOCTYPE html>
          2. <html lang="en">
          3. <head>
          4.     <meta charset="UTF-8">
          5.     <title>Title</title>
          6. </head>
          7. <body>
          8. <div id="app">
          9.     <input type="button" value="一個按鈕" v-on:click="show()"><br>
          10.     <input type="button" value="一個按鈕" @click="show()">
          11. </div>
          12. <script src="js/vue.js"></script>
          13. <script>
          14.     //1. 創建Vue核心對象
          15.     new Vue({
          16.         el:"#app",
          17.         data(){
          18.             return {
          19.                 username:"",
          20.             }
          21.         },
          22.         methods:{
          23.             show(){
          24.                 alert("我被點了...");
          25.             }
          26.         }
          27.     });
          28. </script>
          29. </body>
          30. </html>

          ? 條件判斷指令

          接下來通過代碼演示一下。在 Vue中定義一個 `count` 的數據模型,如下

           
              
          1. //1. 創建Vue核心對象
          2. new Vue({
          3.     el:"#app",
          4.     data(){
          5.         return {
          6.             count:3
          7.         }
          8.     }
          9. });

            現在要實現,當 `count` 模型的數據是3時,在頁面上展示 `div1` 內容;當 `count` 模型的數據是4時,在頁面上展示 `div2` 內容;`count` 模型數據是其他值時,在頁面上展示 `div3`。這里為了動態改變模型數據 `count` 的值,再定義一個輸入框綁定 `count` 模型數據。html 代碼如下:

           
              
          1. <div id="app">
          2.     <div v-if="count == 3">div1</div>
          3.     <div v-else-if="count == 4">div2</div>
          4.     <div v-else>div3</div>
          5.     <hr>
          6.     <input v-model="count">
          7. </div>

          ? 整體頁面代碼如下:

           
              
          1. <!DOCTYPE html>
          2. <html lang="en">
          3. <head>
          4.     <meta charset="UTF-8">
          5.     <title>Title</title>
          6. </head>
          7. <body>
          8. <div id="app">
          9.     <div v-if="count == 3">div1</div>
          10.     <div v-else-if="count == 4">div2</div>
          11.     <div v-else>div3</div>
          12.     <hr>
          13.     <input v-model="count">
          14. </div>
          15. <script src="js/vue.js"></script>
          16. <script>
          17.     //1. 創建Vue核心對象
          18.     new Vue({
          19.         el:"#app",
          20.         data(){
          21.             return {
          22.                 count:3
          23.             }
          24.         }
          25.     });
          26. </script>
          27. </body>
          28. </html>

          通過瀏覽器打開頁面并在輸入框輸入不同的值,效果如下

          然后我們在看看 `v-show` 指令的效果,如果模型數據 `count ` 的值是3時,展示 `div v-show` 內容,否則不展示,html頁面代碼如下

           
              
          1. <div v-show="count == 3">div v-show</div>
          2. <br>
          3. <input v-model="count">

          瀏覽器打開效果如下:

          通過上面的演示,發現 `v-show` 和 `v-if` 效果一樣,那它們到底有什么區別呢?我們根據瀏覽器的檢查功能查看源代碼:

          通過上圖可以看出 `v-show` 不展示的原理是給對應的標簽添加 `display` css屬性,并將該屬性值設置為 `none` ,這樣就達到了隱藏的效果。而 `v-if` 指令是條件不滿足時根本就不會渲染。

          ? v-for 指令

          這個指令看到名字就知道是用來遍歷的,該指令使用的格式如下:

           
              
          1. <標簽 v-for="變量名 in 集合模型數據">
          2.     {{變量名}}
          3. </標簽>

          注意:需要循環那個標簽,`v-for` 指令就寫在那個標簽上。

          如果在頁面需要使用到集合模型數據的索引,就需要使用如下格式:

           
              
          1. <標簽 v-for="(變量名,索引變量) in 集合模型數據">
          2.     <!--索引變量是從0開始,所以要表示序號的話,需要手動的加1-->
          3.    {{索引變量 + 1}} {{變量名}}
          4. </標簽>

          ? 代碼演示:

           
              
          1. <!DOCTYPE html>
          2. <html lang="en">
          3. <head>
          4.     <meta charset="UTF-8">
          5.     <title>Title</title>
          6. </head>
          7. <body>
          8. <div id="app">
          9.     <div v-for="addr in addrs">
          10.         {{addr}} <br>
          11.     </div>
          12.     <hr>
          13.     <div v-for="(addr,i) in addrs">
          14.         {{i+1}}--{{addr}} <br>
          15.     </div>
          16. </div>
          17. <script src="js/vue.js"></script>
          18. <script>
          19.     //1. 創建Vue核心對象
          20.     new Vue({
          21.         el:"#app",
          22.         data(){
          23.             return {
          24.                 addrs:["北京","上海","西安"]
          25.             }
          26.         }
          27.     });
          28. </script>
          29. </body>
          30. </html>

          通過瀏覽器打開效果如下

          3、生命周期 

          生命周期的八個階段:每觸發一個生命周期事件,會自動執行一個生命周期方法,這些生命周期方法也被稱為鉤子方法。

          下圖是 Vue 官網提供的從創建 Vue 到效果 Vue 對象的整個過程及各個階段對應的鉤子函數

          看到上面的圖,大家無需過多的關注這張圖。這些鉤子方法我們只關注 `mounted` 就行了。

          `mounted`:掛載完成,Vue初始化成功,HTML頁面渲染成功。而以后我們會在該方法中發送異步請求,加載數據。

          二、Element

           1、基本介紹

          ? 概述

           Element:是餓了么公司前端開發團隊提供的一套基于 Vue 的網站組件庫,用于快速構建網頁。

          Element 提供了很多組件(組成網頁的部件)供我們使用。例如 超鏈接、按鈕、圖片、表格等等~

          如下圖左邊的是我們編寫頁面看到的按鈕,上圖右邊的是 Element 提供的頁面效果,效果一目了然。

          我們學習 Element 其實就是學習怎么從官網拷貝組件到我們自己的頁面并進行修改,官網網址是:元素 - 全球最受歡迎的 Vue UI 框架 (eleme.cn)

          進入官網能看到如下頁面

           接下來直接點擊 `組件` ,頁面如下

          2、Element 布局

          Element 提供了兩種布局方式,分別是:

           ● Layout 布局
           ● Container 布局容器

          ? Layout 局部

          通過基礎的 24 分欄,迅速簡便地創建布局。也就是默認將一行分為 24 欄,根據頁面要求給每一列設置所占的欄數。

          在左菜單欄找到 `Layout 布局` ,然后找到自己喜歡的按鈕樣式,點擊 `顯示代碼` ,在下面就會展示出對應的代碼,顯示出的代碼中有樣式,有html標簽。將樣式拷貝我們自己頁面的 `head` 標簽內,將html標簽拷貝到  `<div id="app"></div>` 標簽內。

          ? 整體頁面代碼如下:

           
              
          1. <!DOCTYPE html>
          2. <html lang="en">
          3. <head>
          4.     <meta charset="UTF-8">
          5.     <title>Title</title>
          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="24"><div class="grid-content bg-purple-dark"></div></el-col>
          36.     </el-row>
          37.     <el-row>
          38.         <el-col :span="12"><div class="grid-content bg-purple"></div></el-col>
          39.         <el-col :span="12"><div class="grid-content bg-purple-light"></div></el-col>
          40.     </el-row>
          41.     <el-row>
          42.         <el-col :span="8"><div class="grid-content bg-purple"></div></el-col>
          43.         <el-col :span="8"><div class="grid-content bg-purple-light"></div></el-col>
          44.         <el-col :span="8"><div class="grid-content bg-purple"></div></el-col>
          45.     </el-row>
          46.     <el-row>
          47.         <el-col :span="6"><div class="grid-content bg-purple"></div></el-col>
          48.         <el-col :span="6"><div class="grid-content bg-purple-light"></div></el-col>
          49.         <el-col :span="6"><div class="grid-content bg-purple"></div></el-col>
          50.         <el-col :span="6"><div class="grid-content bg-purple-light"></div></el-col>
          51.     </el-row>
          52.     <el-row>
          53.         <el-col :span="4"><div class="grid-content bg-purple"></div></el-col>
          54.         <el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col>
          55.         <el-col :span="4"><div class="grid-content bg-purple"></div></el-col>
          56.         <el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col>
          57.         <el-col :span="4"><div class="grid-content bg-purple"></div></el-col>
          58.         <el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col>
          59.     </el-row>
          60. </div>
          61. <script src="js/vue.js"></script>
          62. <script src="element-ui/lib/index.js"></script>
          63. <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
          64. <script>
          65.     new Vue({
          66.         el:"#app"
          67.     })
          68. </script>
          69. </body>
          70. </html>

          現在需要添加一行,要求該行顯示8個格子,通過計算每個格子占 3 欄,具體的html 代碼如下

           
              
          1. <!--
          2. 添加一行,8個格子  24/8 = 3
          3. -->
          4. <el-row>
          5.     <el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
          6.     <el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
          7.     <el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
          8.     <el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
          9.     <el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
          10.     <el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
          11.     <el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
          12.     <el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
          13. </el-row>

          ? Container 布局容器

          用于布局的容器組件,方便快速搭建頁面的基本結構。如下圖就是布局容器效果。

          如下圖是官網提供的 Container 布局容器實例:

          該效果代碼中包含了樣式、頁面標簽、模型數據。將里面的樣式 `<style>` 拷貝到我們自己頁面的 `head` 標簽中;將html標簽拷貝到 `<div id="app"></div>` 標簽中,再將數據模型拷貝到 `vue` 對象的 `data()` 中。

          ? 整體頁面代碼如下:

           
              
          1. <!DOCTYPE html>
          2. <html lang="en">
          3. <head>
          4.     <meta charset="UTF-8">
          5.     <title>Title</title>
          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">選項1</el-menu-item>
          27.                         <el-menu-item index="1-2">選項2</el-menu-item>
          28.                     </el-menu-item-group>
          29.                     <el-menu-item-group title="分組2">
          30.                         <el-menu-item index="1-3">選項3</el-menu-item>
          31.                     </el-menu-item-group>
          32.                     <el-submenu index="1-4">
          33.                         <template slot="title">選項4</template>
          34.                         <el-menu-item index="1-4-1">選項4-1</el-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-submenu index="2-1">
          40.                         <template slot="title">選項1</template>
          41.                         <el-menu-item index="2-1-1">選項1-1</el-menu-item>
          42.                     </el-submenu>
          43.                 </el-submenu>
          44.                 <el-submenu index="3">
          45.                     <template slot="title"><i class="el-icon-setting"></i>導航三</template>
          46.                     <el-menu-item-group>
          47.                         <template slot="title">分組一</template>
          48.                         <el-menu-item index="3-1">選項1</el-menu-item>
          49.                         <el-menu-item index="3-2">選項2</el-menu-item>
          50.                     </el-menu-item-group>
          51.                     <el-menu-item-group title="分組2">
          52.                         <el-menu-item index="3-3">選項3</el-menu-item>
          53.                     </el-menu-item-group>
          54.                     <el-submenu index="3-4">
          55.                         <template slot="title">選項4</template>
          56.                         <el-menu-item index="3-4-1">選項4-1</el-menu-item>
          57.                     </el-submenu>
          58.                 </el-submenu>
          59.             </el-menu>
          60.         </el-aside>
          61.         <el-container>
          62.             <el-header style="text-align: right; font-size: 12px">
          63.                 <el-dropdown>
          64.                     <i class="el-icon-setting" style="margin-right: 15px"></i>
          65.                     <el-dropdown-menu slot="dropdown">
          66.                         <el-dropdown-item>查看</el-dropdown-item>
          67.                         <el-dropdown-item>新增</el-dropdown-item>
          68.                         <el-dropdown-item>刪除</el-dropdown-item>
          69.                     </el-dropdown-menu>
          70.                 </el-dropdown>
          71.                 <span>王小虎</span>
          72.             </el-header>
          73.             <el-main>
          74.                 <el-table :data="tableData">
          75.                     <el-table-column prop="date" label="日期" width="140">
          76.                     </el-table-column>
          77.                     <el-table-column prop="name" label="姓名" width="120">
          78.                     </el-table-column>
          79.                     <el-table-column prop="address" label="地址">
          80.                     </el-table-column>
          81.                 </el-table>
          82.             </el-main>
          83.         </el-container>
          84.     </el-container>
          85. </div>
          86. <script src="js/vue.js"></script>
          87. <script src="element-ui/lib/index.js"></script>
          88. <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
          89. <script>
          90.     new Vue({
          91.         el:"#app",
          92.         data() {
          93.             const item = {
          94.                 date: '2016-05-02',
          95.                 name: '王小虎',
          96.                 address: '上海市普陀區金沙江路 1518 弄'
          97.             };
          98.             return {
          99.                 tableData: Array(20).fill(item)
          100.             }
          101.         }
          102.     })
          103. </script>
          104. </body>
          105. </html>

          ? 完成分頁條展示

          在 Element 官網找到 `Pagination 分頁` ,在頁面主體部分找到我們需要的效果,如下






          轉自:csdn


          藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加藍小助,微信號:ben_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系01063334945。


          分享此文一切功德,皆悉回向給文章原作者及眾讀者.
          免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務、UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合