公眾號H5開發(fā)(vue2+vant2)

前言:記錄項目的整個流程

1迂苛、創(chuàng)建項目:vant框架(http://vant-ui.gitee.io/#/zhCN/quickstart

按照vant官網(wǎng)的安裝-創(chuàng)建項目流程:

# 安裝 Vue Cli
npm install -g @vue/cli
# 創(chuàng)建一個項目
vue create hello-world
# Vue 2 項目鼓择,安裝 Vant 2
npm i vant -S
或
npm i vant@latest-v2 -S

2、添加依賴(持續(xù)更新)

名稱 用途 安裝命令
axios 請求 npm install axios
vue-router 路由 npm install vue-router --save
vuex 狀態(tài)管理 npm install vuex --save
less less 編譯 npm install less less-loader --save
lib-flexible 適配 npm i lib-flexible --save
moment 日期處理 npm install moment --save

3念搬、目錄結(jié)構(gòu)

層級 名稱(部分自定義) 解釋
0 根目錄 項目根目錄
0-1 node-modules npm install后生成的依賴
0-2 public 打包時不會被編譯朗徊,原封不動的放到dist下,相等于static,純靜態(tài)資源
0-3 src: 主要資源文件爷恳,開發(fā)都在這個里面
assets 資源目錄
api 存放接口的地方
components 公共組件
lib 存放vant組件引用象踊,具體見后面詳解
router 路由
store: vuex狀態(tài)管理
—modules 細(xì)分存放狀態(tài)管理
—index 整合所有狀態(tài)管理-總管理頁面
utils: 工具
—config 存放全局常量棚壁,如服務(wù)地址铸豁,appid等
—httpServer 存放axios配置
—tools 常用工具
views 頁面存放處
App.vue 根組件
main.js 入口js文件
0-4 package.json 依賴版本控制
0-5 readme.md 項目介紹
0-6 vue.config.js vue配置,代理等

4节芥、代理(解決跨域問題)

 devServer:{
    proxy: {
      "/a": {
        target: "https://xxx.com.cn",
        changeOrigin: true, //是否跨域
        secure: false,
        pathRewrite: {
            '^/a': '/a' //重寫接口
        },
        cookieDomainRewrite: ''
      }
    }
  }

5头镊、axios配置

  • 判斷token
//獲取cookie
const token = getCookie('access_token');
  • 添加token到request的header中
if (token) {
      config.headers.Authorization = `Bearer ${token}`;
}
-----tools.js----
function getCookie(str) {
  const name = `${str}=`;
  const ca = document.cookie.split(';');
  for (let i = 0; i < ca.length; i += 1) {
    const c = ca[i].trim();
     if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
  }
  return null;
}
  • 更改返回狀態(tài)碼
if (res.status == 200) {
      return res.data
}

6相艇、vuex說明(https://vuex.vuejs.org/zh/guide/)

  • index.js
//存放細(xì)分后的用戶相關(guān)狀態(tài)操作等
export default new Vuex.Store({
  modules: {
    User坛芽,
    Login
  }
})
  • 細(xì)分之后的單個store
import UserApi from '@/api/User';
const userApi = new UserApi();
//存儲的公共數(shù)據(jù)
const state = {
  userInfo: localStorage.getItem('userInfo') ? localStorage.getItem('userInfo') : {}
};
//處理過的數(shù)據(jù)
const getters = {
};
//唯一更改數(shù)據(jù)的方法
const mutations = {
    SET_USER_INFO(state, data) {
    state.userInfo = data;
  }
};
//調(diào)用更改數(shù)據(jù)的方法翼抠,常用于請求后,調(diào)用mutations的方法去更改公共數(shù)據(jù)
const actions = {
    async getUserInfo({ commit }) {
      const res = await userApi.getUser();
      if(res.result === 200){
        commit('SET_USER_INFO',res.data)
        localStorage.setItem('userInfo',res.data)
      }else{
        commit('SET_USER_INFO', {})
        localStorage.removeItem('userInfo')
      }
    }
}

export default {
  state,
  getters活喊,
  mutations,
  actions,
};
  • api接口
import http from '@/utils/httpServer'
import { BASE_URL } from '@/utils/config';

export default class UserApi{
  //獲取用戶信息
  getUser() {
      return http.get(`${BASE_URL}/user`);
  }
}

7钾菊、vue-router路由(https://router.vuejs.org/zh/introduction.html)

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/home.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'home',
    meta:{
      title:'頂部名稱'
    },
    component: Home
  },
  {
    path: '/other',
    name: 'other',
    meta:{
      title:'頂部名稱'
    },
    component: () => import('../views/other.vue')
  }
]

const router = new VueRouter({
  routes
})

router.beforeEach((to,from,next)=>{
  //如果要用相同的名稱煞烫,這里做判空顯示默認(rèn)
  document.title = to.meta && to.meta.title;
  next()
})
export default router

8累颂、Vant使用

  • npm引入后喘落,在src目錄下創(chuàng)建一個lib文件夾,里面創(chuàng)建一個vant.js
import Vue from 'vue';
import {
    Icon,
    Button
} from 'vant'
//按需引入
Vue.use(Icon);
Vue.use(Button);
  • 在main.js中引入vant.js,代碼中即可使用vant組件
import './lib/vant';
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末稀火,一起剝皮案震驚了整個濱河市凰狞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌达布,老刑警劉巖逾冬,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異产还,居然都是意外死亡嘀趟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酌泰,“玉大人,你說我怎么就攤上這事宫莱。” “怎么了巡验?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵显设,是天一觀的道長辛辨。 經(jīng)常有香客問我斗搞,道長指攒,這世上最難降的妖魔是什么允悦? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任隙弛,我火速辦了婚禮,結(jié)果婚禮上全闷,老公的妹妹穿的比我還像新娘叉寂。我一直安慰自己,他們只是感情好总珠,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布屏鳍。 她就那樣靜靜地躺著,像睡著了一般姚淆。 火紅的嫁衣襯著肌膚如雪孕蝉。 梳的紋絲不亂的頭發(fā)上屡律,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天腌逢,我揣著相機與錄音,去河邊找鬼超埋。 笑死搏讶,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的霍殴。 我是一名探鬼主播媒惕,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼月弛,長吁一口氣:“原來是場噩夢啊……” “哼帽衙!你這毒婦竟也來了恍飘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筷登,沒想到半個月后前方,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抑进。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸡号,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晋控,我是刑警寧澤仲吏,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站劳坑,受9級特大地震影響距芬,放射性物質(zhì)發(fā)生泄漏框仔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一纵朋、第九天 我趴在偏房一處隱蔽的房頂上張望嘁锯。 院中可真熱鬧家乘,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荸恕。三九已至,卻和暖如春媳纬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背素挽。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酥馍,地道東北人旨袒。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓必孤,卻偏偏與公主長得像瑞躺,于是被迫代替她去往敵國和親隘蝎。 傳聞我的和親對象是個殘疾皇子顽悼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

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