1. 程式人生 > 其它 >前端基礎-Vue

前端基礎-Vue

VUE

1.簡介

Vue (讀音 /vjuː/,類似於 view) 是一套用於構建使用者介面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注檢視層,不僅易於上手,還便於與第三方庫或既有專案整合。

Vue 的目標是通過儘可能簡單的 API 實現響應的資料繫結和組合的檢視元件。

2.使用

(1)CDN方法

在頁面上以 CDN 包的形式匯入。
<script src="https://unpkg.com/vue@next"></script>

CDN的全稱是Content Delivery Network,即內容分發網路。CDN是構建在現有網路基礎之上的智慧虛擬網路,依靠部署在各地的邊緣伺服器,通過中心平臺的負載均衡、內容分發、排程等功能模組,使使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度和命中率。CDN的關鍵技術主要有內容儲存和分發技術。

由於CDN是為加快網路訪問速度而被優化的網路覆蓋層,因此被形象地稱為“網路加速器”。

<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<div id="app">    
//<div> 標籤可以把文件分割為獨立的、不同的部分。它可以用作嚴格的組織工具,並且不使用任何格式與其關聯。用 id 或 class 來標記 <div>,那麼該標籤的作用會變得更加有效。
//如果與 CSS 一同使用,<div> 元素可用於對大的內容塊設定樣式屬性。
  <p>{{ message }}</p>
//{{ }} 用於輸出物件屬性和函式返回值。
</div>
<script>
new Vue({
  el: '#app',   //id選擇器
  data: {         //輸出什麼東西?
    message: 'Hello Vue.js!'
  }
})
</script>

(2)使用npm方法

npm run dev

Vue.js 提供一個官方命令列工具vue-cli,可用於快速搭建大型單頁應用。

# 全域性安裝 vue-cli
$ cnpm install --global vue-cli
# 建立一個基於 webpack 模板的新專案
$ vue init webpack my-project

安裝及執行:
$ cd my-project
$ cnpm install
$ cnpm run dev

專案打包:
npm run build
執行完成後,會在 Vue 專案下生成一個 dist 目錄,一般包含 index.html 檔案及 static 目錄,static 目錄包含了靜態檔案 js、css 以及圖片目錄 images。
直接雙擊 dist/index.html 檔案就可以在瀏覽器中看到效果了。

3.VUE專案

(1)專案目錄

目錄/檔案 說明
build 專案構建(webpack)相關程式碼
config 配置目錄,包括埠號等。我們初學可以使用預設的。
node_modules npm 載入的專案依賴模組
src 這裡是我們要開發的目錄,基本上要做的事情都在這個目錄裡。裡面包含了幾個目錄及檔案:assets: 放置一些圖片,如logo等。components: 目錄裡面放了一個元件檔案,可以不用。App.vue: 專案入口檔案,我們也可以直接將元件寫這裡,而不使用 components 目錄。main.js: 專案的核心檔案。
static 靜態資源目錄,如圖片、字型等。
test 初始測試目錄,可刪除
.xxxx檔案 這些是一些配置檔案,包括語法配置,git配置等。
index.html 首頁入口檔案,你可以新增一些 meta 資訊或統計程式碼啥的。
package.json 專案配置檔案。
README.md 專案的說明文件,markdown 格式

app.vue:

<!-- 展示模板 -->
<template>
  <div id="app">
    <img src="./assets/logo.png">
    <hello></hello>
  </div>
</template>
 
<script>
// 匯入元件
import Hello from './components/Hello'
export default {
  name: 'app',
  components: {
    Hello
  }
}
</script>

<!-- 樣式程式碼 -->
<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

(2)template標籤

使用 <template> 保留頁面載入時隱藏的內容。使用 JavaScript 來顯示:

<!DOCTYPE html>
<html>
<body>

<h1>template 元素</h1>

<p>單擊下面的按鈕,顯示 template 元素中的隱藏內容。</p>

<button onclick="showContent()">顯示隱藏的內容</button>

<template>     //點選按鈕才會顯示,JavaScript響應事件
  <h2>Flower</h2>
  <img src="/i/photo/flower.gif" width="180" height="180">
</template>

<script>
function showContent() {
  var temp = document.getElementsByTagName("template")[0];
  var clon = temp.content.cloneNode(true);
  document.body.appendChild(clon);
}
</script>

</body>
</html>

(3)vue應用

每個 Vue 應用都需要通過例項化 Vue 來實現。

var vm = new Vue({
  // 選項
})
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue 測試</title>
	<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>
<body>
    <div id="vue_det">   //塊兒
        <h1>site : {{site}}</h1>
        <h1>url : {{url}}</h1>
        <h1>Alexa : {{alexa}}</h1>
    </div>
    <script type="text/javascript">
    // 我們的資料物件
    var data = { site: "hello", url: "www.runoob.com", alexa: 10000}
    var vm = new Vue({    //vue應用
        el: '#vue_det',    //id選擇器
        data: data       //資料,在外面
    })
    // 它們引用相同的物件!
    document.write(vm.site === data.site) // true
	document.write("<br>")
    // 設定屬性也會影響到原始資料
    vm.site = "Runoob"
    document.write(data.site + "<br>") // Runoob

    // ……反之亦然
    data.alexa = 1234
    document.write(vm.alexa) // 1234
    </script>
</body>
</html>

當一個 Vue 例項被建立時,它向 Vue 的響應式系統中加入了其 data 物件中能找到的所有的屬性。當這些屬性的值發生改變時,html 檢視將也會產生相應的變化。

4.vscode執行html

(1).新建.html檔案

(2).安裝open in browser外掛

(3).html頁面右鍵選擇open in other browser

5.vue專案不用localhost

改變config下index.js裡的ip,也是本機的私有ip,公網內的其他ip可訪問。

6.專案解讀

main.js 像是加vue應用的。

.vue 裡面有<template> <script> <style>

首頁入口檔案:index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>myfirstvue</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

專案入口檔案:App.vue

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

ES6:全稱 ECMAScript 6.0 ,是 JavaScript 的下一個版本標準,2015.06 發版。

ES6 主要是為了解決 ES5 的先天不足,比如 JavaScript 裡並沒有類的概念,但是目前瀏覽器的 JavaScript 是 ES5 版本,大多數高版本的瀏覽器也支援 ES6,不過只實現了 ES6 的部分特性和功能。

export default

用於匯出常量、函式、檔案、模組等。

export可以有多個,export default只能有一個

hello.vue中:
<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>