vue.js開發外賣App項目的組件拆分總結(五)

static目錄下css中有reset.css文件,開發一個前端頁面,需要將一些標籤默認頁面reset掉。採用的是http://cssreset.com官網提供的樣式。

在入口文件:index.html中引入reset.css文件,還有移動端的視口不能縮放,有個初始的寬和高設置,
這裏寫圖片描述
可以通過配置eslintrc.js文件修改一些規則,比如:indent:0表示關於空格的規則取消。
這裏寫圖片描述

在eslint的規則中,當new 一個對象時,是需要賦值給一個變量的,而vue可以不用賦值,所以

/* eslint-disable no-new */

代碼表示跳過這個規則。

項目中需要引入stylus

在package.json文件中devDependencies對象中添加stylus-loader,然後執行npm install,然後node-modules中就有stylus-loader。
這裏寫圖片描述

header名字與html5原生的header標籤名重複

 <v-header :seller="seller"></v-header>
 export default{
  components: {
      'v-header': header
    }
 }

如以上代碼所示:在註冊組件時,起個別名v-header

flex佈局的應用

實現商品,評論和商家三列等分佈局

這塊在app.vue文件中
<template>
  <div>
    <v-header :seller="seller"></v-header>
    <div class="tab border-1px">
      <div class="tab-item">
        <a v-link="{path:'/goods'}">商品</a>
      </div>
      <div class="tab-item">
        <a v-link="{path:'/ratings'}">評價</a>
      </div>
      <div class="tab-item">
        <a v-link="{path:'/seller'}">商家</a>
      </div>
    </div>
    <router-view :seller="seller" keep-alive></router-view>
  </div>
</template>

樣式如下:

.tab
    display: flex  //key code
    width: 100%  //key code
    height: 40px
    line-height: 40px 
    .tab-item
      flex: 1   //key code
      text-align: center

源碼並沒有寫兼容性的代碼,比如以下是flex在不同瀏覽器兼容性的寫法

display: -webkit-box;
display: -ms-flexbox;
display: flex;

如下圖所示,因爲vue-loader依賴了一個postcss插件,這些插件會自動幫我們搞定css兼容問題。
這裏寫圖片描述
"vue-loader": "^8.3.0",出現在package.json文件的devDependencies選項中,要使用必須配置。

vue-router的使用

vue-router的配置:
在package.json中配置"vue-router":"^0.7.13",,然後npm install,安裝vue-router,在node-module模塊中可以找到。

"dependencies": {
    "vue": "^1.0.21",
    "vue-resource":"^1.0.1",
    "vue-router":"^0.7.13",
    "babel-runtime": "^6.0.0",
    "better-scroll": "^0.1.7"
  }

vue-router的使用

在main.js文件中
import VueRouter from 'vue-router';
Vue.use(VueRouter);//如果使用common.js模塊,需要顯式的使用vue.use()安裝路由模塊

使用vue-router的官方模板,html模板編寫如下:使用指令v-link進行導航
這裏寫圖片描述
對應項目中的配置如下:

這塊在app.vue文件中
<template>
  <div>
    <v-header :seller="seller"></v-header>
    <div class="tab border-1px">
      <div class="tab-item">
        <a v-link="{path:'/goods'}">商品</a>
      </div>
      <div class="tab-item">
        <a v-link="{path:'/ratings'}">評價</a>
      </div>
      <div class="tab-item">
        <a v-link="{path:'/seller'}">商家</a>
      </div>
    </div>
    <router-view :seller="seller" keep-alive></router-view>
  </div>
</template>

以上:路由外鏈router-view的作用:當我們改變路由,會刷新router-view中包含的內容。

vue-router的js文件的配置

這塊在main.js中配置
var app = Vue.extend(App);// 路由器需要一個根組件
var router = new VueRouter({//實例化一個router
  linkActiveClass: 'active' //這個選項配置當link是active時,指定的類名爲active,實現了當我們選中某個tab,然後那個Link會被激活,應用active樣式
});

//通過map方法配置路由
router.map({
  '/goods': {
     component: goods
  },
  '/ratings': {
    component: ratings
  },
  '/seller': {
    component: seller
  }
});

router.start(app, '#app');//通過start方法將app掛載點傳入
// router.go('/goods');  //該方法是router提供的API,頁面默認進入goods頁面

需要注意兩點:(1)通過var app = Vue.extend(App);代替new Vue實例(2)通過start方法將app掛載點傳入

關於目錄在webpack的webpack.base.conf文件中的配置。好處:在其他組件引用該組件時,不用每次寫絕對路徑,寫相對路徑即可。作用:將common目錄映射到../src/common
這裏寫圖片描述

路由的實現:其實是改變哈希值

發佈了179 篇原創文章 · 獲贊 82 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章