天天看點

vue.js元件開發1. ES6文法2. vue元件3. 單檔案元件4. Vue元件開發自動化工具5. 生成Vue單頁面應用項目目錄

1. ES6文法

ES6是JavaScript語言的新版本,它也可以叫做ES2015,之前介紹的JavaScript屬于ES5,ES6在它的基礎上增加了一些文法,ES6是未來JavaScript的趨勢,而且vue元件開發中會使用很多的ES6的文法,是以掌握這些常用的ES6文法是必須的。

1.1 變量聲明let和const

let和const是新增的聲明變量的開頭的關鍵字,在這之前,變量聲明是用var關鍵字,這兩個關鍵字和var的差別是,它們聲明的變量沒有預解析,let和const的差別是,let聲明的是一般變量,const申明的常量,不可修改。

alert(iNum01) // 彈出undefined // alert(iNum02); 報錯,let關鍵字定義變量沒有變量預解析 // alert(iNum03); 報錯,const關鍵字定義變量沒有變量預解析 var iNum01 = 6;
// 使用let關鍵字定義變量 let iNum02 = 12;
// 使用const關鍵字定義變量 const iNum03 = 24;

alert(iNum01); // 彈出6
alert(iNum02); // 彈出12
alert(iNum03); // 彈出24

iNum01 = 7;
iNum02 = 13;
//iNum03 = 25; // 報錯,const定義的變量不可修改,const定義的變量是常量

alert(iNum01)
alert(iNum02); 
alert(iNum03);           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

1.2 箭頭函數

可以把箭頭函數了解成匿名函數的第二種寫法,箭頭函數的作用是可以在對象中綁定this,解決了JavaScript中this指定混亂的問題。

// 定義函數的一般方式

function fnRs(a,b){ var rs = a + b;
 alert(rs);
}
fnRs(1,2);            

// 通過匿名函數指派來定義函數

var fnRs = function(a,b){ var rs = a + b;
 alert(rs);
}
fnRs(1,2);           

// 通過箭頭函數的寫法定義

var fnRs = (a,b)=>{
 var rs = a + b;
 alert(rs);
} 
fnRs(1,2);           

// 一個參數可以省略小括号

var fnRs2 = a =>{
 alert(a);
}
fnRs2('haha!');           

// 箭頭函數的作用,可以綁定對象中的this

var person = {
 name:'tom',
 age:18,
 showName:function(){
 setTimeout(()=>{
 alert(this.name);
 },1000) 
 }
}
person.showName();           

1.3 子產品導入import和導出export

javascript之前是沒有子產品的功能的,之前做js子產品化開發,是用的一些js庫來模拟實作的,在ES6中加入了子產品的功能,和python語言一樣,python中一個檔案就是一個子產品,ES6中,一個js檔案就是一個子產品,不同的是,js檔案中需要先導出(export)後,才能被其他js檔案導入(import)

// model.js檔案中導出 var person = {name:'tom',age:18}
export default {person}

// index.js檔案夾中導入
import person from 'js/model.js' // index.js中使用子產品
person.name
person.age           

上面導出時使用了default關鍵字,如果不使用這個關鍵字,導入時需要加大括号:

import {person} from 'js/model.js'

目前ES6的子產品功能需要在伺服器環境下才可以運作。

1.4 對象的簡寫

javascript對象在ES6中可以做一些簡寫形式,了解這些簡寫形式,才能友善我們讀懂一些在javascript代碼中簡寫的對象。

let name = '李思';
let age = 18;

var person = {
 name:name,
 age:age,
 showname:function(){
 alert(this.name);
 },
 showage:function(){
 alert(this.age);
 }
}           

// 簡寫成下面的形式

var person = {
 name,
 age,
 showname(){
 alert(this.name);
 },
 showage(){
 alert(this.age);
 }
}

person.showname();
person.showage();           

2. vue元件

元件(Component)是Vue.js最強大的功能之一。元件可以擴充 HTML 元素,封裝可重用的代碼。所有的 Vue 元件同時也都是 Vue 的執行個體,是以可接受相同的選項對象 (除了一些根級特有的選項) 并提供相同的生命周期鈎子。

1.注冊及使用元件

注冊一個元件:

Vue.component('my-component', {
 template: '<div>A custom component!</div>'
})           

使用元件

<div id="example">
 <my-component></my-component>
</div>
......

new Vue({
 el: '#example'
})           

2.data 必須是函數

元件就是vue的執行個體,所有vue執行個體中屬性和方法,元件中也可以用,但是data屬性必須是一個函數,因為元件會重複使用在多個地方,為了使用在多個地方的元件資料相對獨立,data屬性需要用一個函數來傳回值。

定義元件

Vue.component('simple-counter', {
 template: '<button v-on:click="counter += 1">{{ counter }}</button>',
 data: function () { return {
 counter: 0
 }
 }
})           
<div id="example-2"> <simple-counter></simple-counter> <simple-counter></simple-counter> <simple-counter></simple-counter> </div> ...... new Vue({
 el: '#example-2'
})           

3.props傳遞資料

如果想給元件中傳遞參數,元件要顯式地用 props 選項聲明它預期的資料:

<!-- 面包屑導航 --> <!-- 樣式 --> <style> .breadcrumb{width:90%;line-height:50px;
 border-bottom:1px solid #ddd;margin:0px auto;} .breadcrumb .hot{font-weight:bold;color:red;letter-spacing:2px;} </style>

......
<div id="app"> <bread-crumb pos="首頁&gt;圖檔清單"></bread-crumb> </div> <script>
 Vue.component('bread-crumb',{
 props:['pos'],
 template:'<div class="breadcrumb" @click="fnLight">目前位置:<span :class="{hot:isHot}">{{pos}}</span></div>',
 data:function(){ return {
 isHot:false
 }
 },
 methods:{
 fnLight:function(){ this.isHot = !this.isHot;
 }
 }
 })
 let vm = new Vue({
 el:'#app'
 })
</script>           
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

3. 單檔案元件

将一個元件相關的html結構,css樣式,以及互動的JavaScript代碼從html檔案中剝離出來,合成一個檔案,這種檔案就是單檔案元件,相當于一個元件具有了結構、表現和行為的完整功能,友善元件之間随意組合以及元件的重用,這種檔案的擴充名為“.vue”,比如:”menu.vue”。

單檔案元件代碼結構:

// 使用template标簽來定義html部分
<template> <div class="breadcrumb" @click="fnLight">
 目前位置:<span :class="{hot:isHot}">{{pos}}</span> </div> </template>

// javascript要寫成子產品導出的形式:
<script>
export default{
 props:['pos'],
 name:'breadcrumb',
 data:function(){ return {
 isHot:false
 }
 },
 methods:{
 fnLight:function(){ this.isHot = !this.isHot;
 }
 }
}
</script>

// 樣式中如果有scope關鍵字,表示這些樣式是元件局部的,不會影響其他元素
<style scoped> .breadcrumb{
 width:90%;
 line-height:50px;
 border-bottom:1px solid #ddd;
 margin:0px auto;
} .breadcrumb .hot{
 font-weight:bold;
 color:red;
 letter-spacing:2px;
} </style>           
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

4. Vue元件開發自動化工具

  • windows終端操作

    1、打開終端

    在window開始的搜尋框,輸入cmd,回車;或者在開始上點右鍵,選擇運作,輸入cmd回車;或者在window視窗的位址欄上輸入cmd,回車。

    2、常用終端指令

    // 檢視檔案夾内容

    dir +回車

    // 進入某個檔案夾

    cd 檔案夾名 +回車

    // 進入上一級檔案夾

    cd .. +回車

    // 切換到e盤

    e: +回車

    // 清除螢幕

    cls +回車

  • Node.js

    Node.js是一個新的後端(背景)語言,它的文法和JavaScript類似,是以可以說它是屬于前端的後端語言,後端語言和前端語言的差別:

    – 運作環境:後端語言一般運作在伺服器端,前端語言運作在用戶端的浏覽器上

    – 功能:後端語言可以操作檔案,可以讀寫資料庫,前端語言不能操作檔案,不能讀寫資料庫。

    Node.js如果安裝成功,可以檢視Node.js的版本,在終端輸入如下指令:

    node -v

  • npm

    npm是node.js的包管理器,安裝了node.js同時會自動安裝這個包管理器,可以npm指令來安裝node.js的包。這個工具相當于python的pip管理器。

  • 安裝vue的自動化工具

    vue開發生态區提供了用node.js開發的自動化開發工具包,這個工具包可以幫我們編譯單檔案元件。

    // 全局安裝 vue-cli

    npm install –global vue-cli

5. 生成Vue單頁面應用項目目錄

  • 單頁應用(SPA)

    單頁Web應用(single page web application,SPA),就是将系統所有的操作互動限定在一個web頁面中。單頁應用程式 (SPA) 是加載單個HTML頁面,系統的不同功能通過加載不同功能元件的形式來切換,不同功能元件全部封裝到了js檔案中,這些檔案在應用開始通路時就一起加載完,是以整個系統在切換不同功能時,頁面的位址是不變的,系統切換可以做到局部重新整理,也可以叫做無重新整理,這麼做的目的是為了給使用者提供更加流暢的使用者體驗。

  • 生成項目目錄

    使用vue自動化工具可以快速搭建單頁應用項目目錄。該工具為現代化的前端開發工作流提供了開箱即用的建構配置。隻需幾分鐘即可建立并啟動一個帶熱重載、儲存時靜态檢查以及可用于生産環境的建構配置的項目:

// 生成一個基于 webpack 模闆的新項目
$ vue init webpack my-project // 啟動開發伺服器 ctrl+c 停止服務
cd my-project
npm run dev
           
  • 項目目錄結構說明

需要關注的是上面标注的三個目錄:

1. 檔案夾1(src),主開發目錄,要開發的單檔案元件全部在這個目錄下

2. 檔案夾2(static),靜态資源目錄,所有的css,js檔案放在這個檔案夾

3. 檔案夾3(dist),項目打包釋出檔案夾,最後要上線單檔案項目檔案都在這個檔案夾中

其他還有node_modules目錄是node的包目錄,config是配置目錄,build是項目打包時依賴的目錄。

  • 頁面結構說明

整個項目是一個主檔案index.html,index.html中會引入src檔案夾中的main.js,main.js中會導入頂級單檔案元件App.vue,App.vue中會通過元件嵌套或者路由來引用components檔案夾中的其他單檔案元件。

原文釋出時間:06月30日

原文作者:你是誰的誰CZ

本文來源

CSDN部落格

如需轉載請緊急聯系作者