最近一直在學(xué)習(xí) 這里是GitHub的項(xiàng)目地址,目前雖然還是個(gè)半成品(有點(diǎn)懶),但對(duì)于初學(xué)者來(lái)說(shuō)應(yīng)該會(huì)有幫助,因?yàn)槲乙彩浅鯇W(xué)者。使用到的技術(shù)棧包括 這不是一篇純技術(shù)文章,更多的是我自己總結(jié)的一些方法和對(duì) 初學(xué)者的難題根據(jù)我學(xué)習(xí)的經(jīng)歷,我覺(jué)得對(duì)于初學(xué)者學(xué)習(xí) 從Vue-cli開(kāi)始
# 全局安裝 vue-cli
npm install -g vue-cli
# 創(chuàng)建一個(gè)基于 Webpack 模板的項(xiàng)目
vue init webpack my-project
# 安裝依賴(lài)
cd my-project
npm install
# 運(yùn)行
npm run dev
直接進(jìn)入到單文件組件開(kāi)發(fā)
單文件組件(.vue后綴名)很好的實(shí)現(xiàn)了組件的封裝,讓組件看起來(lái)更像組件。文件結(jié)構(gòu)如下: <template lang='html'>
<!-- 這里是組件的 HTML 標(biāo)簽 -->
</template>
<script>
export default {
// 這里是組件 js 代碼
}
</script>
<style lang='scss' scoped>
// 這里是組件的 CSS 樣式
</style>
選擇一款合適的編輯器我曾經(jīng)無(wú)數(shù)次糾結(jié)過(guò)這個(gè)問(wèn)題:到底是使用 簡(jiǎn)單的說(shuō)一下,選擇 如果你也跟我一樣糾結(jié)的話,那我建議你選擇 Sublime作為前端編輯器,推薦幾個(gè)好用的插件:
另外推薦一款我在用的主題: 縱觀全局我一直有一個(gè)觀點(diǎn):就是看事物要先看全局,忽略那些繁瑣的細(xì)節(jié),然后再逐個(gè)深究。比如看書(shū)要先看目錄(雖然我討厭看書(shū)),首先做到心里有數(shù),知道自己在看什么或有沒(méi)有必要再看下去(比如這篇文章)。 比較重要的幾個(gè)概念我不是一個(gè)語(yǔ)言表達(dá)能力很好的人,不會(huì)扯那些概念,我只能盡可能的說(shuō)一些自己的理解。 這里先說(shuō)一句,Vue中的 Vue實(shí)例通過(guò) new Vue({
// el是實(shí)例掛載點(diǎn),會(huì)將根組件替換掉原文檔中id為 app 標(biāo)簽
el: '#app',
// 通過(guò)render函數(shù)渲染
render: h => {
// 這里App是根組件
h(App)
}
})
// 第二種寫(xiě)法
new Vue({
el: '#app',
// 通過(guò)字符串模板
template: '<App />',
components: { App }
})
Vue擴(kuò)展實(shí)例嚴(yán)格來(lái)說(shuō),通過(guò) 擴(kuò)展實(shí)例創(chuàng)建方式: const MyComponent = Vue.extend({
// 該對(duì)象就相當(dāng)于 單文件組件中 export 導(dǎo)出的對(duì)象
// 這就是為什么說(shuō) 所有的Vue組件都是被擴(kuò)展的Vue實(shí)例
})
// 創(chuàng)建擴(kuò)展實(shí)例
const component = new MyComponent()
同樣的,Vue擴(kuò)展實(shí)例也需要掛載,其語(yǔ)法與根實(shí)例掛載一樣: // 會(huì)替換掉 HTML 文檔中 id 為 app 的標(biāo)簽
new MyComponent({el: '#app'})
// 但是這里不建議這么做,因?yàn)檫@樣會(huì)與實(shí)例掛載點(diǎn)沖突
// 這里僅僅是為了說(shuō)明擴(kuò)展實(shí)例與 根實(shí)例的相似之處
擴(kuò)展實(shí)例一個(gè)重要的用法就是在需要的時(shí)候才被插入到HTML文檔中。比如點(diǎn)擊一個(gè)按鈕,彈出一個(gè)模態(tài)(modal)框。在我的Demo中,正是通過(guò)該方法實(shí)現(xiàn)一個(gè)加載等待的模態(tài)框。通過(guò)此方法有一個(gè)好處就是,可以將該功能封裝成一個(gè)Vue插件,需要的時(shí)候通過(guò)一條指令就可以將組件插入到文檔中,不需要預(yù)先將組件寫(xiě)入到HTML文檔中。方法如下: // 創(chuàng)建擴(kuò)展實(shí)例
let component = new MyComponent()
// 掛載到虛擬DOM中
// 不傳遞參數(shù),若傳遞參數(shù)會(huì)掛載到指定的地方
component = component.$mount()
// 通過(guò)原生語(yǔ)法將 擴(kuò)展實(shí)例添加到HTML文檔中
document.body.appendChild(component.$el)
同樣,Vue根實(shí)例也可以通過(guò)該方式掛載到HTML中。 組件組件就是擴(kuò)展的Vue實(shí)例(哈哈)。反正記住在Vue中,一切可見(jiàn)的東西(但不限于可見(jiàn)的東西)都是組件,一個(gè)Vue實(shí)例就是由一大堆組件通過(guò)一定的組合和嵌套累積起來(lái)的。 學(xué)習(xí)組件無(wú)外乎就是它的創(chuàng)建和使用,通過(guò)擴(kuò)展Vue實(shí)例也算是一種創(chuàng)建的方式,另外還有字符串模板和render函數(shù)渲染的方式。我一開(kāi)始就建議直接使用單文件組件,具體請(qǐng)轉(zhuǎn)移官方文檔或從GitHub上Clone我的demo查看詳情。 生命周期每個(gè)組件都有自己的生命周期,從廣義上來(lái)說(shuō),Vue實(shí)例其實(shí)也是一個(gè)組件。一般常用的幾個(gè)生命周期鉤子: 所謂的生命周期鉤子,就是說(shuō)組件在特定的時(shí)刻會(huì)自動(dòng)觸發(fā)該事件,執(zhí)行對(duì)應(yīng)的函數(shù)。 學(xué)習(xí)Vue的基本思想程序員,其實(shí)大部分時(shí)間是用于思考的。建立一種思想,一種思維方式很重要。這也是我現(xiàn)在一直在努力做的事。 學(xué)習(xí)一個(gè)框架,就要站在它的角度去思考問(wèn)題。而Vue是一種 什么是MVVM
之前,我們使用 什么是MVC順便談一下 Vue的基本原理我沒(méi)有研究過(guò)Vue的源碼,也解釋不出來(lái)它是怎么實(shí)現(xiàn)的?畢竟我們是使用框架,通過(guò)它來(lái)提高開(kāi)發(fā)效率,沒(méi)必要太過(guò)于深究,否則就失去了使用它的意義(大神請(qǐng)忽略之)。記住一句話:我們是站在巨人的肩膀上開(kāi)發(fā)的。如果什么都要去深究其原理,那還不累死? Vue的核心是組件,一切可以看見(jiàn)的東西都是由組件構(gòu)成。然后通過(guò)把不同的組件組合和嵌套在一起,最終組成了一個(gè)根組件,也就是 new Vue({
// 該屬性會(huì) 將Vue實(shí)例掛載到 真實(shí)的HTML中
el: '#app',
// App 就是根組件,被掛載到Vue實(shí)例中
render: h => h(App)
})
最后越寫(xiě)到后面感覺(jué)越偏離主題(不知所云,看來(lái)得好好練一下文筆了),實(shí)在寫(xiě)不出想要的那種效果,所以就先到此為止吧。先整理一下思路,后面有時(shí)間會(huì)接著更新,希望自己會(huì)堅(jiān)持下去,這是第一篇。 關(guān)注我,獲取前端更多技術(shù)文章! |
|
來(lái)自: 堂tj77m7tpne37 > 《待分類(lèi)》