Vue從零開始(一)

来源:http://www.cnblogs.com/babycomeon/archive/2016/12/18/6195526.html
-Advertisement-
Play Games

一、什麼是Vue? Vue.js(讀音 /vjuː/, 類似於 view) 是一套構建用戶界面的 漸進式框架。與其他重量級框架不同的是,Vue 採用自底向上增量開發的設計。Vue 的核心庫只關註視圖層,並且非常容易學習,非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅動採用單文件組件和 ...


一、什麼是Vue?

    Vue.js(讀音 /vjuː/, 類似於 view) 是一套構建用戶界面的 漸進式框架。與其他重量級框架不同的是,Vue 採用自底向上增量開發的設計。Vue 的核心庫只關註視圖層,並且非常容易學習,非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅動採用單文件組件和 Vue 生態系統支持的庫開發的複雜單頁應用。Vue.js 的目標是通過儘可能簡單的 API 實現響應的數據綁定和組合的視圖組件。如果你是有經驗的前端開發者,想知道 Vue.js 與其它庫/框架的區別,查看對比其它框架

    以上內容摘自http://cn.vuejs.org/v2/guide/,說實話,我是沒看懂寫的是個啥,如果你是來來搞懂這個問題的,那麼你要失望了,請自行去百度,順便百度下MVVM,再去瞭解下reactjs和angularjs,然後再瞭解下區別。

二、快速上手

    對於碼農來講,別跟我扯那些有的沒得,如何能讓我在最小的學習代價下能快速使用,迅速掌握這個2016年前端最火的技術之一,才是每一個碼農關心的問題好麽,進入正題,不過在這之前,還是希望大家去瞭解一下有關前端框架的相關知識,包括有一定的javascript,html和css的相關經驗再往下看。

    vue官方提供了兩種不同的安裝方案,簡單的來講,就是簡化版和完整版,其中的區別,我會在之後的文章里講清楚,要快速上手,當然是選擇簡化版,對於簡化版的使用,vue比react和angular簡直是簡單到爆,只需引入一個js文件,寫入我們的html文件,我們就可以使用vue的所有基本功能,是不是聽上去很牛逼的樣子,可能還有很多jquery的童鞋會說,我大jquery不是也只需要引一個js文件嘛,請瞭解清楚,jquery只是一個javascript的工具庫,而vue,是一款偉大的MVVM前端框架。

    首先,新建一個html文件出來,然後添加下麵的代碼

<script src="https://unpkg.com/vue/dist/vue.js"></script>

    好了,我們可以使用Vue了,第一件事,當然是打開Vue的API使用指南啊,看一眼,這個竟然有中文版的,好嘞,花個三十分鐘左右的時間把基礎的代碼擼一遍。

    下麵是我擼的代碼,簡單註釋已經加好:

<!DOCTYPE html>
<html>
<head>
	<title>Vue demo</title>
	<script src="./vue.js"></script>
</head>
<body>
<div id="app">
	{{message}}
</div>
<div id="app-2" v-bind:title="message">
	<span>
		Hover your mouse over me for a few seconds to see my dynamically bound title!
	</span>
</div>
<dir id="app-3">
	<p v-if="seen">Now you can see me</p>
</dir>
<div id="app-4">
	<ol>
		<li v-for="todo in todos">
			{{todo.text}}
		</li>
	</ol>
</div>
<div id="app-5">
	<p>{{message}}</p>
	<button v-on:click="reverseMessage">Reverse Message</button>
</div>
<div id="app-6">
	<p>{{message}}</p>
	<input v-model="message">
</div>
<div id="app-7">
	<ol>
		<todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>
	</ol>
</div>
</body>
<script type="text/javascript">
<!-- 聲明式渲染 -->
var app = new Vue({
	el: '#app',
	data: {
		message: 'My first vue app'
	}
});
var app2 = new Vue({
	el: '#app-2',
	data: {
		message: 'You load this page on ' + new Date()
	}
});
<!-- if條件判斷 -->
var app3 = new Vue({
	el: '#app-3',
	data: {
		seen: true
	}
});
<!-- for迴圈 -->
var app4 = new Vue({
	el: "#app-4",
	data: {
		todos: [
			{text: 'Learn javascript'},
			{text: 'Learn Vue'},
			{text: 'Build something awesome'}
		]
	}
});
<!-- 處理用戶輸入 -->
var app5 = new Vue({
	el: '#app-5',
	data: {
		message: 'Hello Vue.js'
	},
	methods: {
		reverseMessage: function() {
			this.message = this.message.split('').reverse().join('')
		}
	}
});
var app6 = new Vue({
	el: '#app-6',
	data: {
		message: 'Hello Vue!'
	}
});
<!-- 組件的使用 -->
Vue.component('todo-item', {
	props: ['todo'],
	template: '<li>{{todo.text}}</li>'
});
var app7 = new Vue({
	el: '#app-7',
	data: {
		groceryList: [
			{text: 'Vegetables'},
			{text: 'Cheese'},
			{text: 'Whatever else humans are supposed to eat'}
		]
	}
});
</script>
</html>

整體的頁面顯示效果如下:

 

    在這裡,有一個Vue中非常重要的概念——組件。因為它提供了一種抽象,讓我們可以用獨立可復用的小組件來構建大型應用。如果我們考慮到這點,幾乎任意類型的應用的界面都可以抽象為一個組件樹:

 

    在 Vue 里,一個組件實質上是一個擁有預定義選項的一個 Vue 實例:

Vue.component('todo-item', {
  template: '<li>This is a todo</li>'
})

    現在你可以另一個組件模板中寫入它:

<ol>
  <todo-item></todo-item>
</ol>

    但是這樣會為每個 todo 渲染同樣的文本,這看起來並不是很酷。我們應該將數據從父作用域傳到子組件。讓我們來修改一下組件的定義,使得它能夠接受一個 prop 欄位:

Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})

    現在,我們可以使用 v-bind 指令將 todo 傳到每一個重覆的組件中:

<div id="app-7">
  <ol>
    <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>
  </ol>
</div>

 

Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})
var app7 = new Vue({
  el: '#app-7',
  data: {
    groceryList: [
      { text: 'Vegetables' },
      { text: 'Cheese' },
      { text: 'Whatever else humans are supposed to eat' }
    ]
  }
})

    這隻是一個假設的例子,但是我們已經將應用分割成了兩個更小的單元,子元素通過 props 介面實現了與父親元素很好的解耦。我們現在可以在不影響到父應用的基礎上,進一步為我們的 todo 組件改進更多複雜的模板和邏輯。

    從代碼上面來看,還是標準的javascript寫法,只是定義了Vue這個對象,進行的所有操作都是通過Vue這個對象來實現的,這一部分的代碼簡單介紹了Vue的使用,相信大多數的項目中使用最多還是這些數據綁定,判斷迴圈,用戶輸入,綁定事件。

    不過話說回來,我們為什麼要使用Vue?各位看官自行百度一下去吧,我這裡不吹不黑,只是一個簡單的上手系列文章,由淺入深,跟著官方指南走,加入一些我自己的理解,歡迎各位看官拍磚。

 

參考資料:


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

-Advertisement-
Play Games
更多相關文章
  • <html> ...
  • 簡介 "transformjs" 在非react領域用得風生水起,那麼react技術棧的同學能用上嗎?答案是可以的。junexie童鞋已經造了個 "react版本" 。 動畫實現方式 傳統 web 動畫的兩種方式 : 1. 純粹的CSS3 :如:transition/animation+transf ...
  • 基本上每個項目都需要用到模態框組件,由於在最近的項目中,alert組件和confirm是兩套完全不一樣的設計,所以我將他們分成了兩個組件,本文主要討論的是confirm組件的實現。 ...
  • 一、AJAX示例 AJAX全稱為“Asynchronous JavaScript And XML”(非同步JavaScript和XML) 是指一種創建互動式網頁應用的開發技術、改善用戶體驗,實現無刷新效果。 1.1、優點 不需要插件支持 優秀的用戶體驗 提高Web程式的性能 減輕伺服器和帶寬的負擔 1 ...
  • 一、插入換行 ~:表示同輩元素之後指定類型的元素,如;elm1 ~ elm2表示,elm1之後的所有elm2元素,且elm1與elm2都是在同一個父級元素。 +:表示同輩元素的兄弟元素。 \A:一個空白換行符 解決方案: 在dd與dt相鄰的dt上的子元素前面加入一個空白換行符 在相鄰的dd與dd之間 ...
  • 環境:win7 64位 IE9 錯誤:SCRIPT5011:不能執行已釋放Script的代碼。 現象:在父窗體的close()中調用嵌套的iframe頁面的js方法返回一個對象時拋此異常。 原因:在一個iframe中定義對象,在這個iframe被刪除後,方法執行的環境丟失,就會報這個錯誤 我的解決辦 ...
  • 通過簡單的示例代碼,短暫地回顧了jQuery的Deferred使用後,我們一起來看看jQuery是怎麼實現Deferred,當然解讀jQuery源代碼的版本是大於1.8的。 ...
  • 本文記錄了我在項目中用過的一些JavaScript小功能,有需要的可以參考下;如有不足之處,還望眾位同行指正。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...