目录
方法一:create-vue
方法二 :Vite + Vue
Vite.config.ts配置
引入element-plus
安装
如何在项目中使用 Element Plus
完整引入
按需导入
vue3+vite中自动配置路由的神器:vite-plugin-pages
1. 安装
2、修改vite.config.js中配置
3. main.js中路由配置
方法一:create-vue
1.前提环境条件
 已安装 16.0 或更高版本的 Node.js
 使用以下命令查看node版本:
node -v2.创建一个Vue应用
执行:npm init vue@latest,这一指令将会安装并执行 create-vue
npm init vue@latest
Manually select features,手动选择
我的选择:
-         less 
  -         ESLint + Standard config 
    -         Lint on save 
      - In dedicated config files(将配置文件放在单独文件中)
 
 
-         Lint on save 
      
 
-         ESLint + Standard config 
    

方法二 :Vite + Vue
npm create vite@latestnpm create vite@latest 命令是用来借助 Vite 构建工具快速生成一个新的前端项目。
Vite 采用原生 ES 模块导入方式,相比传统的打包工具,启动开发服务器的速度要快得多。

其他
禁用格式化插件prettier format on save,然后安装eslint,打开settings.json添加以下规则
 //实现自动格式化
    "editor.codeActionsOnSave": {
        "source.fixAll":true 
    },
 //关闭保存自动格式化
    "editor.formatOnSave": false,
 2.打开.eslintrc.cjs添加规则
rules: {
    'prettier/prettier': [
      'warn',
      {
        singleQuote: true, //单引号
        semi: false, //无分号
        printWidth: 80, //每行宽度至多80
        trailingComma: 'none', //不加对象|数组最后逗号
        endOfLine: 'auto' //换行符号不限制
      }
    ],
    //ESLint关注于规范
    'vue/multi-word-component-names': [
      'warn',
      {
        ignores: ['index'] //vue组件名称多单词组成(忽略index.vue)
      }
    ],
    'vue/no-setup-props-destructure': ['off'], //关闭props解构的校验
    'no-undef': 'error'
  }
Vite.config.ts配置(没测试)
1.配置和pinia,router,axios,ref,reactive引入等等
 2.配置代理
 3.配置.ts,.vue,.tsx等等文件别名
 4.配置antdV按需加载
 5.配置antdV主题色+全局引入less+全局颜色变量
 6.配置vue使用tsx写法
 7.配置测试环境保留打印
import { defineConfig, loadEnv } from 'vite'
import type { UserConfig, ConfigEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx' //tsx插件引入
import AutoImport from 'unplugin-auto-import/vite' //自动引入ref,reactive等等等
// 配置antd-v按需加载
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
// import path from 'path';
import { resolve, join } from 'path'
import { wrapperEnv } from './build/utils'
 
// defineConfig 工具函数,这样不用 jsdoc 注解也可以获取类型提示
export default defineConfig(({ command, mode }: ConfigEnv): UserConfig => {
  console.log(command, mode, '===')
  const root = process.cwd()
  const env = loadEnv(mode, root) // 环境变量对象
  console.log('环境变量------', env)
  console.log('文件路径( process.cwd())------', root)
  console.log('文件路径(dirname)------', __dirname + '/src')
  const { VITE_DROP_CONSOLE } = wrapperEnv(env)
 
  // // dev 独有配置
  return {
    root, //项目根目录(index.html 文件所在的位置) 默认: process.cwd()
    base: '/', //  开发或生产环境服务的公共基础路径:默认'/'   1、绝对 URL 路径名: /foo/;  2、完整的 URL: https://foo.com/; 3、空字符串或 ./(用于开发环境)
    publicDir: resolve(__dirname, './dist'), //默认'public'  作为静态资源服务的文件夹  (打包public文件夹会没有,里面得东西会直接编译在dist文件下)
    assetsInclude: resolve(__dirname, './src/assets'), // 静态资源处理
 
    // ******插件配置******
    plugins: [
      vue(),
      vueJsx(),
      AutoImport({
        imports: [
          'vue',
          'vue-router',
          'pinia',
          {
            axios: [
              ['default', 'axios'] // import { default as axios } from 'axios',
            ]
          }
        ],
        dts: 'types/auto-import.d.ts' //生成全局引入的文件
      }),
      Components({
        resolvers: [
          AntDesignVueResolver({
            importStyle: 'less' //修改antdv主题色
          })
        ]
      })
    ], //配置插件
    // ******开发服务器配置******
    server: {
      https: true, //(使用https)启用 TLS + HTTP/2。注意:当 server.proxy 选项 也被使用时,将会仅使用 TLS
      host: true, // 监听所有地址
      port: 8080, //指定开发服务器端口:默认3000
      open: true, //启动时自动在浏览器中打开
      cors: false, //为开发服务器配置 CORS
      proxy: {
        //配置自定义代理规则
        // 字符串简写写法
        '/jpi': 'http://192.168.1.97:4567',
        '/api': {
          target: 'http://192.168.1.97:108',
          changeOrigin: true, //是否跨域
          rewrite: path => path.replace(/^\/api/, '')
        }
      }
      // hmr: {
      //   overlay: false
      // }
    },
    // ******项目构建配置******
    build: {
      target: 'modules', //设置最终构建的浏览器兼容目标  //es2015(编译成es5) | modules
      outDir: 'dist', // 构建得包名  默认:dist
      assetsDir: 'assets', // 静态资源得存放路径文件名  assets
      sourcemap: false, //构建后是否生成 source map 文件
      brotliSize: false, // 启用/禁用 brotli 压缩大小报告。 禁用该功能可能会提高大型项目的构建性能
      minify: 'esbuild', // 项目压缩 :boolean | 'terser' | 'esbuild'
      chunkSizeWarningLimit: 1000, //chunk 大小警告的限制(以 kbs 为单位)默认:500
      cssTarget: 'chrome61' //防止 vite 将 rgba() 颜色转化为 #RGBA 十六进制符号的形式  (要兼容的场景是安卓微信中的 webview 时,它不支持 CSS 中的 #RGBA 十六进制颜色符号)
    },
    // ******resolver配置******
    resolve: {
      alias: {
        // 别名配置
        // 键必须以斜线开始和结束
        '@': resolve(__dirname, 'src'),
        components: resolve(__dirname, './src/components'),
        assets: resolve(__dirname, './src/assets'),
        '#': resolve(__dirname, 'types'),
        build: resolve(__dirname, 'build')
      }
    },
    // ******打印+debugger清除配置******
    // 测试环境保留打印
    esbuild: {
      pure: VITE_DROP_CONSOLE ? ['console.log', 'debugger'] : []
    },
 
    css: {
      // 全局变量+全局引入less+配置antdv主题色
      preprocessorOptions: {
        less: {
          javascriptEnabled: true,
          // 全局变量使用:@primary-color
          modifyVars: {
            'primary-color': '#1890ff', // 全局主色
            'link-color': ' #1890ff', // 链接色
            'success-color': ' #52c41a', // 成功色
            'warning-color': ' #faad14', // 警告色
            'error-color': ' #f5222d', // 错误色
            'font-size-base': ' 14px', // 主字号
            'heading-color': ' rgba(0, 0, 0, 0.85)', // 标题色
            'text-color': ' rgba(0, 0, 0, 0.65)', // 主文本色
            'text-color-secondary': ' rgba(0, 0, 0, 0.45)', // 次文本色
            'disabled-color': ' rgba(0, 0, 0, 0.25)', // 失效色
            'border-radius-base': ' 2px', // 组件/浮层圆角
            'border-color-base': ' #d9d9d9', // 边框色
            'box-shadow-base': ' 0 2px 8px rgba(0, 0, 0, 0.15)' // 浮层阴影
          }
        }
      }
    }
  }
})
 引入element-plus
Element-Plus官方网址
安装
npm install element-plus --save如何在项目中使用 Element Plus
完整引入
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')按需导入
您需要使用额外的插件来导入要使用的组件。
自动导入推荐
首先你需要安装unplugin-vue-components 和 unplugin-auto-import这两款插件
npm install -D unplugin-vue-components unplugin-auto-import然后把下列代码插入到你的 Vite 或 Webpack 的配置文件中
Vite
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
export default defineConfig({
  // ...
  plugins: [
    // ...
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})vue3+vite中自动配置路由的神器:vite-plugin-pages
1. 安装
npm install vite-plugin-pages2、修改vite.config.js中配置
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
import Pages from 'vite-plugin-pages' //自动导入路由插件
// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueDevTools(),
    Pages({
      dirs:[
        {dir:'src/views',baseRoute:''},
        {dir:'src/components',baseRoute:''}
      ] }), //自动导入路由插件配置
  ],
  
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
})
也可以选择其他配置
  plugins: [
    ...
      Pages({
      // 自动读取src/views下的vue文件,生成路由信息,默认路由路径'/‘
      dirs: [{ dir: "src/views", baseRoute: "/" }],
    })
  ]
2. 不将所有 components 目录下的 .vue 文件生成路由
    Pages({
      // 排除在外的目录,即不将所有 components 目录下的 .vue 文件生成路由
      exclude: ['**/components/*.vue'],
    }),3. main.js中路由配置
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
import { createRouter, createWebHashHistory } from "vue-router"
// 这里就是vite-plugin-pages生成的路由信息,正常使用即可
import routes from "virtual:generated-pages"
const router = createRouter({
  history: createWebHashHistory(),
  routes
})
const app = createApp(App)
app.use(ElementPlus)
app.use(createPinia())
app.use(router)
app.mount('#app')


















