Vue3 + Vite2 后台项目基本搭建

项目搭建

npm init vite-app
Project-name: <your-project-name>
Select a framework: 选择一个框架
Select a variant: 选择语言

Vite.config.js 配置(非必要,根据项目需求配置)

import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'

export default defineConfig(({ mode, command }) => {
  const env = loadEnv(mode, process.cwd())
  const { VITE_APP_ENV } = env
  return {
    base: VITE_APP_ENV === 'production' ? '/' : '/',
    plugins: createVitePlugins(env, command === 'build'),
    resolve: {
      // https://cn.vitejs.dev/config/#resolve-alias
      alias: { // 需配置才能使用~ / @导入文件
        // 设置路径
        '~': path.resolve(__dirname, './'), 
        // 设置别名
        '@': path.resolve(__dirname, './src'), 
      },
      // https://cn.vitejs.dev/config/#resolve-extensions
      extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
    },
    // vite 相关配置
    server: {
      port: 80,
      host: true,
      open: true,
      proxy: {
        // https://cn.vitejs.dev/config/#server-proxy
        '/dev-api': {
          target: 'http://localhost:8080',
          changeOrigin: true,
          rewrite: (p) => p.replace(/^\/dev-api/, ''),
        },
      },
    },
    //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
    css: {
      postcss: {
        plugins: [
          {
            postcssPlugin: 'internal:charset-removal',
            AtRule: {
              charset: (atRule) => {
                if (atRule.name === 'charset') {
                  atRule.remove()
                }
              },
            },
          },
        ],
      },
    },
    root:  './',
    entry: 'index.html', // 入口
    base: './', // 打包根路径
    publicDir: 'public', // 静态资源服务的文件夹
    ssr: false,  // 是否开启ssr服务断渲染
    esbuild: { // jsx 语法支持
      jsxFactory: 'h',
      jsxFragment: 'Fragment',
    },

    silent: false, // 开启控制台输出日志

    optimizeDeps: [ // 哪个第三方的包需要重新编译
      // exclude: ['axios', 'qs', 'vue', 'vuex']
    ],
    //编译
    build: {
      outDir: './build', // 打包文件放置目录
      assetsDir: 'static',  // 输出的静态资源的文件夹名称
      sourcemap: false, //构建后是否生成 source map 文件
      // 小于此阈值的导入或引用资源将内联为 base64 编码,以避免额外的 http 请求。设置为 0 可以完全禁用此项
      assetsInlineLimit: 4096,
      cssCodeSplit: true, //  禁用或者启用 CSS 代码拆分
      write: true, // 禁用或者启用将构建后的文件写入磁盘
      emptyOutDir: true,  //默认情况下,若 outDir 在 root 目录下,则 Vite 会在构建时清空该目录。
      brotliSize: true,  // 启用/禁用 brotli 压缩大小报告
      chunkSizeWarningLimit: 500, // chunk 大小警告的限制
      manifest: false, // 当设置为 true,构建后将会生成 manifest.json 文件
      rollupOptions: {  // 自定义底层的 Rollup 打包配置
        // 确保外部化处理那些你不想打包进库的依赖
        // external: ['vue', 'nf-tool'],
        // 输出配置
        output: {
          // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
          // globals: { vue: 'Vue', 'nf-tool': 'nfTool' },
          // 自定义输出文件名
          // chunkFileNames: 'static/js1/[name]-[hash].js',
          // entryFileNames: 'static/js2/[name]-[hash].js',
          // assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
          // brotliSize: false, // 不统计
          // target: 'esnext',
          // minify: 'esbuild' // 混淆器,terser 构建后文件体积更小
        },
      },
      // @rollup/plugin-commonjs 插件的选项
      commonjsOptions: {},
      // terser 构建后文件体积更小
      minify: 'terser',
      // 传递给 Terser 的更多 minify 选项。
      terserOptions: {
        compress: { drop_console: true, drop_debugger: true }, // 去除 console
      },
    },
  }
})

main.js

import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import router from './router'
import 'element-plus/lib/theme-chalk/index.css'
// 引入字体图标
import './assets/font/iconfont.css'
// 使用vuex
import store from './store'
// 引入mock
import { mockXHR } from '../mock'
if (process.env.NODE_ENV === 'development') {
  mockXHR()
}
const app = createApp(App)
// 全局组件
// import TkBadge from './components/Test'
// app.component('Test', Test)
// 全局方法挂载
// app.config.globalProperties.$methods = Methods
app.use(ElementPlus).use(router).use(store)
app.mount('#app')
Vue3是一个流行的前端框架,具有高效的渲染和响应能力。antd是一个基于Vue的UI组件库,提供了丰富的组件和样式。Vite是一个新的打包工具,具有更快的启动和热更新速度。 搭建一个后台项目,可以使用以下步骤: 1. 安装Node.js和npm,确保全局安装了@vue/cli。 2. 使用命令行工具创建一个新的Vue3项目vue create my-project。 3. 选择手动配置,并选择Babel,Router,CSS Pre-processors,ESLint和Linter / Formatter。 4. 安装antd:npm install ant-design-vue@next。 5. 在src/main.js中引入antd的样式和组件:import { createApp } from 'vue'; import App from './App.vue'; import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; 6. 在创建应用程序之前使用Antd组件:const app = createApp(App); app.use(Antd); app.mount('#app'); 7. 使用vite创建一个新的项目文件夹:mkdir my-project && cd my-project。 8. 在项目文件夹中初始化npm:npm init -y。 9. 安装vite:npm install vite。 10. 创建vite配置文件:npx create-vite。 11. 安装其他依赖:npm install axios vuex。 12. 在src/main.js中引入antd的样式和组件:import { createApp } from 'vue'; import App from './App.vue'; import Antd from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; 13. 在创建应用程序之前使用Antd组件:const app = createApp(App); app.use(Antd).use(router).use(store).mount('#app')。 14. 运行开发服务器:npm run dev。 这样,你就成功搭建了一个使用Vue3、antd和vite后台项目。你可以根据项目需求进行开发,并根据需要引入和使用更多的antd组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值