使用vite创建vue3项目模板

Posted 嘴巴嘟嘟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用vite创建vue3项目模板相关的知识,希望对你有一定的参考价值。

当你想独立创建一个vue项目的时候,并且无从下手的情况下,那么这么项目可以很好的解决此问题,里面包含了基本的工程目录,按文件夹分类并且提高效率。

那么开始创建我们的项目吧!
我们使用vite来创建,创建项目速度比较快

npm install -g create-vite-app //安装全局create-vite-app
create-vite-app vue3-vite   //使用工具create-vite-app创建项目名为vue3-vite的vue3项目
cd vue3-vite             //进入项目文件夹
npm install                 //初始化项目
npm run dev                 //运行项目

此时只是一个 vue3项目 ,如果需要其他自行下载并配置,此时的项目没有灵魂,我们需要配置一些东西


接下来我们需要下载组件

  1. 安装vue-router
yarn add vue-router@4.0.0-beta.6
  1. 配置vue-router
    在项目src目录下面新建router目录,然后添加index.js文件,添加以下内容
import { createRouter, createWebHashHistory } from "vue-router";
import Home from '../views/Home.vue'

/* async */
export const constantRouterMap = [
  { path: '/:catchAll(.*)', redirect: '/404' },
  {
    path: '/404', name: 'error404',
    meta: {
      title: 'Error 404'
    },
    component: () => import( /* webpackChunkName: "error404" */ "../views/errorPage/404.vue")
  },
]

const routes = [
  {
    path: "/",
    name: "Home",
    component: Home,
    children:[
      {
        path: "/Index",
        name: "index",
        component: () => import('../views/Index.vue')
      },
    ]
  },

  ...constantRouterMap
]
const router = createRouter({
  history: createWebHashHistory(),
  routes
});
export default router;
//在main.js中进行引入,并进行挂载注册到全局上

路由的基本使用规则 我们可以测试是否跳转路由,vue路由的教程

接下来我们继续安装vuex

       yarn add vuex@4.0.0-beta.4
       //或者
       yarn add vuex@next

配置vuex
在项目src目录下面新建store目录,并添加index.ts文件,添加以下内容

安装axios

yarn add axios

配置axios

import { createStore } from 'vuex'

export default createStore({
  state: {
    examine: null,
  },
  mutations: {
  },
  actions: {},
  modules: {}
})

配置好文件之后,如果你想要学习使用vuex 这里有教程 vuex的使用教程

如果想使用接口的话 我们继续安装 axios

yard add axios

我们需要完整版胚子axios 方面项目以各个界面调用接口很方便,模块化开发的好处,
我们需要在这三个地方配置一下请求和调用接口

首先是 config,js 这个配置为了后期直接写接口,不用为接口切换而烦恼

window.configs={
  'baseApi':"xxx",
}

接下来是 request.js , 全局处理 请求响应和请求拦截问题

import axios from 'axios'

const service = axios({
  baseURL:window.configs.baseApi,
  timeout:5000*60
})
service.interceptors.request.use(
  config => {
    config.headers['chainType'] = getChainType();

    config.headers['address'] = localStorage.getItem('connected_account');
    return config;
  },
  error => {
    return Promise.reject();
  }
);

service.interceptors.response.use(
  response => {
    if (response.status === 200) {
      let { data } = response;
      if (data.code === 500) {
       
      }
      return response.data;
    } else {
      Promise.reject();
    }
  },
  error => {
    if (error.code == 4001) {
    
    }
    return Promise.reject();
  }
);

export default service;

最后是api/request.js 前面个两个文件配置好,我们就可以使用接口,每个接口分开调用

import axios from 'axios'
import request from 'utils/request';
axios.defaults.timeout = 20000;

// 自定义方法
const doPost= (data) => {
  return request({
    url:"bbb",
    method:'post',
    data
  })
}
const doGet= (params) => {
  return request({
    url:"bbb",
    method:'get',
    params
  })
}
// 上传文件
const doImg = (data) => {
  return request({
    url: 'file/cccc',
    method: 'post',
    headers: { 'Content-Type': 'multipart/form-data' },
    data
  });
};

export {
  doGet,doPost,doImg
}

此时 我们 aixos 配置结束,
最后是配置我们的vite.config.js

import vue from '@vitejs/plugin-vue'
const path = require('path')

// vite.config.js # or vite.config.ts
console.log(path.resolve(__dirname, './src'))
module.exports = {
  plugins: [vue()],
  "resolve.alias": {
    // 键必须以斜线开始和结束
    '/@/': path.resolve(__dirname, './src'),
    "/@utils/": path.resolve(__dirname, "src/utils"),
    "/@api/": path.resolve(__dirname, "src/api"),
    "/@components/": path.resolve(__dirname, "src/components"),
  },

  // 打包后静态资源 js/css/image 存放目录,@default '_assets'
  assetsDir: '',

  //用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
  assetsDir: "assets",
  //默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变)
  filenameHashing: false,

  // 引入第三方的配置
  /* optimizeDeps: {
    include: ['moment', 'axios'],
  }, */
  hostname: '127.0.0.1',
  port: 3000,
  // 是否自动在浏览器打开
  open: true,
  // 是否开启 https
  https: false,
  // 服务端渲染
  ssr: false,
  /**
   * 在生产中服务时的基本公共路径。
   * @default '/'
   */
  base: './',
  /**
   * 与“根”相关的目录,构建输出将放在其中。如果目录存在,它将在构建之前被删除。
   * @default 'dist'
   */
  outDir: 'dist',
  // 反向代理,此处应该特别注意,网上很多教程是直接设置proxy,并没有向官网那样添加 server,可能会导致失败,vite官网:https://vitejs.dev/guide/features.html#async-chunk-loading-optimization
  server: {
    proxy: {
      '/api': {
        target: 'xxx',
        ws: true, // 是否启用websockets
        //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
        changeOrigin: true,
        rewrite: path => path.replace(/^\\/api/, '')
      }
    }
  }

}

以上是关于使用vite创建vue3项目模板的主要内容,如果未能解决你的问题,请参考以下文章

Vite+Vue3+Vant快速构建项目

Vue3 Vite 和 jest 测试没有模板编译器

vue3.0+vite+router搭建项目

tauri+vite+vue3开发环境下创建启动运行和打包发布

【笔记】使用Vite搭建Vue3(TypeScript版本)项目

vite2+ts+vue3项目创建(一)