vite4+vue3+vant初始化移動端項目框架

步驟一:vite

1逃默、創(chuàng)建vite項目(本文全部使用yarn)

yarn create vite

2鹃愤、按照提示輸入項目名稱、框架名稱以及語言類型(本文使用vue3+TypeScript)


image.png

步驟二:vant

1完域、安裝vant (最新)

yarn add vant

2软吐、進入項目文件夾,并啟動項目

cd game-pm-mobile-front-end
npm run dev
image.png

步驟三:引入組件

完成以上安裝后筒主,為了方便在項目中使用組件关噪,需要配置引入
基于vite配置方便的按需引入
1、安裝插件

yarn add @vant/auto-import-resolver unplugin-vue-components -D

2乌妙、配置插件(vite.config.ts)

import vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from '@vant/auto-import-resolver';

export default {
  plugins: [
    vue(),
    Components({
      resolvers: [VantResolver()],
    }),
  ],
};

3使兔、引入函數(shù)組件的樣式
“Vant 中有個別組件是以函數(shù)的形式提供的,包括 Toast藤韵,Dialog虐沥,Notify 和 ImagePreview 組件。在使用函數(shù)組件時泽艘,unplugin-vue-components 無法解析自動注冊組件欲险,導(dǎo)致 @vant/auto-import-resolver 無法解析樣式,因此需要手動引入樣式匹涮√焓裕”——引自vant官網(wǎng)
在主入口文件(本文對應(yīng)main.ts)配置:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'

// 引入 Vant 組件
import { Toast, Dialog, Notify, ImagePreview } from 'vant';
import 'vant/lib/index.css'; // 引入 Vant 樣式

// 創(chuàng)建 Vue 應(yīng)用實例
const app = createApp(App);

// 注冊 Vant 組件
app.use(Toast);
app.use(Dialog);
app.use(Notify);
app.use(ImagePreview);

app.mount('#app')

步驟四:eslint

為了方便地進行代碼格式修復(fù)、報錯提醒然低、規(guī)范化喜每,這里繼續(xù)安裝和配置eslint

1、安裝插件

yarn add eslint eslint-plugin-vue @typescript-eslint/parser @typescript-eslint/eslint-plugin -D

eslint-plugin-vue:僅支持vue雳攘,提供的規(guī)則可以支持 .vue\js\jsx\ts\tsx 文件校驗
@typescript-eslint/parser:解析器带兜,讓ESLint擁有規(guī)范TypeScript代碼的能力
@typescript-eslint/eslint-plugin:插件,包含一系列TypeScript的ESint規(guī)則

2吨灭、初始化eslint

yarn eslint --init

√ How would you like to use ESLint? · style 你希望怎樣使用eslint
√ What type of modules does your project use? · esm  你的項目使用什么模塊
√ Which framework does your project use? · vue 項目框架
√ Does your project use TypeScript? · No / Yes 是否使用typescript
√ Where does your code run? · browser, node 代碼運行在哪
√ How would you like to define a style for your project? · guide 項目樣式
√ Which style guide do you want to follow? · standard-with-typescript 項目風(fēng)格
√ What format do you want your config file to be in? · JavaScript 配置文件格式
√ Would you like to install them now? · No / Yes 確認是否安裝
√ Which package manager do you want to use? · yarn 安裝方式

3刚照、配置eslint
在生成的.eslintrc.cjs文件中配置一下信息:

module.exports = {
  root: true,
  env: {
    node: true,
    'vue/setup-compiler-macros': true
  },
  extends: [
    'plugin:vue/vue3-recommended',
    'standard',
    'eslint:recommended'
  ],
  parser: 'vue-eslint-parser',
  rules: {
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
  },
  globals: {
    ref: true,
    reactive: true,
    computed: true,
    nextTick: true,
    onBeforeUnmount: true,
    provide: true,
    inject: true,
    useRoute: true,
    watch: true,
    toRaw: true
  }
}

其中,rules中可以定義自定義的規(guī)則喧兄。詳細可以參考eslint文檔https://eslint.org/docs/latest/rules/

步驟五:自動導(dǎo)入

當編寫項目時无畔,頻繁用到的api和組件入ref啊楚、reactive等,每次都需要import檩互,不太便利特幔,為此我們配置自動導(dǎo)入
1、安裝插件

yarn add unplugin-auto-import --dev

2闸昨、配置vite.config.ts
加入一下配置:

import AutoImport from 'unplugin-auto-import/vite'
// plugins中加入:
    AutoImport({
      imports: [
        'vue',
        'vue-router',
        'vue-i18n'
      ],
      dts: 'src/auto-imports.d.ts'
    })

完成后的vite.config.ts文件

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { VantResolver } from '@vant/auto-import-resolver'
import AutoImport from 'unplugin-auto-import/vite'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    Components({
      resolvers: [VantResolver()]
    }),
    AutoImport({
      imports: [
        'vue',
        'vue-router',
        'vue-i18n'
      ],
      dts: 'src/auto-imports.d.ts'
    })
  ],
  resolve: {
    alias: {
      '@': '/src'
    }
  }
})

我們看到以上配置中蚯斯,自動引入的有vue、vue-route饵较、vue-i18n以及src/auto-imports.d.ts拍嵌。
之后我們寫代碼時,一些基本api和組件就不用手動import了循诉。

步驟六:配置基本頁面框架和路由vue-router

1横辆、安裝和引入vue-router

yarn add vue-router

在src下創(chuàng)建router文件夾并在其中創(chuàng)建index.ts文件作為路由主文件
內(nèi)容如下:

import { createRouter, createWebHistory } from 'vue-router'

const routes = [
  {
    path: '/',
    redirect: '/hello'
  },
  {
    path: '/hello',
    name: 'helloPage',
    component: () => import('@/views/HelloPage.vue')
  }
]

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes
})

export default router

在項目主入口文件main.ts進行引入和使用

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 引入router文件
import router from './router'

// 引入 Vant 組件
import { Toast, Dialog, Notify, ImagePreview } from 'vant'
import 'vant/lib/index.css' // 引入 Vant 樣式

// 創(chuàng)建 Vue 應(yīng)用實例并使用router
const app = createApp(App).use(router)

// 注冊 Vant 組件
app.use(Toast)
app.use(Dialog)
app.use(Notify)
app.use(ImagePreview)

app.mount('#app')

2、搭建移動端頁面框架(這部分可以根據(jù)項目需要自行定義)
在src下創(chuàng)建layouts文件夾茄猫,并創(chuàng)建TheGlobalLayouts.vue狈蚤、TheGlobalBody.vue、TheGlobalFooter.vue
TheGlobalLayouts.vue

<template>
  <TheGlobalBody />
  <TheGlobalFooter />
</template>

<script setup lang="ts">
import TheGlobalBody from '@/layouts/TheGlobalBody.vue'
import TheGlobalFooter from '@/layouts/TheGlobalFooter.vue'
</script>

TheGlobalBody.vue

<template>
  <div class="global-body">
    <router-view />
  </div>
</template>

<style scoped lang="less">
.global-body {
  margin-bottom: @layout-footer-height;
}
</style>

TheGlobalFooter.vue

<template>
  <van-tabbar v-model="active">
    <van-tabbar-item icon="home-o">
      首頁
    </van-tabbar-item>
    <van-tabbar-item icon="search">
      待辦
    </van-tabbar-item>
    <van-tabbar-item icon="friends-o">
      我的
    </van-tabbar-item>
    <van-tabbar-item icon="setting-o">
      設(shè)置
    </van-tabbar-item>
  </van-tabbar>
</template>

<script setup lang="ts">
const active = ref(0)
</script>

3划纽、在主頁面文件app.vue中引入以上文件

<template>
  <van-config-provider>
    <TheGlobalLayouts />
  </van-config-provider>
</template>

<script setup lang="ts">
import TheGlobalLayouts from '@/layouts/TheGlobalLayouts.vue'
</script>

<style scoped>
</style>

4脆侮、第一個頁面:helloPage(對應(yīng)于以上router中定義的helloPage路由)
在src下建立views文件夾,并建立HelloPage.vue

<template>
  Hello Page
</template>

最終效果:


image.png

基于此勇劣,可以在views文件夾中開發(fā)項目所需要的頁面靖避,并在router文件中定義相應(yīng)的頁面路由。

以上比默。感謝閱讀幻捏。
因個人技術(shù)水平較低,文中內(nèi)容可能有錯誤命咐,如有發(fā)現(xiàn)請指出篡九,避免誤導(dǎo)更多人。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末醋奠,一起剝皮案震驚了整個濱河市瓮下,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钝域,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锭魔,死亡現(xiàn)場離奇詭異例证,居然都是意外死亡,警方通過查閱死者的電腦和手機迷捧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門织咧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胀葱,“玉大人,你說我怎么就攤上這事笙蒙〉钟欤” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵捅位,是天一觀的道長轧葛。 經(jīng)常有香客問我,道長艇搀,這世上最難降的妖魔是什么尿扯? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮焰雕,結(jié)果婚禮上衷笋,老公的妹妹穿的比我還像新娘。我一直安慰自己矩屁,他們只是感情好辟宗,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吝秕,像睡著了一般泊脐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上郭膛,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天晨抡,我揣著相機與錄音,去河邊找鬼则剃。 笑死耘柱,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的棍现。 我是一名探鬼主播调煎,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼己肮!你這毒婦竟也來了士袄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤谎僻,失蹤者是張志新(化名)和其女友劉穎娄柳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘绍,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡赤拒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挎挖。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡这敬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蕉朵,到底是詐尸還是另有隱情崔涂,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布始衅,位于F島的核電站冷蚂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏觅闽。R本人自食惡果不足惜帝雇,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛉拙。 院中可真熱鬧尸闸,春花似錦、人聲如沸孕锄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畸肆。三九已至宦芦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轴脐,已是汗流浹背调卑。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留大咱,地道東北人恬涧。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像碴巾,于是被迫代替她去往敵國和親溯捆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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