Vue:01.簡單使用

ESMAScript(ES6語法簡單補(bǔ)充)

1、let和const

var聲明的變量會(huì)暴露在全局作用域中扣草,可以不斷重新賦值

var a = [];
for (var i=0; i<10; i++){
    console.log(i);
};
a[6]();    // 結(jié)果為10

var聲明的變量谎僻,存在變量提升問題

console.log(a);    // undefined
var a = 12;
// ====等同于====
var a;
console.log(a);
a = 12;

let聲明的變量是塊級作用域,不能重復(fù)聲明(只聲明一次)

var a = [];
for (let i=0; i<10; i++){
    console.log(i);
};
a[6]();    // 結(jié)果為6

let聲明的變量争拐,不存在變量提升

console.log(a);    // 報(bào)錯(cuò)ReferenceError
let a = 12;

const聲明一個(gè)只讀的變量(即: 常量),一旦聲明立即初始化(不能留到以后賦值)晦雨。常量的值不能改變

const PI = 3.1415;
PI    // 3.1415
PI = 3;    // TypeError: Assignment to constant variable
const a;    // SyntaxError: Missing initializer in const declaration
2架曹、模板字符串(標(biāo)志:“ ` ` ”)
// 字符串拼接,``內(nèi)進(jìn)行拼接
$('#str').append(`
    <div>
        <p>${p.content}</p>
        <a>${a.context}</a>
    </div>
`);
3闹瞧、箭頭函數(shù)
var f = () => 5;
// ====無形參時(shí)绑雄,等同于====
var f = function(){
    return 5;
}
// -----------------------
var f = a => a;
// ====一個(gè)形參時(shí),等同于====
var f = function(a){
    return a;
}
// -----------------------
var sum = (a, b) => a + b;
// ====多個(gè)形參時(shí)奥邮,等同于====
var sum = function(a, b){
    return a + b;
}

使用箭頭函數(shù)存在兩個(gè)問題:
1万牺、函數(shù)內(nèi)部調(diào)用this時(shí),指向了瀏覽器掛載的windows對象洽腺;
2脚粟、對函數(shù)傳參時(shí),arguments對象不能使用

// 字面量方式創(chuàng)建對象
var person = {
    name: 'aa',
    foo:function(){
        console.log(this)    // this指使用時(shí)定義的person對象
        console.log('this is a test');
    }
}
person.foo();

// 箭頭函數(shù)創(chuàng)建對象
var person = {
    name: 'aa',
    foo:() => {
        console.log(this)    // 使用箭頭函數(shù)蘸朋,this指定義時(shí)使用的windows對象
        console.log('this is a test');
    }
}
person.foo();
4核无、對象的單體模式(標(biāo)志:foo(){})
// 自變量方式創(chuàng)建對象
var person = {
    name = 'aa',
    fav(){
        console.log(this);
    },    // 等價(jià)于 ===》 fav: function(){ console.log(this); },
}
person.fav();
5、ES6的面向?qū)ο?/h6>
// ES5使用構(gòu)造函數(shù)方式創(chuàng)建對象(即面向?qū)ο笈号鳎P(guān)鍵字必須大寫)
function Animal(name, age){
    this.name = name;
    this.age = age;
}
Animal.prototype.showName = function(){    // 添加方法
    console.log(this.name);
}
var cat = new Animal('肥嘟嘟', 2);    // 實(shí)例化對象必須用new
// ES6以class定義對象(每個(gè)方法結(jié)尾都不能加逗號)
class Animal{
    constructor(name, age){    // 構(gòu)造器函數(shù)
        this.name = name;
        this.age = age
    }    // 不能加逗號
    showName(){
        console.log(this.name)
    }
}
var d = new Animal('肥嘟嘟', 2);
d.showName();
6团南、模塊化

ES6的模塊化的基本規(guī)則或特點(diǎn):
1、每一個(gè)模塊內(nèi)聲明的變量都是局部變量炼彪, 不會(huì)污染全局作用域吐根;
2、模塊內(nèi)部的變量或者函數(shù)可以通過export導(dǎo)出霹购;
3佑惠、一個(gè)模塊可以導(dǎo)入別的模塊
4朋腋、每一個(gè)模塊只加載一次齐疙, 每一個(gè)JS只執(zhí)行一次, 如果下次再去加載同目錄下同文件旭咽,直接從內(nèi)存中讀日攴堋(類似Python包加載模式)。 一個(gè)模塊就是一個(gè)單例穷绵,或者說就是一個(gè)對象轿塔。

Vue-cli腳手架使用(2.x和3.x)

1. vue-cli 2.x

1.1 配置node.js環(huán)境,cmd命令行中輸入node --version測試是否安裝成功
npm是Node.js提供的包管理工具,因?yàn)閚pm安裝插件是從國外服務(wù)器下載勾缭,受網(wǎng)絡(luò)影響大揍障,可能出現(xiàn)異常,我們可以用淘寶npm鏡像cnpm代替默認(rèn)的 npm
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
1.2 安裝vue-cli:cnpm install vue-cli -g
1.3 生成項(xiàng)目

$ vue init webpack '項(xiàng)目名'   # 項(xiàng)目名會(huì)在當(dāng)前目錄下生成
$ cd '項(xiàng)目名'
$ cnpm install          # 安裝依賴 node_modules
$ npm run dev           # 啟動(dòng)項(xiàng)目俩由,默認(rèn)為localhost:8080端口
$ npm run build         # 把項(xiàng)目打包毒嫡,放到服務(wù)器使用
2. vue-cli 3.x

2.1 配置node.js環(huán)境,vue-cli 3.x 要求node的版本需要8.9甚至更高版本
2.2 安裝vue-cli:

# 全局安裝vue-cli
$ npm install -g @vue/cli
# OR
$ yarn global add @vue/cli

2.3 創(chuàng)建一個(gè)基于webpack模板的新項(xiàng)目

$ vue init webpack monitor
# OR
$ vue create monitor
# OR
$ vue ui
# 安裝依賴
$ cd monitor
$ npm run dev
# 打包部署
$ npm run build

“Vue是面向數(shù)據(jù)編程幻梯,不是面向dom編程”

1. Vue的基本了解
  • 創(chuàng)建Vue對象后要指名掛載點(diǎn):el: "#app"
  • 插值表達(dá)式:{{msg}}
  • 數(shù)據(jù)占位符:{{data}}兜畸,對應(yīng)data屬性的key;
  • 數(shù)據(jù)模板(指令):v-text和v-html碘梢,對應(yīng)data屬性的key咬摇,使用方法同數(shù)據(jù)占位符,其中:v-text會(huì)對html語句進(jìn)行轉(zhuǎn)義直接輸出煞躬,v-html則是將html語句內(nèi)容輸出肛鹏;
  • dom模板:template屬性能輸出dom模板;
  • 綁定事件:v-on:click="方法名"恩沛,簡寫為@click龄坪。事件對應(yīng)methods屬性中的 方法名: fun
2. Vue中的屬性綁定(v-bind)和雙向數(shù)據(jù)綁定(v-model)
<div id="app">
    <div v-bind:title="title">user</div>    // v-bind:value == :value
    <input v-model="content"/>
    <div></div>
</div>
new Vue({
    le: "#app",
    data: {
        title: "this is Test",
        content: "content!!!"
    }
})
3. Vue中的計(jì)算屬性(computed)和偵聽器(watch)
  • v-if和v-show:這兩個(gè)屬性用來控制dom顯示/隱藏,當(dāng)值為true則顯示复唤,為false則隱藏健田。
  • v-if和v-show的區(qū)別:在于v-if是通過直接銷毀dom的方式實(shí)現(xiàn)隱藏,而v-show是false時(shí)通過在標(biāo)簽內(nèi)佛纫,加入一個(gè)display=none來隱藏dom實(shí)現(xiàn)的妓局。所以v-show比v-if的性能更高,適用于對DOM高頻率的操作
  • v-for:主要用于遍歷數(shù)組數(shù)據(jù)呈宇,并自動(dòng)生成dom列表好爬。如v-for='(item, index) of list' 。加一個(gè)key屬性可以加快渲染速度甥啄,但key的值必須唯一(如Python字典)

todolist demo

1存炮、項(xiàng)目目錄:

注意:啟動(dòng)本地沒有的項(xiàng)目前,需要先執(zhí)行npm install蜈漓,把項(xiàng)目相關(guān)的依賴包下載完穆桂,再npm run dev啟動(dòng)項(xiàng)目,避免項(xiàng)目缺少依賴而啟動(dòng)失敗融虽。

Project Tree

build—項(xiàng)目的webpack配置文件
config—項(xiàng)目線上環(huán)境和開發(fā)環(huán)境的配置文件
node_modules—項(xiàng)目的依賴模塊
src—源代碼放置目錄 src中的main.js文件是整個(gè)項(xiàng)目的入口文件
static—靜態(tài)的資源文件

2享完、vue-cli相關(guān)

.vue文件的組成:

  • <template></template>模板
    template模板里面只能有一個(gè)包裹元素,最外部用一個(gè)<div>包裹
  • <script></script>邏輯
  • <style></style>樣式
使用

vue-cli組件

  • 在vue-cli中data現(xiàn)在是函數(shù)有额,并且需要return返回具體數(shù)據(jù)般又”吮粒可以通過更改入口文件的引用實(shí)例來改變加載頁面
組件引用
  • 組件引用:用import導(dǎo)入組件,再用components對局部組件進(jìn)行一個(gè)聲明茴迁。


    子組件
  • 父組件向子組件傳值:在子組件標(biāo)簽中綁定添加:屬性名=值寄悯;子組件則用props: ['屬性名']進(jìn)行聲明,然后直接使用

  • 子組件 this.$emit('事件名',參數(shù)值)向父組件請求某事件執(zhí)行堕义,父組件通過@事件名=函數(shù)名热某,來進(jìn)行事件監(jiān)聽觸發(fā)調(diào)用事件函數(shù)。

子組件定義樣式
  • scoped修飾符的使用:組件樣式作用域胳螟,通過在style上添加scoped標(biāo)簽將作用域限制到本組件中昔馋。如果不添加該標(biāo)簽,則將變?yōu)槿謽邮?/li>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糖耸,一起剝皮案震驚了整個(gè)濱河市秘遏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘉竟,老刑警劉巖邦危,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異舍扰,居然都是意外死亡倦蚪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門边苹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陵且,“玉大人,你說我怎么就攤上這事个束∧焦海” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵茬底,是天一觀的道長沪悲。 經(jīng)常有香客問我,道長阱表,這世上最難降的妖魔是什么殿如? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮最爬,結(jié)果婚禮上涉馁,老公的妹妹穿的比我還像新娘。我一直安慰自己烂叔,他們只是感情好谨胞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布固歪。 她就那樣靜靜地躺著蒜鸡,像睡著了一般胯努。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逢防,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天叶沛,我揣著相機(jī)與錄音,去河邊找鬼忘朝。 笑死灰署,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的局嘁。 我是一名探鬼主播溉箕,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼悦昵!你這毒婦竟也來了肴茄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤但指,失蹤者是張志新(化名)和其女友劉穎寡痰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棋凳,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拦坠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剩岳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贞滨。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拍棕,靈堂內(nèi)的尸體忽然破棺而出疲迂,到底是詐尸還是另有隱情,我是刑警寧澤莫湘,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布尤蒿,位于F島的核電站,受9級特大地震影響幅垮,放射性物質(zhì)發(fā)生泄漏腰池。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一忙芒、第九天 我趴在偏房一處隱蔽的房頂上張望示弓。 院中可真熱鬧,春花似錦呵萨、人聲如沸奏属。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽囱皿。三九已至勇婴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嘱腥,已是汗流浹背耕渴。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留齿兔,地道東北人橱脸。 一個(gè)月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像分苇,于是被迫代替她去往敵國和親添诉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • VUE介紹 Vue的特點(diǎn)構(gòu)建用戶界面医寿,只關(guān)注View層簡單易學(xué)吻商,簡潔、輕量糟红、快速漸進(jìn)式框架 框架VS庫庫艾帐,是一封裝...
    多多醬_DuoDuo_閱讀 2,712評論 1 17
  • ## 框架和庫的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**。> > 庫(lib...
    Rui_bdad閱讀 2,911評論 1 4
  • 1.基本綁定: new Vue( { el:'#elID', data:{ ...
    寒劍飄零閱讀 531評論 0 1
  • 阻止同步 使用 Object.freeze()盆偿,這會(huì)阻止修改現(xiàn)有的屬性柒爸,也意味著響應(yīng)系統(tǒng)無法再追蹤變化。 Vue實(shí)...
    Jack_1332閱讀 296評論 0 0
  • //document.forms返回頁面所有form表單構(gòu)成的數(shù)組 web超文本http全球性動(dòng)態(tài)交互跨平臺 2....
    AAnna珠閱讀 344評論 0 0