Vue3項目

使用技術(shù):

  • vue3.x (大部分業(yè)務(wù)都使用組合API的方式來開發(fā))
  • vue-cli (項目腳手架)
  • Axios (請求接口)
  • vue-router (單頁路由)
  • vuex (狀態(tài)管理)
  • vuex-persistedstate (vuex數(shù)據(jù)持久化)
  • @vueuse/core (組合API常用工具庫)
  • dayjs(日期處理)
  • vee-validate (表單校驗)

更新vue-cli到最新版本
npm uninstall @vue/cli -g //全局卸載
npm install @vue/cli -g //全局安裝

快速生成項目:
vue create rabbit-vue3 //創(chuàng)建項目

Check the features needed for your project:
  Choose Vue version
  Babel
  Router
  Vuex
  Css Pre-processors
   Linter/Formatter

選擇Vue版本

Choose a version of Vue.js that you want to start the project with
  3.x

不使用history模式鲫凶,暫時使用hash模式

Use history mode for router? n

選擇css處理器

Pick a CSS pre-processor
  Less

選擇語法規(guī)范

Pick a linter/formatter config:
ESLint + Standard config

選擇在什么時候檢查

Pick addtional lint features:
  Lint on save 
  Lint and fix on commit

想把配置保存到哪里扰肌,為方便管理瘾境,選擇如下

Where do you prefer piacing config for Babel,ESLint,etc.?
  In dedicated config files

項目創(chuàng)建完成后,刪除沒用的頁面。
vue3.x中createRouter來創(chuàng)建路由實例,createWebHashHistory代表使用hash模式的路由

import { createRouter, createWebHashHistory } from 'vue-router'
const routes = []
// 創(chuàng)建路由實例
const router = createRouter({
  // 使用hash方式實現(xiàn)路由
  history: createWebHashHistory(),
  // 配置路由規(guī)則,寫法和之前一樣
  routes
})

export default router

vue3.0中createStore來創(chuàng)建vuex實例

import { createStore } from 'vuex'

// 創(chuàng)建vuex倉庫并導(dǎo)出
export default createStore({
  state: {
    // 數(shù)據(jù)
  },
  mutations: {
    // 改數(shù)據(jù)函數(shù)
  },
  actions: {
    // 請求數(shù)據(jù)函數(shù)
  },
  modules: {
    // 分模塊
  },
  getters: {
    // vuex的計算屬性
  }
})

注意main.js中梦湘,同樣使用的方法

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

// 創(chuàng)建一個vue應(yīng)用實例
createApp(App).use(store).use(router).mount('#app')

Vuex持久化:通過vuex-persistedstate插件
插件安裝:npm i vuex-persistedstate

src/store 文件夾下新建 modules 文件,在 modules 下新建 user.js

export default {
  namespaced: true,
  state: () => ({
    // 個人用戶信息
    user:{
        name: '張三',
        age: 18,
    }
  })
}

src/store/index.js 中導(dǎo)入 user 模塊

import { createStore } from 'vuex'
import user from './modules/user'

export default createStore({
  modules: {
    user
  }
})

使用vuex-persistedstate插件來進行持久化

import { createStore } from 'vuex'
import createPersistedstate from 'vuex-persistedstate'
import user from './modules/user'

export default createStore({
  modules: {
    user
  },
  plugins: [
    createPersistedstate({
      key: 'erabbit-client-pc-store',
      paths: ['user']
    })
  ]
})

插件說明:

  1. 默認是存儲在localStorage中件甥,可以對存儲的方法進行自定義
  2. key是存儲數(shù)據(jù)的鍵名捌议,支持自定義語義化即可
  3. paths是存儲state中的那些數(shù)據(jù),如果是模塊下具體的數(shù)據(jù)需要加上模塊名稱引有,如user.token
  4. 修改state中的數(shù)據(jù)即可觸發(fā)同步機制瓣颅,可以看到本地存儲數(shù)據(jù)的的變化,每次修改只要數(shù)據(jù)變了就會自動把vuex同步到ls譬正;刷新的時候會自動從ls取然后同步到vuex

測試效果:

mutations: {
    setUser (state) {
      state.user.name = '李四'
    }
}

在main.js中

store.commit('user/setUser')

axios封裝:
安裝axios npm i axios

import axios from 'axios'
const instance = axios.create({
  baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net',
  timeout: 5000
})

// 添加請求攔截器
instance.interceptors.request.use(function (config) {
  // 在發(fā)送請求之前做些什么
  return config
}, function (error) {
  // 對請求錯誤做些什么
  return Promise.reject(error)
})

// 添加響應(yīng)攔截器
instance.interceptors.response.use(function (response) {
  // 對響應(yīng)數(shù)據(jù)做點什么
  return response
}, function (error) {
  // 對響應(yīng)錯誤做點什么
  return Promise.reject(error)
})

function request (url, method, submitData) {
  return instance({
    url,
    method,
    [method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
  })
}

export default request
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宫补,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子曾我,更是在濱河造成了極大的恐慌粉怕,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抒巢,死亡現(xiàn)場離奇詭異贫贝,居然都是意外死亡,警方通過查閱死者的電腦和手機虐秦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門平酿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悦陋,你說我怎么就攤上這事≈妫” “怎么了俺驶?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我暮现,道長还绘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任栖袋,我火速辦了婚禮拍顷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘塘幅。我一直安慰自己昔案,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布电媳。 她就那樣靜靜地躺著踏揣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匾乓。 梳的紋絲不亂的頭發(fā)上捞稿,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音拼缝,去河邊找鬼娱局。 笑死,一個胖子當著我的面吹牛咧七,可吹牛的內(nèi)容都是我干的衰齐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼猪叙,長吁一口氣:“原來是場噩夢啊……” “哼娇斩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起穴翩,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤犬第,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芒帕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歉嗓,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年背蟆,在試婚紗的時候發(fā)現(xiàn)自己被綠了鉴分。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡带膀,死狀恐怖志珍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垛叨,我是刑警寧澤伦糯,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響敛纲,放射性物質(zhì)發(fā)生泄漏喂击。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一淤翔、第九天 我趴在偏房一處隱蔽的房頂上張望翰绊。 院中可真熱鬧,春花似錦旁壮、人聲如沸监嗜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秤茅。三九已至,卻和暖如春童叠,著一層夾襖步出監(jiān)牢的瞬間框喳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工厦坛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留五垮,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓杜秸,卻偏偏與公主長得像放仗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子撬碟,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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