繼續上一篇文章的內容,本文主要內容爲項目中新聞資訊
模塊的實現。css
新聞資訊頁面主要是當咱們點擊這個按鈕時跳轉到新聞列表界面。html
將新聞資訊的標籤改成路由:(a標籤改成router-link)。vue
home.vue
node
<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4"> <router-link to="/home/newsList"> <span class="mui-icon mui-icon-extra mui-icon-extra-new"></span> <div class="mui-media-body">News</div> </router-link> </li>
而後新建一個news.vue
單文件組件用於顯示新聞列表,並配置到router.js
文件中。webpack
如今咱們的新聞資訊頁面時寫死的,實際的場景應該是從後臺服務器中動態獲取,咱們能夠本身編寫一個簡單的Node搭建的本地服務器用於知足咱們的基本頁面數據需求。git
這個Node+Express簡單搭建的服務器已上傳至github
,可自行下載運行,運行前先npm install
一下。而後就可使用了。點擊這裏訪問github
值得注意的問題:web
因爲是項目自己和服務器是兩個不一樣的域名,存在跨域問題。可以使用jsonp
的方式進行數據傳輸,也能夠設置header來容許跨域訪問:npm
res.header('Access-Control-Allow-Origin', '*');
使用的是vue-resource
獲取數據。json
其餘細節問題代碼中均有註釋,這裏再也不贅述。
全局配置Vue.http.options.root
設置請求的根路徑,可是注意請求時路徑的寫法,如:
//錯誤的寫法:若是這樣寫請求的根路徑爲當前域名 this.$http.get('/getNewsList').then( result => { }) //正確的寫法 this.$http.get('getNewsList/').then( result => { })
scoped
配置下的style有時候沒法產生效果,就算加上!important
標識也沒法正常渲染,因此咱們經常再也不使用scoped
屬性,但這樣容易污染全局樣式,因此咱們須要模仿scoped
屬性的實現原理,手動爲組件根元素命名一個類做爲標識,而後樣式都在改標誌下進行全局渲染便可。例如新聞詳情頁的組件代碼以下:
//在根元素增長一個newsInfo類名做爲標識 <div class="newsInfo"> <h3 class="title"> {{newsInfo.title}} </h3> <p class="subtitle"> <span>發表時間:{{newsInfo.createTime}}</span> <span>瀏覽量:{{newsInfo.views}}</span> </p> <hr /> <div class="content" v-html="newsInfoHtml"> fsafs fasfdsdafsadf sadf </div> </div>
而後咱們的css屬性就能夠改成全局樣式而不用顧慮污染的狀況。
這裏咱們可使用scss
語法進行樣式書寫,更爲清晰(須要安裝scss對應的loader並配置,請參考這裏):
<style lang="scss"> .newsInfo{ .title { text-align: center; color: #d02121; } .subtitle{ color: #03A9F4; display: flex; justify-content: space-between; padding: 5px; } .content{ padding: 5px; } img { width: 100%; } .error { color: #FF1313; } } </style>