用到的技术
vue3.2+vite+ts+pinia
搭建项目
前言
vue3+vite 会比vue2+webpack的速度快很多;Vite 是一个轻量级的、速度极快的构建工具;
 vite官网
创建项目
npm create vite@latest
报错了:
 初始化失败 npm ERR! Could not install from “Files\nodejs\node_cache_npx\13480“ as it does
 出现问题的原因是node_cache的路径中存在空格
解决方案:
 npm config set prefix D:\Program Files\nodejs\node_global
 npm config set cache D:\Program Files\nodejs\node_cache
成功之后 再次执行上面的命令
 需要我们输入项目名、选择的技术vue、选择的语言ts
 输入之后,就成功创建了一个项目了;
按照提示 执行
npm i
运行
npm run dev
安装pinia
前言
Pinia :是新版的vuex,简化了vuex,效率更快,上手更快,推荐在vue3使用
 pinia官网
安装
npm install pinia
在src下新建store文件夹,在此文件夹下新建文件即可;
在main.ts中引入
import { createPinia } from 'pinia'
const app = createApp(App);
app.use(createPinia());
app.mount('#app');
参考链接
 https://www.jianshu.com/p/19de4e5556fa
安装elementplus
注意:element plus只适用于Vue3框架!
npm install element-plus --save
步骤二:在main.js中引入
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
const app = createApp(App);
app.use(ElementPlus);
app.mount('#app');
安装路由
npm install vue-router --save
新建route文件夹,新建index.ts
import { createRouter,createWebHistory,RouteRecordRaw } from "vue-router";
import { Nav } from '@/model/router';
const modules = import.meta.glob("../views/**/*.vue");
const navs: Nav[] = [
  {
    path: '/',
    name: 'demo',
    component: 'demo/Demo.vue'
  }
];
function navsToRouter (nav: Nav): RouteRecordRaw {
  return {
    ...nav,
    component: modules[`../views/${nav.component}`]
  };
}
function getRouter (): RouteRecordRaw[] {
  const routes: Array<RouteRecordRaw> = [];
  navs.map(nav => {
    return routes.push(navsToRouter(nav));
  });
  return routes
}
// 通过createRouter方法来创建一个路由 配置history模式
export default createRouter({
  routes: getRouter(),
  history:createWebHistory()
});
在main.js中引用index.js
import router from './router/index'
const app = createApp(App);
app.use(router);
app.mount('#app');
安装eslint
npm install --save-dev eslint eslint-plugin-vue
安装之后 执行
npx eslint --init

 自动生成.eslintrc.cjs
rules配置文档
配置lint指令
 在package.json的scripts添加指令
"lint":"eslint src/**/*.{js,jsx,vue,ts,tsx} --fix",
之后执行npm run lint 也可以自动修复eslint报错。
参考https://blog.csdn.net/qq_42345108/article/details/124386056
安装vite-plugin-eslint包
// 该包的作用是在vite运行时自动检测eslint规范,根据配置在终端显示未通过的校验代码
npm install vite-plugin-eslint -D
安装eslint-parser 及 @babel/core 包
// 该包的作用是允许eslint在babel转换的源代码上运行
npm install @babel/eslint-parser -D
安装sass
npm install --save-dev sass
vite.config.js
安装path
__dirname暴红 找不到名称“__dirname”
 解决办法:
npm install --save-dev @types/node
import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path';
import eslintPlugin from 'vite-plugin-eslint'
// https://vitejs.dev/config/
export default defineConfig({
    // 配置前端服务地址和端口
    server: {
      hmr: true,
      // 设置反向代理,跨域
      proxy: {
        '/api': {
          target: '后端地址',
          changeOrigin: true,
        },
      },
    },
    plugins: [
      vue(), 
      eslintPlugin({
        include: ['src/**/*.js', 'src/**/*.vue', 'src/*.js', 'src/*.vue'],
        exclude: ['./node_modules/**'],
      })
    ],
    // 打包配置
    build: {
        rollupOptions: {
          // Vite 将转而去抓取这些入口点 来检测需要预构建的依赖项
            input: {
                index: path.resolve(__dirname, 'index.html'),
                login: path.resolve(__dirname, 'login.html'),
            }, output: {
                chunkFileNames: 'static/js/[name]-[hash].js',
                entryFileNames: "static/js/[name]-[hash].js",
                assetFileNames: "static/[ext]/name-[hash].[ext]"
            }
        },
        emptyOutDir: true,
    },
    // 起个别名,在引用资源时,可以用‘@/资源路径’直接访问
    resolve: {
      alias: {
        '@': path.resolve(__dirname, './src'),
      },
    },
})
tsconfig.json
新增
"baseUrl": "./",
    "paths": {
      "@/*": ["src/*"]
    }
{
  "compilerOptions": {
    "target": "ESNext",
    "useDefineForClassFields": true,
    "module": "ESNext",
    "moduleResolution": "Node",
    "strict": true,
    "jsx": "preserve",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "esModuleInterop": true,
    "lib": ["ESNext", "DOM"],
    "skipLibCheck": true,
    "noEmit": true,
    "baseUrl": "./",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
  "references": [{ "path": "./tsconfig.node.json" }]
}



















