VUE2 學習筆記1

目錄

VUE特點

文檔tips

開發者工具

從一個Hello world開始

hello world Demo

容器和實例的對應關系

差值語法{{}}


VUE特點

構建用戶界面:可以用來把數據構建成用戶界面。

漸進式:自底向上,可以先從一個非常輕量級的框架開始,漸漸往里面放一些需要的插件,不需要一開始就從一個大型的項目庫開始。

聲明式:(與命令式相反,命令式是指一行代碼就是一個命令,每一行代碼發出一條命令,多個命令組合達成一個效果,比如JS),聲明式是先聲明框架,給框架綁定數據,達成某種效果。讓編程人員無需直接操作DOM,提高開發效率。

組件化:VUE頁面由組件構成,可以提高代碼復用率(單個組件中包含當前組件需要的HTML、CSS、JS,需要某個組件的效果,直接把組件拿來用就行了),增加可維護性(每個組件之間的樣式是獨立的,需要調試或修改時,單獨調試或修改一個組件即可)。

虛擬DOM和diff算法:該算法用于頁面數據發生變化時,數據映射到真實DOM之前,會增加一個比較算法,頁面的變化會被更新到虛擬DOM,虛擬DOM會比較更新前后虛擬DOM的變化(該比較算法就是diff),diff會比較出可以復用的DOM,只把需要新增的內容推到真實DOM。

文檔tips

記這個筆記,只是為了方便入門,日常中如果有不太會的地方,還是應該學習怎么查閱文檔。

Vue.js

可以在 Awesome Vue中瀏覽和Vue相關的組件效果等,在【瀏覽和Vue相關的包】中查詢包。

可以在風格指南中查詢vue的代碼風格建議,cookbook中學習vue使用技巧。

Vue的安裝使用,有兩種方式,一種是在HTML頁面中引入Vue.js編寫相關代碼,另一種方式是使用腳手架

版本:Vue分為開發版本生產版本。兩個版本的區別可以看官方注釋,開發版本是本地開發使用的,生產版本是實際部署使用的。生產版比開發版刪除了一些內容,進行了壓縮,更輕量級,適合部署。

開發者工具

Vue有一個官方的開發者工具vue-devtools,可以在瀏覽器上通過F12進行使用,可以查看Vue項目的各種信息,推薦使用。

https://github.com/vuejs/devtools-v6?tab=readme-ov-file#vue-devtools

如果可以登錄github,可以在github上下載代碼:

先選一個想下載的版本,

按github里提示的步驟一步一步進行就好了:

在命令行里git clone拉下來這個倉庫,

 git clone -b v6.6.4 https://github.com/vuejs/vue-devtools.git

clone之后會多一個文件夾,進到這個文件夾里面,敲npm install和npm run build

cd vue-devtools
npm install
npm run build

然后進瀏覽器頁面,找到拓寬程序頁面,打開開發者模式:

按安裝步驟,選擇這個加載未打包的拓展程序:

然后選shells下的chrome文件

如果下載的vue-devtools版本太舊了,瀏覽器不支持,可以按照這個方法進行修改:https://zhuanlan.zhihu.com/p/1927399384947065539

如果國內的網無法訪問github下載,可以在國內的非官方網站下載,極簡插件官網_Chrome插件下載_Chrome瀏覽器應用商店

下載完了之后,按安裝說明,拖到拓展程序頁面里就行了,但需要注意Vue2最好下載舊版vue-devtools,否則可能安裝了拓展程序,也無法使用。

添加完工具,可以把工具右下角的按鈕打開,

這樣在網頁中,點擊右邊這個圖標,并且設置顯示Vue這個工具的圖標,可以查看Vue工具的使用狀態:

如果工具在項目里不起效果,可以在項目入口文件main.js或者配置文件里加上這個配置,設置允許開發者工具:

Vue.config.devtools = true

從一個Hello world開始

hello world Demo

先從一個Vue的小demo開始,熟悉的hello world。

為了理解Vue,這里不從腳手架開始,只是使用HTML開始編寫Vue。

我這里使用的是Js語法引入Vue,可以在官方的script語法里加一個type="text/javascript",否則可能js不會生效。HTML <script> 標簽的 type 屬性。(這里其實就是設置一下script中的內容是javascript)。

為Vue準備組件應用的容器,這里的demo就是容器(對于一個樣式,想要他在頁面上使用,需要設定他在頁面的位置,Vue的掛載屬性可以讓這個容器和Vue綁定,如果沒有位置,組件無法顯示)

<body><div id="demo"></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</body>

新建Vue實例,使用new Vue(),該構造函數接收一個對象參數,該對象為配置對象,里面配置一系列參數。

el:把Vue實例和容器綁定。el的value可以是css選擇器,也可以是通過js語句獲取的DOM。

el是element的簡稱,指定Vue實例應用在哪個容器上。

demo里的代碼被稱為Vue模版。

<body><div id="demo"><p>Hello World</p></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script type="text/javascript">new Vue({el: '#demo', //el是element的簡稱,指定Vue實例應用在哪個容器上,值通常為css選擇器//這里也可以不寫選擇器,也可以寫document.getElementById('demo')})</script>
</body>

data

data保存Vue實例中的數據,value為對象。

    <script>new Vue({el: '#demo', //el是element的簡稱,指定Vue實例應用在哪個容易上,值通常為css選擇器//這里也可以不寫選擇器,也可以寫document.getElementById('demo')data:{keyWords:'Hello World',}})</script>

要在DOM中使用data中保存的數據,有多種方法,其中一種是可以使用差值語法,用{{}}。

<body><div id="demo"><p>{{ keyWords }}</p></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script type="text/javascript">new Vue({el: '#demo', //el是element的簡稱,指定Vue實例應用在哪個容易上,值通常為css選擇器//這里也可以不寫選擇器,也可以寫document.getElementById('demo')data:{keyWords:'Hello World',}})</script>
</body>

在該例子中,先有的容器demo,后有的Vue實例,在new Vue實例構建時,會對demo模版進行解析。

解析時,會看模板中有沒有Vue特有的一些語法(比如{{}}),如果有的話,對語法進行處理,并返回新的容器,用新的容器替換原來的整個容器。

容器和實例的對應關系

如果一個HTML中,有多個符合條件的el設置的選擇器,會發生什么:

先說結論,一個Vue實例只能應用在一個容器上。一個容器也只能對應一個Vue實例。

<body><div class="demo"><p>{{ keyWords }}</p></div><div class="demo"><p>{{ keyWords }}</p></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script type="text/javascript">new Vue({el: '.demo', //el是element的簡稱,指定Vue實例應用在哪個容易上,值通常為css選擇器//這里也可以不寫選擇器,也可以寫document.getElementById('demo')data:{keyWords:'Hello World',}})</script>
</body>

在這段代碼中,設置了兩個class為demo的容器,而Vue實例的element設置的是class=demo的容器,所以有兩個容器都滿足條件。

這時的結果,vue實例會應用在第一個容器上,不會報錯。但由于Vue沒有應用在第二個容器上,第二個demo容器無法識別{{}}語法,會原樣顯示字符。

如果反過來,兩個Vue實例同時作用在一個容器中,后一個Vue實例的代碼不會生效。

<body><div class="demo"><p>{{ keyWords }},{{keyWords2}}</p></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script type="text/javascript">new Vue({el: '.demo', //el是element的簡稱,指定Vue實例應用在哪個容易上,值通常為css選擇器//這里也可以不寫選擇器,也可以寫document.getElementById('demo')data:{keyWords:'Hello World',}})new Vue({el: '.demo', //el是element的簡稱,指定Vue實例應用在哪個容易上,值通常為css選擇器//這里也可以不寫選擇器,也可以寫document.getElementById('demo')data:{keyWords2:'Hello World~~~~~~',}})</script>
</body>

這里兩個Vue實例都應用在demo上,但demo容器已經和第一個Vue綁定,第二個Vue中的內容無法生效,會提示找不到后一個Vue中定義的data。

雖然Vue實例和容器是一一對應的,但是一個Vue實例可以生成多個子實例,也就是組件,組件也相當于是這個Vue示例,每個組件可以分別存放數據。

差值語法{{}}

該語法用于在容器中使用Vue實例中的數據。

{{}}中可以使用符合javascript語法的javascript語句,且必須返回的是值。如果{{}}中的內容不返回值,則無法解析。比如if(){}、for(){}這類的不能解析。

Vue是數據驅動的,也就是設置數據,然后把DOM和數據綁定,當數據改變時,頁面也會相應地改變。

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

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

相關文章

嵌入式學習系統編程(四)進程

目錄 一、進程 1.程序和進程 2.進程的八種狀態 3. 幾個狀態 4.關于進程常用命令 二、關于進程的函數 1.fork 2.面問 3.孤兒進程 后臺進程 2. exec函數族 (只保留父子關系&#xff0c;做新的事情) strtok函數 三、進程的結束 1.分類 exit和_exit的區別 wait函數…

Linux中添加重定向(Redirection)功能到minishell

前言&#xff1a;在談論添加minishell之前&#xff0c;我再重談一下重定向的具體實現等大概思想&#xff01;&#xff01;&#xff01;方便自己回顧&#xff01;&#xff01;&#xff01; 目錄 一、重定向&#xff08;Redirection&#xff09;原理詳解 1、文件描述符基礎 2、…

Django由于數據庫版本原因導致數據庫遷移失敗解決辦法

在django開發中&#xff0c;一般我們初始化一個項目之后&#xff0c;創建應用一般就會生成如下的目錄&#xff1a;django-admin startproject myproject python manage.py startapp blogmyproject/ ├── manage.py └── myproject/ | ├── __init__.py | ├── se…

C++STL系列之vector

前言 vector是變長數組&#xff0c;有點像數據結構中的順序表&#xff0c;它和list也是經常被拿出作對比的&#xff0c; vector使用動態分配數組來存儲它的元素。當新元素插入時候&#xff0c;這個數組需要被重新分配大小&#xff0c;如果擴容&#xff0c;因為要開一個新數組把…

Functional C++ for Fun Profit

Lambda Conf上有人講C函數式編程。在Functional Conf 2019上&#xff0c;就有主題為“Lambdas: The Functional Programming Companion of Modern C”的演講。演講者介紹了現代C中函數式編程相關內容&#xff0c;講解了如何使用Lambda表達式編寫符合函數式編程原則的C代碼&…

Python基礎理論與實踐:從零到爬蟲實戰

引言Python如輕舟&#xff0c;載你探尋數據寶藏&#xff01;本文從基礎理論&#xff08;變量、循環、函數、模塊&#xff09;啟航&#xff0c;結合requests和BeautifulSoup實戰爬取Quotes to Scrape&#xff0c;適合零基礎到進階者。文章聚焦Python基礎&#xff08;變量、循環、…

ThingJS開發從入門到精通:構建三維物聯網可視化應用的完整指南

文章目錄第一部分&#xff1a;ThingJS基礎入門第一章 ThingJS概述與技術架構1.1 ThingJS平臺簡介1.2 技術架構解析1.3 開發環境配置第二章 基礎概念與核心API2.1 核心對象模型2.2 場景創建與管理2.3 對象操作基礎第三章 基礎開發實戰3.1 第一個ThingJS應用3.2 事件系統詳解3.3 …

關于list

1、什么是listlist是一個帶頭結點的雙向循環鏈表模版容器&#xff0c;可以存放任意類型&#xff0c;需要顯式定義2、list的使用有了前面學習string和vector的基礎&#xff0c;學習和使用list會方便很多&#xff0c;因為大部分的內容依然是高度重合的。與順序表不同&#xff0c;…

Mysql 查看當前事務鎖

在 MySQL 中查看事務鎖&#xff08;鎖等待、鎖持有等&#xff09;&#xff0c;可以使用以下方法&#xff1a; 一、查看當前鎖等待情況&#xff08;推薦&#xff09; SELECTr.trx_id AS waiting_trx_id,r.trx_mysql_thread_id AS waiting_thread,r.trx_query AS waiting_query,b…

【Keil5-map文件】

Keil5-map文件■ map文件■ map文件

k8s 基本架構

基于Kubernetes(K8s)的核心設計&#xff0c;以下是其關鍵基本概念的詳細解析。這些概念構成了K8s容器編排系統的基石&#xff0c;用于自動化部署、擴展和管理容器化應用。### 一、K8s核心概念概覽 K8s的核心對象圍繞容器生命周期管理、資源調度和服務發現展開&#xff0c;主要包…

Bell不等式賦能機器學習:微算法科技MLGO一種基于量子糾纏的監督量子分類器訓練算法技術

近年來&#xff0c;量子計算&#xff08;Quantum Computing&#xff09; 和 機器學習&#xff08;Machine Learning&#xff09; 的融合成為人工智能和計算科學領域的重要研究方向。隨著經典計算機在某些復雜任務上接近計算極限&#xff0c;研究人員開始探索量子計算的獨特優勢…

Edge瀏覽器設置網頁自動翻譯

一.瀏覽網頁自動翻譯設置->擴展->獲取Microsoft Edge擴展->搜索“沉浸式翻譯”->獲取 。提示&#xff1a;如果采用其他的翻譯擴展沒找自動翻譯功能&#xff0c;所以這里選擇“沉浸式翻譯”二.基于Java WebElement時自動翻譯Java關鍵代碼&#xff1a;提示&#xff1…

TCP/UDP協議深度解析(四):TCP的粘包問題以及異常情況處理

&#x1f50d; 開發者資源導航 &#x1f50d;&#x1f3f7;? 博客主頁&#xff1a; 個人主頁&#x1f4da; 專欄訂閱&#xff1a; JavaEE全棧專欄 本系列往期內容~ TCP/UDP協議深度解析&#xff08;一&#xff09;&#xff1a;UDP特性與TCP確認應答以及重傳機制 TCP/UDP協議深…

R 基礎語法

R 基礎語法 R 語言是一種針對統計計算和圖形表示而設計的編程語言&#xff0c;廣泛應用于數據分析、統計學習、生物信息學等領域。本文將為您介紹 R 語言的基礎語法&#xff0c;幫助您快速入門。 1. R 語言環境搭建 在開始學習 R 語言之前&#xff0c;您需要安裝并配置 R 語言環…

語義熵怎么增強LLM自信心的

語義熵怎么增強LLM自信心的 一、傳統Token熵的問題(先理解“痛點”) 比如模型回答“阿司匹林是否治療頭痛?”→ 輸出“是” 傳統Token熵:只看“詞的概率”,比如“是”這個詞的概率特別高(Token熵0.2,數值低說明確定性強 )。 但實際風險:醫學場景里,“是”的字面肯定…

javaweb的幾大常見漏洞

CTF javaweb中幾大常見漏洞(基于java-security靶場) 對于CTF而言&#xff0c;java類型的題目基本都是白盒代碼審計&#xff0c;在java類型的web題目增長的今天&#xff0c;java代碼審計能力在ctf比賽中尤為重要。 這篇博客主要是給大家介紹一下一些常見漏洞在java代碼里面大概是…

【設計模式C#】外觀模式(用于解決客戶端對系統的許多類進行頻繁溝通)

一種結構性設計模式。特點是將復雜的子系統調用邏輯封裝到一個外觀類&#xff0c;從而使客戶端更容易與系統交互。優點&#xff1a;簡化了接口的調用&#xff1b;降低了客戶端與子系統的耦合度&#xff1b;封裝了子系統的邏輯。缺點&#xff1a;引入了額外的類&#xff0c;可能…

【PTA數據結構 | C語言版】二叉堆的快速建堆操作

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 請編寫程序&#xff0c;將 n 個順序存儲的數據用快速建堆操作調整為最小堆&#xff1b;最后順次輸出堆中元素以檢驗操作的正確性。 輸入格式&#xff1a; 輸入首先給出一個正整數 c&#xff08;≤1…

【數據結構初階】--雙向鏈表(二)

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…