Vue.js 學習筆記 第1章 初識Vue.js

来源:https://www.cnblogs.com/geeksss/archive/2019/04/25/10767680.html
-Advertisement-
Play Games

本章主要介紹與Vue.js有關的一些概念與技術,並幫助你瞭解它們背後相關的工作原理。通過對本章的學習,即使從未接觸過Vue.js,你也可以運用這些知識點快速構建出一個Vue.js應用。1.1 Vue.js 是什麼Vue.js的官方文檔中是這樣介紹它的:簡單小巧的、漸進式JavaScript框架,是以... ...


 

本篇目錄:

1.1 Vue.js 是什麼

1.2 如何使用Vue.js

 

本章主要介紹與Vue.js有關的一些概念與技術,並幫助你瞭解它們背後相關的工作原理。
通過對本章的學習,即使從未接觸過Vue.js,你也可以運用這些知識點快速構建出一個Vue.js應用。

1.1 Vue.js 是什麼

Vue.js的官方文檔中是這樣介紹它的:

簡單小巧的、漸進式JavaScript框架,是以應付任何規模的應用。

簡單小巧是指Vue.js壓縮後大小僅有20KB。
所謂漸進式(Progressive),就是你可以一步一步、有階段性地來使用Vue.js,不必一開始就是用所有的東西。
隨著我們不斷的介紹,你會深刻感受到這一點,這也正式開發者熱愛Vue.js的主要原因之一。

使用Vue.js可以讓Web開發變得簡單,同時也顛覆了傳統前端開發模式。
它提供了現代Web開發中常見的高級功能,比如:

  • 解耦視圖與數據;
  • 可復用的組件;
  • 前端路由;
  • 狀態管理;
  • 虛擬DOM(Virtual DOM)。

1.1.1 MVVM模式

與志明前端框架Angular、Ember等一樣,Vue.js在設計上也是用MVVM(Model-View-ViewModel)模式。

MVVM模式是由經典的軟體架構MVC衍生來的。
當View(視圖層)變化時,會自動更新到ViewModel(視圖模型),反之亦然。
View和ViewModel之間通過雙向綁定(xlata-binding)建立聯繫,如圖1-1所示:

1.1.2 Vue.js 有什麼不同

如果你使用過jQuery,那你一定對操作DOM、綁定事件等這些原生JavaScript能力非常熟悉,比如我們在指定DOM中插入一個元素,並給它綁定一個點擊事件。

1 if (showBtn) {
2     var $btn = $("<button>").text("Click me");
3     $btn.on("click", function() {
4         console.log("Clicked!");
5     });
6     $("#app").append($btn);
7 }

 

這段代碼不難理解,操作的內容也不複雜,不過這樣讓我們的視圖代碼和業務邏輯緊耦合在一起,隨著功能不斷增加,直接操作DOM會使得代碼越來越難以維護。

而Vue.js通過MVVM的模式拆分視圖與數據兩部分,並將其分離。
因此,你只需要關心你的數據即可,DOM的事情Vue會幫你自動搞定,比如上面的示例用Vue.js可以改寫為:

 1 <body>
 2     <div id=”app”>
 3         <button v-if=”showBtn” v-on:click=”handleClick”>Click me</button> 
 4     </div>
 5 </body>
 6 
 7 <script>
 8     new Vue({
 9         el: "#app",
10         data: {
11             showBtn: true
12         },
13         methods: {
14             handleClick: function() {
15                 console.log("Clicked!");
16             }
17         }
18     });
19 </script>

 

提示:
暫時還不需要理解上述代碼,這裡只是快速展示Vue.js的寫法,在後面的章節會詳細介紹每個參數的用法。

1.2 如何使用 Vue.js

每一個框架的產生都是為瞭解決某個具體的問題。
在正式開始學習Vue.js前,我們先對傳統前端開發模式和Vue.js的開發模式做一個對比,以此瞭解Vue.js產生的背景和核心思想。

1.2.1 傳統的前端開發模式

前端技術在近幾年發展迅速,如今的前端開發已不再是10年前寫個HTML和CSS那樣簡單了,新的概念層出不窮,比如ECMAScript 6、Node.js、NPM、前段工程化等。
這些新東西在不斷優化我們的開發模式,改變我們的編程思想。

隨著這些技術的普及,一套可稱為“萬金油”的技術棧被許多商業項目用於生產環境:
jQuery + RequireJS(SeaJS) + artTemplate(doT) + Gulp(Grunt)

這套技術以jQuery為核心,能相容絕大部分瀏覽器,這是很多企業比較關心的,因為他們的客戶很可能還在用IE7及以下瀏覽器。
使用RequireJS或SeaJS進行模塊化開發可以解決代碼依賴混亂的問題,同時便於維護及團隊協作。
使用輕量級的前端模板(如doT)可以將數據與HTML模板分離。
最後,使用自動化構建工具(如Gulp)可以合併壓縮代碼,如果你喜歡寫Less、Sass以及現在流行的ES 6,也可以幫你進行預編譯。

這樣一套看似完美無瑕的前端解決方案就構成了我們所說的傳統前端開發模式,由於它的簡單、高效、實用,至今仍有不少開發者在使用。
不過隨著項目的擴大和時間的推移,出現了更複雜的業務場景,比如SPA(單頁面富應用)、組件解耦等。
為了提升開發效率,降低維護成本,傳統的前端開發模式已不能完全滿足我們的需求,這時就出現了Angular、React以及我們要介紹的主角Vue.js。

1.2.2 Vue.js 的開發模式

Vue.js是一個漸進式的JavaScript框架,根據項目需求,你可以選擇從不同的維度來使用它。
如果你只是想體驗Vue.js帶來的快感,或者開發幾個簡單的HTML5頁面或小應用,你可以直接通過<script>載入CDN文件。
例如:

1 <!-- 自動識別最新穩定版本的Vue.js -->
2 <script src="https://unpkg.com/vue/dist/vue.min.js"></script>
3 <!-- 指定某個具體版本的Vue.js -->
4 <script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>

 

兩種版本都可以,如果你不太瞭解各版本的差別,建議直接使用最新的穩定版本。
當然,你也可以將代碼下載下來,通過自己的相對路徑來引用。
引入Vue.js框架後,在<body>底部使用new Vue()的方式創建一個實例,這就是Vue.js最基本的開發模式。
現在可以寫入一下完整的代碼來快速體驗Vue:

 1 <!doctype html>
 2 <html lang="zh">
 3     <head>
 4         <meta charset="UTF-8">
 5         <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 6         <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7         <title>Vue 示例</title>
 8     </head>
 9     <body>
10         <div id="app">
11             <ul>
12                 <li v-for="book in books">{{book.name}}</li>
13             </ul>
14         </div>
15 
16         <script src="https://unpkg.com/vue/dist/vue.min.js"></script>
17         <script>
18             new Vue({
19                 el: "#app",
20                 data: {
21                     books: [
22                         {name: "《Vue.js實戰》"},
23                         {name: "《JavaScript 語言精粹》"},
24                         {name: "《JavaScript 高級程式設計》"}
25                     ]
26                 }
27             });
28         </script>
29     </body>
30 </html>

 

在瀏覽器中訪問它,會將圖書列表迴圈顯示出來,如圖1-2所示:

對於一些業務邏輯複雜,對前段工程有要求的項目,可以使用Vue單文件的形式配合webpack使用,必要時還會用到vuex來管理狀態,vue-router來管理路由。
這裡提到了很多概念,目前還不必去過多瞭解,只是說明Vue.js框架的開發模式多樣化,後續會詳細介紹,到時候會對整個Vue生態有所瞭解了。

瞭解了Vue.js的開發模式後,相信你已經迫不及待地想開啟Vue的大門了。
下一張,我們就直接進入話題,創建第一個Vue應用。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 構造函數方法有對象方法、類方法、原型方法 首先來看直接調用,這種情況下只有類方法能直接使用。 然後來看下new出新的實例,這種情況下,實例方法和原型方法都可以用,但是類方法不能用。new出來的實例會包含實例方法和屬性,然後實例的原型上會有原型方法,所以這二者可以用。 總結: 1.類方法是不需要進行實 ...
  • html頁面: data數據: 方法: 計算屬性: 樣式: html代碼: <!--分頁--> <div class="page-bar"> <ul> <li v-if="cur>1"><a v-on:click="cur--,pageClick()">上一頁</a></li> <li v-if=" ...
  • 在表單元素驗證方法中加入了 remote 方法,調試一直返回true,後來才知道因為是非同步驗證,所以才會出現此問題,解決方法就是在 remote 方法中,禁用 非同步和緩存,具體代碼如下 : ...
  • redux觸發store更新,使用的dispatch(action),在關於createStore的源碼解讀中可以看到,store.dispatch限制了action必須是一個純對象。是為了保持reducer的純凈性 只要傳入參數相同,返回計算得到的下一個 state 就一定相同。沒有特殊情況、沒有 ...
  • 目錄: 註意:本地json文件和json文件里的圖片地址都必須寫在static 靜態文件夾里;否則json文件里的url地址找不到。 major_info.json文件里的圖片路徑寫法 頁面通過v-bind的方式載入: ...
  • 1.第一步,這是目錄結構 2.接下來是build/webpack.dev.conf.js文件需要配置的內容 代碼: //vue配置請求本地json數據const express = require('express')const app = express()const appData = requ ...
  • 有一次我們說到擲骰子那個游戲,當時是用了一個steps屬性+雪碧圖來製作幀動畫,這當然頗為不錯,但其實一開始我想的不是這樣的,我想的是用真的3d和動畫去做,這個方案涉及到不少空間的知識,今天來給大伙好好說說,這css 3d到底怎麼玩。 先上效果圖: 基本思路:三層結構:視角容器>>載體>>具體3d圖 ...
  • 構造函數-->原型 >prototype-->__proto__-->constructor-->原型鏈 構造函數 什麼是構造函數?我理解構造函數就是可以用來生成實例的函數。 上面的代碼,f是函數Func new出來的實例,f是函數Func的實例,所以Func被稱為構造函數。那麼 Func的構造函數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...