vue從入門到精通之基礎篇(一)語法概要

(1).vue起步

  • 1:引包
  • 2:啟動 new Vue({el:目的地,template:模板內容});
  • options
    • 目的地 el
    • 內容 template
    • 數據 data 保存數據屬性
      數據驅動視圖

(2).插值表達式

  • {{ 表達式 }}
    • 對象 (不要連續3個{{ {name:‘jack’} }})
    • 字符串 {{ ‘xxx’ }}
    • 判斷后的布爾值 {{ true }}
    • 三元表達式 {{ true?‘是正確’:‘錯誤’ }}
  • 可以用于頁面中簡單粗暴的調試
  • 注意: 必須在data這個函數中返回的對象中聲明

(3).什么是指令

  • 在vue中提供了一些對于頁面 + 數據的更為方便的輸出,這些操作就叫做指令, 以v-xxx表示
    • 比如html頁面中的屬性 <div v-xxx ></div>
  • 比如在angular中 以ng-xxx開頭的就叫做指令
  • 在vue中 以v-xxx開頭的就叫做指令
  • 指令中封裝了一些DOM行為, 結合屬性作為一個暗號, 暗號有對應的值,根據不同的值,框架會進行相關DOM操作的綁定

(4).vue中常用的v-指令演示

  • v-text:元素的InnerText屬性,必須是雙標簽 跟{{ }}效果是一樣的 使用較少
  • v-html: 元素的innerHTML
  • v-if : 判斷是否插入這個元素,相當于對元素的銷毀和創建
  • v-else-if
  • v-else
  • v-show 隱藏元素 如果確定要隱藏, 會給元素的style加上display:none。是基于css樣式的切換
 v-text 只能用在雙標簽中v-text 其實就是給元素的innerText賦值v-html 其實就是給元素的innerHTML賦值v-if 如果值為false,會留下一個<!---->作為標記,萬一未來v-if的值是true了,就在這里插入元素如果有ifelse就不需要單獨留坑了如果全用上  v-if 相鄰v-else-if 相鄰 v-else 否則 v-else-if可以不用v-if和v-else-if都有等于對應的值,而v-else直接寫v-if家族都是對元素進行插入和移除的操作v-show是顯示與否的問題注意: 指令其實就是利用屬性作為標識符,簡化DOM操作,看:v-model="xxx"v-model 代表要做什么  xxx代表針對的js內存對象寫在那個元素上,就對哪個元素操作

(5).v-if和v-show的區別 (官網解釋)

v-if 是“真正”的條件渲染,因為它會確保在切換過程中條件塊內的事件監聽器和子組件適當地被銷毀和重建。

v-if 也是惰性的:如果在初始渲染時條件為假,則什么也不做——直到條件第一次變為真時,才會開始渲染條件塊。

相比之下,v-show 就簡單得多——不管初始條件是什么,元素總是會被渲染,并且只是簡單地基于 CSS 進行切換。

一般來說,v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運行時條件很少改變,則使用 v-if 較好。

(6).v-bind使用

  • 給元素的屬性賦值

    • 可以給已經存在的屬性賦值 input value
    • 也可以給自定義屬性賦值 mydata
  • 語法 在元素上 v-bind:屬性名="常量||變量名"

  • 簡寫形式 :屬性名="變量名"

  • <div v-bind:原屬性名="變量"></div>
    <div :屬性名="變量"></div>
    

(7).v-on的使用

  • 處理自定義原生事件的,給按鈕添加click并讓使用變量的樣式改變
  • 普通使用 v-on:事件名="表達式||函數名"
  • 簡寫方式 @事件名="表達式"

(8).v-model

  • 雙向數據流(綁定)
    • 頁面改變影響內存(js)
    • 內存(js)改變影響頁面

(9).v-bind 和 v-model 的區別?

  • input v-model="name"
    • 雙向數據綁定 頁面對于input的value改變,能影響內存中name變量
    • 內存js改變name的值,會影響頁面重新渲染最新值
  • input :value="name"
    • 單向數據綁定 內存改變影響頁面改變
  • v-model: 其的改變影響其他 v-bind: 其的改變不影響其他
  • v-bind就是對屬性的簡單賦值,當內存中值改變,還是會觸發重新渲染

(10).v-for的使用

  • 基本語法 v-for="item in arr"
  • 對象的操作 v-for="item in obj"
  • 如果是數組沒有id
    • v-for="(item,index) in arr" :class="index"
  • 各中v-for的屬性順序(了解)
    • 數組 item,index
    • 對象 value,key,index

(11).過濾器filter

  • filters
    • 將數據進行添油加醋的操作
    • 過濾器分為兩種
      • 1:組件內的過濾器(組件內有效)
      • 2:全局過濾器(所有組件共享)
局部過濾器的使用
  • 先注冊,后使用
  • 組件內 filters:{ 過濾器名:過濾器fn } 最終fn內通過return產出最終的數據
  • 使用方式是 {{ 原有數據 | 過濾器名 }}
  • 過濾器fn:
    • 聲明function(data,argv1,argv2...){}
    • 使用{{ 數據 | 過濾器名(參數1,參數2) }}
全局過濾器的使用
  • 語法:Vue.component('過濾器的名字',fn)
  • 調用:跟局部組件調用方式一樣

(12).偵聽器watch

  • watch 監視單個屬性和對象

    watch:{//監視復雜類型,無法監視的原因是因為監視的是對象的地址 // obj:function(newV,oldV) {// 	console.log(newV,oldV);// },// key是屬于data屬性的屬性名,value是監視后的行為 fn中的參數(新值,舊值)msg:function (newV,oldV) {console.log(newV,oldV);if (newV==='alex') {console.log('sb');}},// 深度監視 :object ||arraystus:{deep:true,//深度監視handler:function (newV,oldV) {console.log(newV[0].name)}}
    
    小結: 基本數據類型 簡單監視,復雜數據類型深度監視

(13).計算屬性computed

  • computed 同時監視多個屬性

    ? 默認computed只有getter方法

(14).獲取DOM元素

  • 救命稻草, document.querySelector
  • 1: 在template中標識元素 ref=“xxxx”
  • 2: 在要獲取的時候, this.$refs.xxxx 獲取元素
    • 創建組件,裝載DOM,用戶點擊按鈕
  • ref在DOM上獲取的是原生DOM對象
  • ref在組件上獲取的是組件對象
    • $el 是拿其DOM
    • 這個對象就相當于我們平時玩的this,也可以直接調用函數\

-特殊情況

// 需求:input輸入框 獲取焦點
var App = {data: function() {return {isShow : false}},template: `<div class='app'><input type="text"  v-show = 'isShow' ref = 'input'/></div>`,mounted: function() {this.isShow = true;console.log(this.$refs.input);// $nextTick 是在DOM更新循環結束之后執行延遲回調,在修改數據之后使用$nextTick 可以在回調中獲取到更新后的DOMthis.$nextTick(function() {// 更新之后的DOMthis.$refs.input.focus();})}}new Vue({el: '#app',data: function() {return {}},template: `<App />`,components: {App}});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249288.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dede 文章列表頁如何倒序排列

{dede:arclist row6 typeid18 orderwayasc} <li>;<a href"[field:arcurl/]">[field:title/]</a></li> {/dede:arclist} 正常排列&#xff1a;orderwayasc倒序排列&#xff1a;orderwaydesc轉載于:https://www.cnblogs.com/php-qiuwei/p/1062…

Chapter 5 Blood Type——24

"Shes just a little faint," he reassured the startled nurse. "Theyre blood typing in Biology." "她只是有點頭暈&#xff0c;" 他讓護士放心的說道。“他們再生物課上測血型。” The nurse nodded sagely. "Theres always one."…

vue從入門到精通之基礎篇(二)組件

(1).局部組件的使用 ? 渲染組件-父使用子組件 1: 創建子組件(對象) var Header { template:模板 , data是一個函數,methods:功能,components:子組件們 } 2: 在父組件中聲明,根屬性components:{ 組件名:組件對象 }3: 在父組件要用的地方使用 <組件名></組件名> …

@Scheduled

Scheduled注解的使用這里不詳細說明&#xff0c;直接對8個參數進行講解。 參數詳解 cron 該參數接收一個cron表達式&#xff0c;cron表達式是一個字符串&#xff0c;字符串以5或6個空格隔開&#xff0c;分開共6或7個域&#xff0c;每一個域代表一個含義。 cron表達式語法 […

eclipse2019-03設置代碼編輯區背景為圖片

一、我的主題設置如下所示 二、找到如下所示或類似的文件夾 三、在該文件夾里的images文件夾里添加圖片 四、在CSS目錄下的e4-dark_win.css文件中添加如下代碼   .MPart StyledText {     background-image: url(./bg.jpg);     background-repeat: no-repeat;  …

idea集成gitlab使用ssh免密登錄

網上有很多介紹ssh免密登錄的文章&#xff0c;具體步驟如下&#xff1a; 1. 生成SSH Key ssh-keygen -t rsa -C "your_emailexample.com" 默認會在相應路徑下&#xff08;/your_home_path&#xff09;生成id_rsa和id_rsa.pub兩個文件&#xff0c;此時終端會顯示&…

vue從入門到精通之基礎篇(三)生命周期

生命周期 定義&#xff1a; 每個 Vue 實例在被創建時都要經過從創建倒掛載再到更新、卸載的一系列過程&#xff0c;同時在這個過程中也會運行一些叫做生命周期鉤子的函數&#xff0c;可以讓我們用自己注冊的js方法控制整個大局&#xff0c;在這些事件響應方法中的this直接指向…

libcurl庫進行http通訊網絡編程

https://www.cnblogs.com/lifan3a/articles/7479256.html

Java 開始

&#xff08;事先聲明&#xff1a;該文章并非完全是我自己的產出&#xff0c;更多的是我個人在看到資料后通過理解并記錄下來&#xff0c;作為自己閱讀后的一個筆記&#xff1b;我現在試圖對自己多年工作中的知識點做一個回顧&#xff0c;希望能融會貫通&#xff09; &#xff…

Java核心技術筆記——第 12 章 反射

轉載自&#xff1a;[https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html] 12 反射 1. 引入反射 通常情況下&#xff0c;調用一個類的方法的步驟如下&#xff1a; 創建該類的對象。調用該對象的方法。通過這種方式調用方法時&#xff0c;必須要知道類的定義以及…

HTML5知識點匯總

1、HTML5新特性 用于繪畫的canvas標簽用于媒介回放的video和audio元素對本地離線儲存的更好支持新的特殊內容元素&#xff0c;如&#xff1a;article、footer、header、nav、section、aside、hgroup、figure新的表單控件&#xff0c;如&#xff1a;calendar、date、time、emai…

實用網站

https://blog.csdn.net/devcloud/article/details/103121883

網絡(圖)(數學)

轉載于:https://www.cnblogs.com/fengxunling/p/9781575.html

DES加解密時 Given final block not properly padded 的解決方案

事情的經過是這個樣子的。。。。。。 先說說問題是怎么出現的。根據客戶需求&#xff0c;需要完成一個一鍵登錄的功能&#xff0c;于是我的項目中就誕生了DesUtil&#xff0c;但是經過幾百次測試&#xff0c;發現有一個登錄直接報錯&#xff01;難道又遇到神坑啦&#xff01;&a…

java 算法優化向導

一.什么是數據結構&#xff1f;什么是算法 不必像學生時代深究定義。以一個簡單的例子說明。 數據結構&#xff0c;圖書館的書怎么擺列&#xff0c;按照書的類型&#xff0c;作者&#xff0c;出版時間&#xff0c;語言等等放置&#xff0c;這就是數據的結構。 算法&#xff0c…

appium工作原理

Appium原理 面試的時候&#xff0c;被問到appium原理&#xff0c;一點不會&#xff0c;實在尷尬。大家可以直接翻看原作https://blog.csdn.net/jffhy2017/article/details/69220719 appium運行時安裝的2個應用&#xff1a;Appium Settings和Unlock。 一、appium加載的過程圖解&…

LeetCode 21. Merge Two Sorted Lists

LeetCode 21. Merge Two Sorted Lists 分析 難度&#xff1a;易 題目 Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. Example: Input: 1->2->4, 1->3->4 Out…

Mac OS X 下 TAR.GZ 方式安裝 MySQL

Mac OS X 下 TAR.GZ 方式安裝 MySQL 注意: 本篇文章適用與 MySQL 5.6 版本的安裝, 但已不再適用 5.7 的安裝, 5.7 的安裝方式請參見:《Mac OS X 下 TAR.GZ 方式安裝 MySQL 5.7》 在 Mac 系統上, 安裝 MySQL Server 一般是用 DMG 包在圖形化界面下按提示安裝, 此外 MySQL 還提供…

快排再改進

快排再改進 #include <iostream> using namespace std;void mySwap(int &a, int &b) {int temp a;a b;b temp; }void insertSort(int a[], int left, int right) {int tmp;int in 0;int out 0;for (out left 1; out < right; out) {tmp a[out];in ou…

【Linux基礎】crontab定時命令詳解

周期執行的任務一般由cron這個守護進程來處理[ps -ef|grep cron]。cron讀取一個或多個配置文件&#xff0c;這些配置文件中包含了命令行及其調用時間。cron的配置文件稱為“crontab”&#xff0c;是“cron table”的簡寫。 一、cron服務  cron是一個linux下 的定時執行工具&a…