• <abbr id="chdyf"></abbr>
    <ruby id="chdyf"><acronym id="chdyf"><meter id="chdyf"></meter></acronym></ruby>
    <bdo id="chdyf"></bdo>
    <dfn id="chdyf"><menu id="chdyf"></menu></dfn>
    1. <menuitem id="chdyf"></menuitem><strong id="chdyf"><menu id="chdyf"></menu></strong>

      <rt id="chdyf"><menu id="chdyf"></menu></rt>
      成人小说一区二区三区,伊人精品成人久久综合全集观看,久久HEZYO色综合,中文字幕精品人妻熟女,影音先锋成人网站,我要看免费一级毛片,中国女人做爰A片,中文字幕av久久爽Av

      Vue的設(shè)計理念

      2021-9-29    前端達(dá)人

      目錄

      Mvvm模型

      Vue中的Mvvm實現(xiàn)原理

      自己實現(xiàn)雙向數(shù)據(jù)綁定的示例

      Vue與模板引Thymeleaf擎對比

      顯示變量值(Vue)

       顯示變量值(Thymeleaf)

      替換Html(Vue)

      替換Html(Thymeleaf)

      綁定屬性(Vue)

      綁定屬性(Thymeleaf)

      隱藏顯示區(qū)塊(Vue)

      隱藏顯示區(qū)塊(Thymeleaf)

      遍歷列表數(shù)據(jù)-帶索引(Vue)

       遍歷列表數(shù)據(jù)-帶索引(Thymeleaf)

      引入其他文件內(nèi)容(vue)

      引入其他文件內(nèi)容(Thymeleaf)

      Vue的頁面定義基石-Options API

      Vue中的代理運用

      nginx反向代理

      vue代理(正向代理)

      Vue特性能力-filter


      Vue (讀音 /vju?/,類似于 view) 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。與其它大型框架不同的是,Vue 被設(shè)計為可以自底向上逐層應(yīng)用。Vue 的核心庫只關(guān)注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合

      Mvvm模型

      MVVM 是Model-View-ViewModel 的縮寫,它是一種基于前端開發(fā)的架構(gòu)模式,其核心是提供對View 和 ViewModel 的雙向數(shù)據(jù)綁定,這使得ViewModel 的狀態(tài)改變可以自動傳遞給 View,即所謂的數(shù)據(jù)雙向綁定。
      Vue.js 是一個提供了 MVVM 風(fēng)格的雙向數(shù)據(jù)綁定的 Javascript 庫,專注于View 層。它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel負(fù)責(zé)連接 View 和 Model,保證視圖和數(shù)據(jù)的一致性,這種輕量級的架構(gòu)讓前端開發(fā)更加高效、便捷。

      Vue中的Mvvm實現(xiàn)原理

      Vue.js的實現(xiàn)方式,對數(shù)據(jù)(Model)進(jìn)行劫持,當(dāng)數(shù)據(jù)變動時,數(shù)據(jù)會出發(fā)劫持時綁定的方法,對視圖進(jìn)行更新。

      這里有兩個方向: 

      1、數(shù)據(jù)流向視圖:數(shù)據(jù)變動時,能自動更新Dom節(jié)點的內(nèi)容。此功能是通過數(shù)據(jù)劫持實現(xiàn)的,對數(shù)據(jù)(Model)進(jìn)行劫持,當(dāng)數(shù)據(jù)變動時,會調(diào)用劫持時綁定的方法,對視圖進(jìn)行更新。

      2、視圖流向數(shù)據(jù):如輸入框input內(nèi)容發(fā)生變動時,input對應(yīng)的數(shù)據(jù)也會發(fā)生變動。此功能是通過監(jiān)聽Dom事件實現(xiàn)的。當(dāng)用戶在輸入框中輸入文字(即inputkeyup事件發(fā)生時),vue會監(jiān)聽到這個事件,找到對應(yīng)的數(shù)據(jù)模型變量,修改變量值。

      vue中雙向數(shù)據(jù)綁定的示例

      
      
      1. <div id="app-6">
      2. <p>{{ message }}</p>
      3. <input v-model="message">
      4. </div>
      
      
      1. var app6 = new Vue({
      2. el: '#app-6',
      3. data: {
      4. message: 'Hello Vue!'
      5. }
      6. })

      自己實現(xiàn)雙向數(shù)據(jù)綁定的示例

      
      
      1. <!DOCTYPE html>
      2. <html lang="en">
      3. <head>
      4. <title>雙向綁定demoo</title>
      5. <meta charset="UTF-8">
      6. </head>
      7. <body>
      8. <div id="app">
      9. <input type="text" id="txt">
      10. <p id="show-txt"></p>
      11. </div>
      12. </body>
      13. <script>
      14. var model={}
      15. Object.defineProperty(model,'txt',{
      16. _txt: "",
      17. get:function(){
      18. return _txt
      19. },
      20. set:function(newValue){
      21. _txt = newValue
      22. document.getElementById('txt').value = newValue
      23. document.getElementById('show-txt').innerHTML = newValue
      24. }
      25. })
      26. document.addEventListener('keyup',function(e){
      27. model.txt = e.target.value
      28. })
      29. </script>
      30. </html>

      這里要講到一個關(guān)鍵函數(shù)

      Object.defineProperty 

      Object.defineProperty 需要三個參數(shù)(object , propName , descriptor)

      1 object 對象 => 給誰加
      2 propName 屬性名 => 要加的屬性的名字 【類型:String】
      3 descriptor 屬性描述 => 加的這個屬性有什么樣的特性【類型:Object】

      descriptor 屬性描述

      get一個給屬性提供getter的方法,如果沒有getter則為undefined。該方法返回值被用作屬性值。默認(rèn)為undefined
      set一個給屬性提供setter的方法,如果沒有setter則為undefined。該方法將接受唯一參數(shù),并將該參數(shù)的新值分配給該屬性。默認(rèn)值為undefined

      Vue與模板引Thymeleaf擎對比

      顯示變量值(Vue)

      
      
      1. <div id="app">
      2. {{ message }}
      3. </div>

       顯示變量值(Thymeleaf)

      
      
      1. <div id="app" th:text="${message}">
      2. </div>

      替換Html(Vue)

      
      
      1. <div id="app" v-html="content">
      2. </div>

      替換Html(Thymeleaf)

      
      
      1. <div id="app" th:html="${content}">
      2. </div>

      綁定屬性(Vue)

      <img :src="imgUrl" :id="newId"/>

      綁定屬性(Thymeleaf)

      <img th:attr="id=${newId},src=${imgUrl}"/>

      隱藏顯示區(qū)塊(Vue)

      
      
      1. <div id="app" v-if="show">
      2. 這是一個區(qū)塊
      3. </div>

      隱藏顯示區(qū)塊(Thymeleaf)

      
      
      1. <div id="app" th:if="${show}">
      2. 這是一個區(qū)塊
      3. </div>

      遍歷列表數(shù)據(jù)-帶索引(Vue)

      
      
      1. <ul id="app">
      2. <li v-for="(item, index) in dataList">
      3. {{ index }} - {{ item.message }}
      4. </li>
      5. </ul>

       遍歷列表數(shù)據(jù)-帶索引(Thymeleaf)

      
      
      1. <ul id="app">
      2. <li th:each="item, stat: ${dataList}">
      3. {{ stat.index }} - {{ item.message }}
      4. </li>
      5. </ul>

      引入其他文件內(nèi)容(vue)

      在vue中,可復(fù)用的單元塊被稱為組件,定義組件

      
      
      1. <template>
      2. <button v-on:click="count++">You clicked me {{ count }} times.</button>
      3. </template>
      4. <script>
      5. export default {
      6. name: "button-counter"
      7. data(){
      8. count: 0
      9. }
      10. }
      11. </script>

       引入組件

      
      
      1. <div id="components-demo">
      2. <button-counter></button-counter>
      3. </div>

      引入其他文件內(nèi)容(Thymeleaf)

      被導(dǎo)入模塊index.html:

      
      
      1. <div th:fragment="head">
      2. 這是網(wǎng)頁頭
      3. </div>

      在其它頁面導(dǎo)入index.html中的head模塊:

      <div th:include="index::head"></div>

      由此可見在Html層面上來講,vue和后臺的模板引擎,整個設(shè)計方向是一樣。都是使用特定屬性標(biāo)簽,來描述如何把數(shù)據(jù)映射到視圖上。

      Vue的頁面定義基石-Options API

      Options API,即大家常說的選項API,即以vue為后綴的文件,通過定義methodscomputedwatchdata等屬性與方法,共同處理頁面邏輯

      可以看到Options代碼編寫方式,如果是組件狀態(tài),則寫在data屬性上,如果是方法,則寫在methods屬性上...

      這種形式的頁面定義類似一個配置文件,定義了頁面的數(shù)據(jù)模型和行為

      Vue中的代理運用

      代理服務(wù)器:所謂代理服務(wù)器就是位于發(fā)起請求的客戶端與原始服務(wù)器端之間的一臺跳板服務(wù)器,是以正向代理可以隱藏客戶端,反向代理可以隱藏原始服務(wù)器。

      代理分為正向代理和反向代理,下面就以我們實際使用中的示例講解下這兩種代理方式的區(qū)別。

      nginx反向代理

      這樣對于瀏覽器而言,瀏覽器只需要訪問代理服務(wù)器,就可以達(dá)到同時訪問兩個網(wǎng)站的目的

       

      我們看下實際場景下的nginx的配置 

      
      
      1. server {
      2. listen 4503;
      3. server_name vue.izkml.com;
      4. access_log "pipe:rollback logs/gov-manage-new-vue/access_log interval=1d baknum=7 maxsize=2G" main;
      5. # 接口代理
      6. location /api {
      7. #去除 /api前綴
      8. rewrite ^.+api/?(.*)$ /$1 break;
      9. # 轉(zhuǎn)發(fā)到 117.71.53.199:50020端口上
      10. proxy_pass http://117.71.53.199:50020;
      11. proxy_buffering off;
      12. }
      13. # 頁面文件代理
      14. location / {
      15. # 直接去本地文件讀取文件路徑
      16. root html/gov-task-supervison;
      17. index index.html index.htm;
      18. if (!-e $request_filename) {
      19. rewrite ^/(.*) /index.html last;
      20. break;
      21. }
      22. }
      23. }

      其中可以看到,主要分為接口代理和頁面代理兩部分
      1. 如果是/api前綴的請求,則去除/api前綴,轉(zhuǎn)發(fā)到后臺網(wǎng)關(guān)端口上
      2. 其他情況下,請求的為頁面內(nèi)容,在html/gov-task-supervison文件夾中讀取文件內(nèi)容

      vue代理(正向代理)

       

      
      
      1. devServer: { // 支持webPack-dev-server的所有選項
      2. port: 8888, // 端口號
      3. host: '0.0.0.0',
      4. https: false,
      5. open: true, //配置自動啟動瀏覽器
      6. proxy: {
      7. '/api': {
      8. // 轉(zhuǎn)發(fā)地址
      9. target: 'http://117.71.53.199:50020', //測試環(huán)境
      10. changeOrigin: true,
      11. ws: true,
      12. // 去除/api前綴
      13. pathRewrite: {
      14. '^/api': ''
      15. }
      16. }
      17. }
      18. }

      這里主要看的是proxy字段,其中定義了規(guī)則

      1. 如果是/api前綴的請求,則去除/api前綴,轉(zhuǎn)發(fā)到后臺網(wǎng)關(guān)端口上
      2. 其他情況下,請求的為頁面內(nèi)容,直接讀取本地項目路徑下面的頁面內(nèi)容 **(隱式包含)**

      Vue特性能力-filter

      Vue.js 允許你自定義過濾器,可被用于一些常見的文本格式化

      應(yīng)用場景: 前端常量翻譯

      
      
      1. <el-tag v-if="scope.row.status" class="round" size="small" >
      2. {{scope.row.status | CodeMaster('TASK_STATUS')}}
      3. </el-tag>
      
      
      1. Vue.filter('CodeMaster', function (value, type) {
      2. return Vue.prototype.$codeMaster.getCodeValue(type, value);
      3. })

      在上面的代碼中,我們在模板html中,添加了filter的調(diào)用,并傳入了一個參數(shù)。
      在vue進(jìn)行html生成的過程中,會調(diào)用相應(yīng)的filter,根據(jù)自定義的規(guī)則,完成文本格式化操作。




      藍(lán)藍(lán)設(shè)計建立了UI設(shè)計分享群,每天會分享國內(nèi)外的一些優(yōu)秀設(shè)計,如果有興趣的話,可以進(jìn)入一起成長學(xué)習(xí),請掃碼藍(lán)小助,報下信息,藍(lán)小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務(wù)合作,也請與我們聯(lián)系。

      分享此文一切功德,皆悉回向給文章原作者及眾讀者.

      轉(zhuǎn)自:csdn
      免責(zé)聲明:藍(lán)藍(lán)設(shè)計尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問題,請及時與我們?nèi)〉寐?lián)系,我們立即更正或刪除。

      藍(lán)藍(lán)設(shè)計m.wtxcl.cn )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 平面設(shè)計服務(wù)

      日歷

      鏈接

      個人資料

      存檔

      主站蜘蛛池模板: 国产最新AV在线播放不卡| 在线第99页| 亚州成人在线| av色综合| 国产一级妓女av网站| 中国freesexvideos国产| 国产丝袜自拍| 不卡的av在线| 亚洲国产成人精品毛片九色| 欧美freesex潮喷| www.97色伦| 中文字幕制服国产精品| 精品国产杨幂在线观看福利| 极品国产主播粉嫩在线观看| 午夜福利偷拍国语对白| 都昌县| 3P免费视频在线观看| 夏河县| 日韩电影在线观看视频| 日韩A| 亚洲视频欧美视频| 亚洲日韩中文字幕天堂不卡| 亚洲免费观看| 国产精品乱码一区| 大帝av| 97人人干| a网站免费观看| 精品视频在线观看| 国产女裸体福利视频在线观看| AV不卡在线观看| 愛爱视频在线3| 极品丰满久久久久熟妇| 欧美福利网| 精品女人久久久| 日本乱码在线| va精品在线| 国产成a人片在线播放| 上饶市| 99久久人妻精品免费二区| 亚洲视频播放| 人妻?制服?丝袜|