从0到1搭建vite+vue3+vant4+pinia的h5项目

#通过vite构建vue项目 

这里展示的话使用的式yarn  vite官方地址:开始 | Vite 官方中文文档

#使用NPM
npm create vite@latest my-vue-app -- --template vue

#使用yarn
yarn create vite my-vue-app --template vue

my-vue-app是创建项目的名称 可自行定义

#响应式布局 vw布局 

这里采用vw布局 配置起来也是很简单的 

这里是以常用的 375x667(iPhone 6/7/8) 移动设备尺寸 适用于大多数普通的移动设备。这个尺寸通常在H5项目中用作设计稿的基准尺寸。

#下载安装依赖
yarn add postcss-px-to-viewport --save-dev

#vite.config.js文件中配置
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path';
import postcssPxToViewport from 'postcss-px-to-viewport';

export default defineConfig({
  base:'/h5',
  // publicPath: './',
  plugins: [
    vue(),
    Components({}),
  ],
  css: {
    postcss: {
      plugins: [
        postcssPxToViewport({
          unitToConvert: 'px',
          viewportWidth: 375,
          viewportHeight: 667,
          unitPrecision: 3,
          viewportUnit: 'vw',
          selectorBlackList: ['.ignore', '.hairlines'],
          minPixelValue: 1,
          mediaQuery: false,
        }),
      ],
    },
  },
})

 如果在代码中px单位能自动转换成vw单位 就表示配置成功啦

#安装sass 和 sass-loader

yarn add sass --save-dev             

yarn add sass-loader --save-dev

安装完成即可直接使用<style lang='scss' scoped></style>

#安装路由配置

1.安装路由 yarn add vue-router@4

2.在src文件夹下单独创建一个router文件夹,router文件夹下创建index.js文件 index.js代码如下,这里采用的是hash路由

import { createRouter, createWebHashHistory } from 'vue-router'
export const routes = [
    {
        path:'/home',
        name:'home',
        component:() => import('@/views/Home/index.vue'),
        meta:{
          index:1,
          title: '首页'
        }
    },
    //这里redirect 表示重定向到home页面
    {
      path: '/',
      redirect: '/home',
      meta:{
        title: '首页'
      }
    }
]
const router = createRouter({
    // 使用hash(createWebHashHistory)模式
    // (createWebHistory是HTML5历史模式,支持SEO)
    history: createWebHashHistory(),
    routes
})

export default router

3.在main.js中引入router并且使用

 #配置根路径 /@ 

1.在vite.config.js文件中代码如下

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'; 
import postcssPxToViewport from 'postcss-px-to-viewport';

//记得一定要引入path模块

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
    },
  },
})

2.在使用中 @/没有提示的话 在根目录下创建jsconfing.json文件  配置代码如下,如果还是没有提示重新启动编辑器即可!!

{
  "compilerOptions": {
      "target": "ES6",
      "module": "commonjs",
      "allowSyntheticDefaultImports": true,
      "baseUrl": "./",
      "paths": {
        "@/*": ["src/*"]
      }
  },
  "exclude": [
      "node_modules"
  ]
}

#引入vant4组件库

官方文档:Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.

1.通过yarn安装vant

yarn add vant

2.这里用到了unplugin-vue-components 插件  通过yarn安装如下

yarn add unplugin-vue-components -D

3.在vite.config.js文件中代码如下  然后看效果!!!!!

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path';
//下面两行必须引入 否则vant样式不生效
import Components from 'unplugin-vue-components/vite';
import { VantResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    Components({
      resolvers: [VantResolver()],
    }),
  ],
})

 #使用pinia

1.通过yarn安装pinia

yarn add pinia

2.在根目录下创建store文件夹 然后分别创建index.js和user.js 代码参考如下

//index.js文件中
import { createPinia } from "pinia";

const pinia = createPinia()

export default pinia

//然后要引入到 main.js文件中
import router from '@/router/index'
import pinia from '@/store/index'

const app = createApp(App)
app.use(router).use(pinia).mount('#app')
// store/user.js代码如下
import { defineStore } from 'pinia'

const useUser = defineStore('user',{
    state:()=>({
      userName:'admin',
      userId:1,
    })
})
export default useUser

3.在页面中使用案例

<script setup>

import useUser from '@/store/user'
const userInfo = useUser()
console.log(userInfo.userName,userInfo.userId) //admin 1
//可以直接修改结果 刷新页面会丢失 如果需要持久化数据请参考pinia做持久化处理 例如:
userInfo.userName = '张三'
userInfo.userId = 2
console.log(userInfo.userName,userInfo.userId) //张三 2

</script>

以上就是一些h5项目的简单搭配啦 希望大家都能配置成功 本文暂时没用到TypeScript!!

  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!对于使用 Vue 3、TypeScript 和 Vite搭建项目,并结合 Pinia 进行状态管理,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了 Node.js 和 npm(或者使用 yarn)。 2. 创建一个新的项目文件夹,并进入该文件夹。 3. 在终端中运行以下命令来初始化一个新的 Vue 3 项目: ``` npm init vite@latest ``` 在初始化过程中,选择使用 Vue 3、TypeScript 和默认配置。 4. 进入项目文件夹并安装依赖: ``` cd <project-folder> npm install ``` 5. 接下来,安装 Pinia: ``` npm install pinia ``` 6. 在 `src` 目录下创建一个 `store` 文件夹,并在其中创建名为 `index.ts` 的文件。 7. 在 `index.ts` 中编写你的 Pinia store。例如,你可以创建一个名为 `counter` 的 store,并且在其中定义一个状态和一些操作: ```typescript import { defineStore } from 'pinia'; export const useCounterStore = defineStore('counter', { state: () => ({ count: 0, }), actions: { increment() { this.count++; }, decrement() { this.count--; }, }, }); ``` 8. 在应用的入口文件 `main.ts` 中导入并使用 Pinia: ```typescript import { createApp } from 'vue'; import { createPinia } from 'pinia'; import App from './App.vue'; const app = createApp(App); const pinia = createPinia(); app.use(pinia); app.mount('#app'); ``` 9. 在组件中使用 Pinia store。在你的 Vue 组件中,可以使用 `useStore` 函数来访问 Pinia store: ```typescript import { useCounterStore } from '../store'; export default { setup() { const counterStore = useCounterStore(); return { counterStore, }; }, }; ``` 10. 最后,你可以在组件中使用 `counterStore` 来访问状态和操作: ```vue <template> <div> <p>{{ counterStore.count }}</p> <button @click="counterStore.increment()">Increment</button> <button @click="counterStore.decrement()">Decrement</button> </div> </template> <script> import { useCounterStore } from '../store'; export default { setup() { const counterStore = useCounterStore(); return { counterStore, }; }, }; </script> ``` 这样,你就可以使用 Vue 3、TypeScript、Vite 和 Pinia 搭建一个基本的项目并进行状态管理了。希望对你有帮助!如果还有其他问题,请随时问我。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值