成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

快速入門 - Vue2 Tutorials (一)

djfml / 2236人閱讀

摘要:在這個(gè)組件里面有一些鏈接列表,和,這些列表直接使用編寫按照傳統(tǒng)的寫法,如果我們需要往里面添加鏈接的時(shí)候,每次我們都得添加和標(biāo)簽。所以修改如下這樣我們就把數(shù)據(jù)和視圖分開了,模板里面的代碼也簡潔了很多,不再需要寫很多重復(fù)的代碼。

Vue 的官方文檔 對 Vue 介紹非常詳細(xì),但官方文檔使用在 HTML 中引入 vue 的方式進(jìn)行講解,而實(shí)際項(xiàng)目中一般使用腳手架如 vue-cli 初始化項(xiàng)目。以至于剛看完文檔時(shí),卻依舊不能立即立即 vue-cli 創(chuàng)建的項(xiàng)目代碼。所以本文 vue-cli 構(gòu)建的項(xiàng)目為基礎(chǔ),詳細(xì)解釋其代碼及對應(yīng)的概念,并進(jìn)行簡單的實(shí)踐。

本文的代碼在 https://github.com/nodejh/vue2-tutorials/tree/master/01.QuickStart

命令行工具 安裝 vue-cli 并初始化項(xiàng)目

首先要全局安裝 vue-cl:

$ npm install --global vue-cli

然后使用 vue-cli 初始化一個(gè)基于 webpack 模板的新項(xiàng)目,除了 Install vue-router?N (No),其余都可以直接回車選 Y (Yes),因?yàn)槲覀儠簳r(shí)不會(huì)講到 vue-router

$ vue init webpack demo
? Project name demo
? Project description A Vue.js project

? Author nodejh 
? Vue build standalone
? Install vue-router? No
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Setup unit tests with Karma + Mocha? Yes
? Setup e2e tests with Nightwatch? Yes
安裝依賴
$ cd demo
$ npm install
$ npm run dev

然后打開瀏覽器,輸入 http://localhost:8080 就能看到界面。

接下來分析一下代碼。

代碼分析

項(xiàng)目目錄結(jié)構(gòu)如下:

├── README.md
├── build    # 編譯項(xiàng)目的配置文件目錄
├── config    # 配置文件目錄
├── src    # 項(xiàng)目主要代碼目錄
├── static    # 靜態(tài)資源
├── test    # 測試文件目錄

開發(fā)階段的主要代碼都在 src 目錄中編寫,vue-cli 默認(rèn)生成了一些代碼:

src
├── App.vue
├── assets
│?? └── logo.png
├── components
│?? └── Hello.vue
└── main.js

可以發(fā)現(xiàn),代碼的后綴名有兩種:

.js JS 文件

.vue Vue 組件,里面定義了 Vue 實(shí)例、模板、樣式等。需要由 webpack 等工具來轉(zhuǎn)換為 js 代碼

接下來會(huì)逐一解釋這些文件及代碼。

main.js

main.js 是項(xiàng)目的入口文件,也是 webpack 打包的入口文件。里面最代碼很少,主要就是通過 new Vue() 創(chuàng)建 Vue 實(shí)例:

new Vue({
  el: "#app",
  template: "",
  components: { App },
});

每個(gè) Vue.js 應(yīng)用都是通過構(gòu)造函數(shù) Vue 創(chuàng)建一個(gè) Vue 的根實(shí)例啟動(dòng)的。

在實(shí)例化 Vue 時(shí),傳入一個(gè)了一個(gè)對象,對象包含以下幾個(gè)選項(xiàng)。

el

el 的值是 Vue 實(shí)例的掛載目標(biāo),這里是 #app,也就是 demo/index.htmlid="app" 這個(gè)元素:

el 必須是一個(gè)已存在的元素。

api/#el

components

在說 template 之前,先來看看 components 屬性。

components: { App } 等價(jià)于 components: { App: App },是一個(gè)包含了對 Vue 實(shí)例可見的組件的哈希表。只有在 components 里面列出來的組件,才可以在 template 里面使用。

如果我們把 components: { App } 改為 components: { App } 改為 components: { MyApp: App },那么在 template 里面就需要這樣使用:template: ""。

由于 HTML 標(biāo)簽不區(qū)分大小寫,所以 components 里面的駝峰命名會(huì)自動(dòng)轉(zhuǎn)換為短橫線。詳見 camelCase vs. kebab-case

template

template 就是掛載到頁面的模板。

這里的值是 組件就是 components 屬性中的 App,也就是通過 import 引入的 App 這個(gè)模板。

new Vue({
  el: "#app",
  // 這里的  就是 components 屬性的值 App
  template: "",
  components: { App },
});

所以這段代碼的含義就是,將 這個(gè)模板掛載到元素 #app 上。

src/App.vue

src/App.vue 是一個(gè)典型的單文件組件。實(shí)際在項(xiàng)目中,我們寫的基本都是組件,再根據(jù)需要用組件組成頁面,這其實(shí)就是組件化。組件與組件之間相互獨(dú)立,項(xiàng)目結(jié)構(gòu)更加清晰,也更有利于維護(hù)。

一個(gè)組件里面封裝了 HTML、CSS 和 JS,有自己獨(dú)立的樣式和邏輯。