摘要:文件是當前項目的首頁文件。以后可能還會有全局注冊組件等操作。在上面使用了這是一個預定義的路徑,代表目錄。而為了使用好這個實例,不要修改的,不然裝載完內(nèi)容后,對應的管理區(qū)域會指向不明,而導致渲染失敗。
目錄
首發(fā)日期:2019-01-28
修改:
npm是什么?
npm 是 JavaScript 世界的包管理工具。js也是可以建成一個項目的,很多時候前端的功能不可能是純粹的自己寫的,我們會去用別人造好的輪子(日歷插件,圖表插件之類的),如果我們自己去找輪子,那么首先要去那個輪子的官網(wǎng)下載(有時候這個步驟會很麻煩)。而npm的服務器上會收集了很多常用的js相關(guān)的文件(不僅僅是js,更準確的說是代碼模塊,通常都是集成一個包),我們可以利用npm來下載項目的依賴模塊(包)。
除了依賴,npm還允許用戶從服務器下載并安裝別人編寫的命令行程序到本地使用?!颈热鐅ue-cli,安裝了vue-cli,就可以使用這個程序來快速建立一個基礎的vue項目】
node -v
和npm -v
,如果輸出了各自的版本號,那么就是安裝成功了。這些命令可以先暫時不記,后面用到的時候還會提一下。
npm install 包名
【如果要全局安裝,那么要加上參數(shù)-g】【一些第三方的包也是程序,安裝的時候也是使用npm install 程序名
】npm install
npm uninstall 包名
【如果還想從package.json中刪除模塊,那么還需要加上參數(shù)--save,即npm uninstall --save 包名
】npm start
npm ls
npm install -g npm
npm install -g cnpm --registry=http://registry.npm.taobao.org
1.進入命令行,鍵入命令npm install -g vue-cli
【這一步是安裝vue腳手架vue-cli,vue-cli能夠快速構(gòu)建一個vue的基礎項目出來】
2.使用腳手架來創(chuàng)建一個vue項目:vue init webpack my-project
【webpack是創(chuàng)建vue項目的方式,my-project是vue項目的名稱】
3.等待下載完模塊后,使用cd命令進入項目文件夾后,輸入npm run dev
來運行項目。
4.訪問控制臺提示的url,就可以看到基于npm的hello world了。
5.訪問localhost:8080,可以看到如下的界面,說明一個基礎的vue項目已經(jīng)初始化完成了:
為什么不使用靜態(tài)導入來演示后面的例子了?
在后面,我們將講到多個組件之間的復合使用,在有多個組件的時候,使用單文件來注冊組件是一個比較好的處理,而且在項目擴大的時候會涉及到方方面面的問題(路由啊,數(shù)據(jù)管理啊等等),這時候靜態(tài)導入就不太適合了,開發(fā)效率太低了。
項目構(gòu)建完之后,讓我們來分析一下“該在哪個目錄寫下哪些代碼”
上面的文件具體不需要太理解,我們只需要關(guān)注src目錄。我們只需要在src目錄下寫代碼就好。下面將介紹怎么在src目錄下寫代碼。
項目換到了npm上后,先了解一下前面學習過的內(nèi)容怎么在npm創(chuàng)建的vue項目中使用吧。
1.還需不需要手動創(chuàng)建根實例?
已經(jīng)不需要了,在main.js文件會自動創(chuàng)建一個根實例。
2.根實例管理區(qū)域在哪里?
從main.js文件中,可以看到根實例所對應的區(qū)域的id還是app,而這個app在index.html中【你可以嘗試修改index.html,確定一下是這個區(qū)域,比如說可以修改一些頁面的title】
3.是如何渲染出上面的Hello World頁面的?
可以看到出來main.js是核心的入口文件,它創(chuàng)建了一個根實例來管理了index.html的app區(qū)域,并且聲明了內(nèi)部使用的template,所以在渲染的時候,app區(qū)域里面會渲染成,而App是一個組件(這是單文件組件,App.vue),所以也就是把App組件中的內(nèi)容顯示到app區(qū)域中。
4.怎么修改首頁?
從上面來看,首頁就是index.html,核心的顯示區(qū)域是app區(qū)域,而app區(qū)域顯示的是組件App的內(nèi)容,如果我們修改App組件(App.vue)中的內(nèi)容就可以修改首頁了。
5.怎么注冊組件?
使用npm來構(gòu)建項目后,一個組件可以定義在一個多帶帶的vue中。
除了以往的那些全局注冊,局部注冊,你還可以使用單個vue文件來注冊一個組件(實質(zhì)相當于局部注冊)。這個步驟這里可以簡單地說一下,首先定義一個vue文件,例如App.vue文件,然后在App.vue中定義組件的內(nèi)容,并且要使用export來“導出”組件,在需要的地方使用import 來導入組件,然后就可以使用組件了。(上面的main.js使用App.vue組件的時候也有一行import App from ./App)
【上圖有個問題,如果你直接打,你會發(fā)現(xiàn)頁面的color都變了,如果你想要在當前組件生效,那么可以在style后加個scoped】
6.組件的常用屬性的定義:
基本還是按以前的規(guī)則,比如data要是一個函數(shù)。
7.router-view是什么?
如果你嘗試修改App.vue,你會發(fā)現(xiàn)里面有一個router-view,這是什么呢?這是一個用于路由顯示的元素。它會裝載當前路由所定義的內(nèi)容。如果你學過iframe或者frame,你就明白這個東西的意義,router-view會根據(jù)當前所處的url來顯示對應的內(nèi)容(這個路由對應的內(nèi)容在router目錄下的index.js中)。
這里提一下一些在Vue中常用的ES6語法:
import Hello from @/components/Hello
@
,這是一個預定義的路徑,代表src目錄。這個預定義路徑是webpack給我們的。
渲染成
,然后
再渲染成對應的組件的內(nèi)容。也就是說index.html里面的app提供了裝載點,App.vue提供了裝載的內(nèi)容?!救绻薷牧薃pp.vue里面的id,你會發(fā)現(xiàn)渲染成功后頁面的id會變?!俊径鵀榱耸褂煤胊pp這個實例,不要修改App.vue的id,不然裝載完內(nèi)容后,對應的管理區(qū)域會指向不明,而導致渲染失敗?!?/li>
1.新建vue文件
我選擇在src/components下新建一個Hello.vue
2.定義組件的內(nèi)容
{{msg}}
3.在其他文件中使用組件(這個所謂的其他文件,也可以是其他組件):首先使用import來導入組件,然后使用components來聲明使用組件,最后在組件的template中使用組件
如果要使用路由,那么首先要開啟功能:
路由與內(nèi)容的對應信息定義在router目錄下的index.js文件中。
來顯示的,
會渲染出當前路由對應的內(nèi)容。
可以實現(xiàn)點擊后跳轉(zhuǎn)到指定路由的功能。
點擊后可以跳轉(zhuǎn)到/hello
路由。
所謂路徑參數(shù),就是形似https://xxxx.xxx.com/info/1011337448
中的1011337448這個參數(shù)。這個參數(shù)告訴了這個頁面該怎么渲染。
在路由中,我們可以使用形如/path/:id
的方式來匹配參數(shù),:
后面跟的是參數(shù)名;
然后在組件中使用this.$route.params.參數(shù)名
來獲取參數(shù)。
路徑參數(shù)是可以有多個的,如/hello/:id/:name
,這是分別利用this.$route.params.參數(shù)名
來獲取參數(shù)。
所謂查詢參數(shù),就是形如https://xxxx.xxx.com/info?name=lilei
中name=lilei的這個參數(shù)。
給下一個路由帶查詢參數(shù)可以使用如下的方法:
1.
,點擊這個得到的url是/hello?id=001
?!具@里使用路由的path來標識路由】
2.
【這里使用路由的name來標識路由】
然后在組件中我們可以使用$route.query.參數(shù)名
來獲取參數(shù)
如果想要監(jiān)聽路由參數(shù)變化,那么可以使用watch來監(jiān)聽。
,
也是可以嵌套的。
中,而不是父組件的router-view中(具體看下圖)步驟:
1.首先,在路由中使用children來定義嵌套路由
2.先訪問/hello,確認App.vue中的router-view渲染了路由/hello的數(shù)據(jù)
3.在Hello.vue中寫一些文字,用來確定路由切換時,第一級的router-view的數(shù)據(jù)沒有被清除。同時新建一個router-view。
4.隨便定義一點Child.vue的內(nèi)容。
5.先訪問/hello,再訪問/hello/child:
router-view
的嵌套,如果想要在同一組件內(nèi)使用多個router-view呢?(為什么會需要多個router-view呢?有可能想要發(fā)生某些路由變化的時候,頁面某一部分不發(fā)生變化,只在某些情況發(fā)生變化,比如側(cè)邊欄這樣的東西。通常都想要側(cè)邊欄不變化,只有中間的顯示區(qū)域發(fā)生變化,但如果退出登錄了,那么兩個部分應該都發(fā)生變化。)router-view
添加一個屬性name,從而讓router-view有名字。
router-view
的時候,路由該怎么定義呢?上面的使用router-link的方式可以稱為聲明式路由,下面講的這種叫做編程式路由。
我們可以使用this.$router.push(路由的path)
來進行路由跳轉(zhuǎn)
雷猴
在上面的路由匹配中,如果我們訪問了一個沒有進行定義的路由,那么頁面會顯示空白。
我們可以在路由的最下面定義一個如下的路由:
這樣就可以把匹配不到的路由都渲染成指定的頁面。
1.首先進行安裝:npm install vuex --save
2.然后聲明使用vuex,并創(chuàng)建一個store:
【對于大型應用,我們會希望把 Vuex 相關(guān)代碼分割到模塊中。所以下面的代碼寫在src/store/index.js中(請手動新建)】
import Vue from 'vue'
import Vuex from 'vuex'
// 1. 在srcstoreindex.js中聲明使用vuex
Vue.use(Vuex)
// 2.新建一個store,用來存儲數(shù)據(jù)
export default new Vuex.Store({
state: { // store里面的state用來存儲數(shù)據(jù),數(shù)據(jù)以鍵值對形式存儲
global_info: 'global_info_msg'
}
})
3.在根實例中使用store:
上面創(chuàng)建store的時候存儲了一個數(shù)據(jù)進去,下面講一下怎么操作這個數(shù)據(jù)。
【由于在根實例中使用了store,所以所有的子實例都會有store,我們可以使用this.$store.state.數(shù)據(jù)名
來獲取數(shù)據(jù)】
改變store中的數(shù)據(jù)有兩種方法,一種是actions->mutations->state;一種是mutations->state。
1.通過actions來改變數(shù)據(jù):
首先派發(fā)action給actions,使用this.$store.dispatch(action名,參數(shù))
來派發(fā)action【派發(fā)action給actions之后,actions會調(diào)用action來處理數(shù)據(jù)】
定義action如何處理數(shù)據(jù),然后使用commit(mutation名, 參數(shù))
把數(shù)據(jù)提交給mutations:
定義mutation修改哪個數(shù)據(jù),利用賦值表達式賦值:
上面的修改數(shù)據(jù)的操作遵循了下圖的順序:
2.除了一步步來修改數(shù)據(jù),還可以直接通過mutations來改變數(shù)據(jù):this.$store.commit(mutation名,參數(shù))
,這時候我們只需要定義一個mutations即可。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/1257.html
摘要:比如把示例中的數(shù)據(jù)在頁面中用顯示出來與輸入框的數(shù)據(jù)綁定表單輸入框有這個值,在表單輸入框里使用會把表單輸入框與實例的數(shù)據(jù)進行智能綁定為什么說智能,因為有些輸入框的數(shù)據(jù)是屬性,有些不是。目錄上篇內(nèi)容回顧:數(shù)據(jù)綁定表單輸入框綁定單行文本輸入框多行文本輸入框復選框checkbox單選框radio選擇框select數(shù)據(jù)綁定的修飾符.lazy.number.trim樣式綁定class綁定對象語法:數(shù)組語...
摘要:如果我們作為一個后端開發(fā)者想掌握一個前端框架,是一個好選擇,因為它足夠的易學。是語言的下一代標準。數(shù)據(jù)方法生命周期鉤子函數(shù)其他有些內(nèi)容比較重要,留到后面講定義數(shù)據(jù)定義數(shù)據(jù)定義了數(shù)據(jù),那么就可以在管理的區(qū)域中使用的獲取數(shù)據(jù)的語法來獲取數(shù)據(jù)。目錄 前言: iview組件庫示例 element組件庫示例 ...
摘要:由服務器提供的響應來自服務器響應的狀態(tài)碼來自服務器響應的狀態(tài)信息服務器響應的頭是為請求提供的配置信息所以請求返回后,我們可以通過來獲取響應情況。攔截器攔截器攔截器用于攔截發(fā)起的請求或用于攔截返回的響應。目錄 上節(jié)內(nèi)容回顧 使用第三方組件庫 如何發(fā)起請求 請求錯誤處理 請求帶參 ...
閱讀 736·2023-04-25 19:43
閱讀 3981·2021-11-30 14:52
閱讀 3807·2021-11-30 14:52
閱讀 3871·2021-11-29 11:00
閱讀 3802·2021-11-29 11:00
閱讀 3904·2021-11-29 11:00
閱讀 3580·2021-11-29 11:00
閱讀 6183·2021-11-29 11:00