vue.js單文件組件入門(mén)筆記

  • <a href="#nodejs">nodeJs</a>
    • <a href="#nodeJs安裝">nodeJs安裝</a>
    • <a href="#nodeJs模塊">nodeJs模塊</a>
  • <a href="#npm介紹">npm介紹</a>
    • <a href="#cnpm">cnpm</a>
    • <a href="#npm常用指令介紹">npm常用指令介紹</a>
      • <a href="#npm-init">npm init</a>
        • <a href="#packagejson文件">package.json文件</a>
      • <a href="#npm-install">npm install</a>
    • <a href="#webpack">webpack</a>
  • <a href="#Vuejs">Vue.js</a>
    • <a href="#Vue-cli">Vue-cli</a>
    • <a href="#vuejs基礎(chǔ)">vue.js基礎(chǔ)</a>
    • <a href="#項(xiàng)目實(shí)戰(zhàn)">項(xiàng)目實(shí)戰(zhàn)</a>
      • <a href="#目錄分析">目錄分析</a>
    • <a href="#vue-resource">vue-resource</a>
    • <a href="#Vue-router">Vue-router</a>
    • <a href="#vuex">vuex</a>
      • <a href="#Getters">Getters</a>
      • <a href="#Mutations">Mutations</a>
      • <a href="#Actions">Actions</a>
      • <a href="#Modules">Modules</a>

本文目的是介紹如何使用vue.js去構(gòu)建一個(gè)單頁(yè)面應(yīng)用。

<a name="nodejs" href="#nodejs">

nodeJs</a>

<a name="nodeJs安裝" href="#nodeJs安裝">

nodeJs安裝</a>

Node.js是一個(gè)Javascript運(yùn)行環(huán)境(runtime)

nodejs內(nèi)置npm银萍。

node -v
npm -v

查看是否安裝成功以及查看版本號(hào)

<a name="nodeJs模塊" href="#nodeJs模塊">

nodeJs模塊</a>

教程:http://www.runoob.com/nodejs/nodejs-tutorial.html
demo:https://git.oschina.net/MRLH/nodeJsLearning.git
見(jiàn)work-07
了解一下export和import

<a name="npm介紹" href="#npm介紹">

npm介紹</a>

官網(wǎng):https://www.npmjs.com/
官方文檔:https://docs.npmjs.com/getting-started/what-is-npm
簡(jiǎn)易漢化:http://www.reibang.com/nb/10645887

NPM的全稱(chēng)是Node Package Manager 变勇,是一個(gè)NodeJS包管理和分發(fā)工具,已經(jīng)成為了非官方的發(fā)布Node模塊(包)的標(biāo)準(zhǔn)砖顷。

我們要先配置npm的全局模塊的存放路徑以及cache的路徑贰锁。

npm config set prefix “D:\nodejs\node_global”

以及

npm config set cache “D:\nodejs\node_cache”

增加NODE_PATH(全局變量模塊存放位置)
打開(kāi)系統(tǒng)對(duì)話(huà)框,“我的電腦”右鍵“屬性”-“高級(jí)系統(tǒng)設(shè)置”-“高級(jí)”-“環(huán)境變量”滤蝠。
進(jìn)入環(huán)境變量對(duì)話(huà)框豌熄,在系統(tǒng)變量下新建”NODE_PATH”,輸入”D:\nodejs\node_global\node_modules”物咳。(ps:這一步相當(dāng)關(guān)鍵锣险。)

由于改變了module的默認(rèn)地址,所以上面的用戶(hù)變量都要跟著改變一下(用戶(hù)變量”P(pán)ATH”新增“%NODE_PATH%;”)览闰,要不使用module的時(shí)候會(huì)導(dǎo)致輸入命令出現(xiàn)“xxx不是內(nèi)部或外部命令芯肤,也不是可運(yùn)行的程序或批處理文件”這個(gè)錯(cuò)誤。

<a name="cnpm" href="#cnpm">

cnpm</a>

由于國(guó)內(nèi)有墻的原因压鉴,使用npm下載包相當(dāng)慢崖咨,有可能因?yàn)榫W(wǎng)速原因?qū)е孪螺d包失敗。所以推薦使用cnpm油吭,下載源為淘寶的鏡像击蹲。
http://npm.taobao.org/

支持 npm 除了 publish 之外的所有命令署拟。

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

<a name="npm常用指令介紹" href="#npm常用指令介紹">

npm常用指令介紹</a>

下面的npm皆可用cnpm替代

<a name="npm-init" href="#npm-init">

npm init</a>

執(zhí)行該指令將會(huì)在當(dāng)前文件夾下生成一個(gè)package.json文件。這個(gè)文件類(lèi)似于maven的pom.xml文件歌豺。用于管理包推穷,以及記錄當(dāng)前項(xiàng)目的一些描述信息。

<a name="packagejson文件" href="#packagejson文件">

package.json文件</a>

dependencies里面放的是項(xiàng)目依賴(lài)的包类咧。如vue
devDependencies里面放的是開(kāi)發(fā)時(shí)編譯需要的包馒铃。如babel,[xx]-loader痕惋。

<a name="npm-install" href="#npm-install">

npm install</a>

安裝命令
簡(jiǎn)寫(xiě):npm i

npm install

會(huì)安裝package.json文件中聲明的包区宇,會(huì)把包安裝到當(dāng)前文件夾的node_modules目錄中。

npm install packagename

安裝指定名字的包

npm install packagename -g

安裝指定名字的包到全局值戳,這個(gè)一般是用于安裝需要在命令行使用到的包萧锉,如webpack。

npm install packagename --save

安裝項(xiàng)目依賴(lài)的包述寡,也就是項(xiàng)目中會(huì)用到的包,如vue叶洞。同時(shí)在package.json文件的dependencies中添加該包的描述鲫凶。

npm i packagename --save-dev

安裝編譯時(shí)需要的包,如babel衩辟,[xx]-loader等等螟炫。同時(shí)在package.json文件的devDependencies中添加該包的描述。

npm uninstall packagename

用于卸載包

<a name="webpack" href="#webpack">

webpack</a>

用于打包的一個(gè)工具

一些樣例:
https://github.com/ruanyf/webpack-demos#demo01-entry-file-source

<a name="babel" href="#babel">

babel</a>

用于把高版本的js語(yǔ)法轉(zhuǎn)換為低版本語(yǔ)法艺晴,讓項(xiàng)目中可以使用最新的js語(yǔ)法昼钻。

ECMAScript 6語(yǔ)法學(xué)習(xí):http://es6.ruanyifeng.com/

<a name="eslint" href="#eslint">

eslint</a>

代碼質(zhì)量管理工具,用來(lái)避免低級(jí)錯(cuò)誤和統(tǒng)一代碼的風(fēng)格封寞,這個(gè)在項(xiàng)目中可以關(guān)閉然评。

<a name="Vuejs" href="#Vuejs">

Vue.js</a>

Vue 不支持 IE8 以及更低版本瀏覽器。

<a name="Vue-cli" href="#Vue-cli">

Vue-cli</a>

參考文檔:http://www.reibang.com/p/f8e21d87a572
專(zhuān)門(mén)用來(lái)下載項(xiàng)目模板的狈究,項(xiàng)目搭建好就不需要了碗淌。

npm i -g vue-cli

安裝vue-cli

vue -V

檢查是否安裝成功

vue init webpack my-project

初始化vue工程,或者說(shuō)是創(chuàng)建模板項(xiàng)目抖锥。
項(xiàng)目名為my-project

cd my-project
npm install

安裝項(xiàng)目依賴(lài)

npm run dev

運(yùn)行項(xiàng)目

npm run build

編譯打包項(xiàng)目亿眠,打包到dist目錄

<a name="vuejs基礎(chǔ)" href="#vuejs基礎(chǔ)">

vue.js基礎(chǔ)</a>

官方文檔:https://cn.vuejs.org/v2/guide/
一些demo: https://git.oschina.net/MRLH/vueLearning.git
個(gè)人見(jiàn)解:和el表達(dá)式很像,和anglarJs更像磅废。
注意事項(xiàng):注意對(duì)象屬性的添加和數(shù)組中元素的添加纳像。
見(jiàn):https://cn.vuejs.org/v2/guide/list.html#數(shù)組更新檢測(cè)
見(jiàn):https://cn.vuejs.org/v2/guide/reactivity.html#變化檢測(cè)問(wèn)題

<a name="項(xiàng)目實(shí)戰(zhàn)" href="#項(xiàng)目實(shí)戰(zhàn)">

項(xiàng)目實(shí)戰(zhàn)</a>

demo地址:https://git.oschina.net/MRLH/vue-time-tracker.git
demo詳解: http://blog.csdn.net/sinat_17775997/article/details/55097003

<a name="目錄分析" href="#目錄分析">

目錄分析</a>

build,config拯勉,test放一些配置文件竟趾,一般不進(jìn)行修改憔购。
node_modules放置項(xiàng)目依賴(lài)的包文件。
dist目錄放置打包后生成的文件潭兽,發(fā)布時(shí)只需要dist文件夾
static放置靜態(tài)資源不會(huì)參與打包倦始,一般放置一些圖片資源,不要放樣式文件到這個(gè)里面山卦,shotcut文件放這個(gè)目錄里面鞋邑。
src目錄放置源碼
index.html一般不做修改。

assets目錄用來(lái)放置資源文件
components放置vue組件
router用于控制界面跳轉(zhuǎn)
store用于存儲(chǔ)數(shù)據(jù)账蓉,以及操作數(shù)據(jù)
views用于存放vue界面

views和components存放的東西是沒(méi)有區(qū)別的枚碗,都是vue組件,只是根據(jù)作用不同進(jìn)行區(qū)分的铸本。

<a name="vue-resource" href="#vue-resource">

vue-resource</a>

官方建議使用axios
main.js

import axios from 'axios'
Vue.prototype.$http = axios

其他地方使用的話(huà) 如同使用 vue-resource 一樣

this.$http.get(URL).then(response => {
    // success callback
}, response => {
    // error callback
})

<a name="Vue-router" href="#Vue-router">

Vue-router</a>

官方文檔:https://router.vuejs.org/zh-cn/
一個(gè)vue實(shí)例只有一個(gè)vue-router肮雨。
通常一個(gè)

<a name="router-link" href="#router-link">

router-link</a>

<router-link to="src">name</router-link>

用于頁(yè)面導(dǎo)航,效果約等于<a>標(biāo)簽

<a name="router-view" href="#router-view">

router-view</a>

<router-view></router-view>

路由匹配到的組件將渲染在這里

<a name="vuex" href="#vuex">

vuex</a>

官方文檔:https://vuex.vuejs.org/zh-cn/

Vuex 是一個(gè)專(zhuān)為 Vue.js 應(yīng)用程序開(kāi)發(fā)的狀態(tài)管理模式箱玷。

  • state怨规,驅(qū)動(dòng)應(yīng)用的數(shù)據(jù)源;
  • view锡足,以聲明方式將state映射到視圖波丰;
  • actions,響應(yīng)在view上的用戶(hù)輸入導(dǎo)致的狀態(tài)變化舶得。

以下是一個(gè)表示“單向數(shù)據(jù)流”理念的極簡(jiǎn)示意:


單向數(shù)據(jù)流

但是掰烟,當(dāng)我們的應(yīng)用遇到多個(gè)組件共享狀態(tài)時(shí),單向數(shù)據(jù)流的簡(jiǎn)潔性很容易被破壞:

  • 多個(gè)視圖依賴(lài)于同一狀態(tài)沐批。
  • 來(lái)自不同視圖的行為需要變更同一狀態(tài)纫骑。

Vuex 可以幫助我們管理共享狀態(tài)

vuex

<a name="State" href="#State">

State</a>

用于存放數(shù)據(jù)

取數(shù)據(jù)方法:

this.$store.state.xxx

<a name="Getters" href="#Getters">

Getters</a>

用于存放處理后的數(shù)據(jù)

取數(shù)據(jù)方法:

this.$store.getters.xxx

<a name="Mutations" href="#Mutations">

Mutations</a>

更改 Vuex 的 store 中的狀態(tài)的唯一方法是提交 mutation。

調(diào)用方法

store.commit('xxx')

<a name="Actions" href="#Actions">

Actions</a>

Action 類(lèi)似于 mutation九孩,不同在于:

  • Action 提交的是 mutation先馆,而不是直接變更狀態(tài)。
  • Action 可以包含任意異步操作捻撑。

調(diào)用方法

store.dispatch('increment')

<a name="Modules" href="#Modules">

Modules</a>

使用單一狀態(tài)樹(shù)磨隘,導(dǎo)致應(yīng)用的所有狀態(tài)集中到一個(gè)很大的對(duì)象。但是顾患,當(dāng)應(yīng)用變得很大時(shí)番捂,store 對(duì)象會(huì)變得臃腫不堪。

為了解決以上問(wèn)題江解,Vuex 允許我們將 store 分割到模塊(module)设预。每個(gè)模塊擁有自己的 state、mutation犁河、action鳖枕、getters魄梯、甚至是嵌套子模塊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宾符,一起剝皮案震驚了整個(gè)濱河市酿秸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌魏烫,老刑警劉巖辣苏,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哄褒,居然都是意外死亡稀蟋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)呐赡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)退客,“玉大人,你說(shuō)我怎么就攤上這事链嘀∶瓤瘢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵怀泊,是天一觀的道長(zhǎng)粥脚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)包个,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任冤留,我火速辦了婚禮碧囊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纤怒。我一直安慰自己糯而,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布泊窘。 她就那樣靜靜地躺著熄驼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烘豹。 梳的紋絲不亂的頭發(fā)上瓜贾,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音携悯,去河邊找鬼祭芦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛憔鬼,可吹牛的內(nèi)容都是我干的龟劲。 我是一名探鬼主播胃夏,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昌跌!你這毒婦竟也來(lái)了仰禀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蚕愤,失蹤者是張志新(化名)和其女友劉穎答恶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體审胸,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亥宿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砂沛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烫扼。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖碍庵,靈堂內(nèi)的尸體忽然破棺而出映企,到底是詐尸還是另有隱情,我是刑警寧澤静浴,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布堰氓,位于F島的核電站,受9級(jí)特大地震影響苹享,放射性物質(zhì)發(fā)生泄漏双絮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一得问、第九天 我趴在偏房一處隱蔽的房頂上張望囤攀。 院中可真熱鬧,春花似錦宫纬、人聲如沸焚挠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝌衔。三九已至,卻和暖如春蝌蹂,著一層夾襖步出監(jiān)牢的瞬間噩斟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工孤个, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亩冬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像硅急,于是被迫代替她去往敵國(guó)和親覆享。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • 還記得我們的孩提時(shí)代嗎营袜? 總愛(ài)在紙上畫(huà)些我們想畫(huà)的撒顿,然后高高興興的展示給爸媽看,驕傲的說(shuō)荚板,我畫(huà)了個(gè)啥~雖然爸媽全然...
    欣然8678閱讀 435評(píng)論 0 3