vite + vue3 + element-plus + axios + vueRouter + vuex + scss 搭建项目

简介: 如果需要使用状态管理工具,那个在src下面创建一个store文件夹,然后里面写vuex的配置,我这里使用的是模块,模块里面的内容和vuex3是一样的,调用方式也是一样的

准备工作


1.先搭建一个vue工程,这里有两种办法,一种是使用vue-cli ,另一种是使用vite(一种新的构建工具),具体搭建 传送门


2.搭建好项目后,我们就可以安装对应的库了,这里需要安装以下的这些库:


  • npm install --save axios 这个库不需要说使用next版本,vue升级和发起http请求没有直接的关系,所以axios不用说要不要升级安装 axios官网
  • npm install element-plus --save 这个库是element 团队针对vue3而专门开发的库,对于vue3的库,除了elment-plus外,还有ant-design 等 element-plus 官网
  • npm install vue-router@4 这个是vue router 专门的库,现在还是带测试的版本,但是如果需要在vue3中使用路由,那么需要使用这个库, 官网
  • npm install sass -D 这个是sass 的库,这里为啥不需要安装sass--loader 或者 style-loader 或者 node-sass 呢? 这个在设计的时候,vue3 的缔造者 在设计vue 的时候已经考虑过这件事情,vite 这个构建工具里面集成了scss, less ,stylus 等, 原话如下 That said, Vite does provide built-in support for .scss, .sass, .less, .styl and .stylus files. There is no need to install Vite-specific plugins for them, but the corresponding pre-processor itself must be installed as a peer dependency: vite 的官网
  • npm install vuex@next --save 这个是vuex的库,如果需要使用则需要安装这个库, vuex官网


最后我的package.json 的情况如下:


20210107172744638.png


项目编写


在项目编写阶段,由于本人现在也是在体验vue3的阶段,下面可能也会有理解错误的地方,还请大家多多指教


配置vue的环境


直接在根目录建立vite.config.js,里面的常用配置如下:


const path = require('path')
export default function () {
    return {
        // 代理,最重要,其他的都可以有默认配置
        proxy: {
            '/api': {
                target: 'http://localhost:9011',
                changeOrigin: true,
            }
        },
        // 入口
        entry: 'index.html',
        // 出口
        outDir: './../public/html',
        // 打包后的跟路径
        base: '/',
        // 输出的静态资源的文件夹名称
        assetsDir: 'assets',
        // 是否开启ssr服务断渲染
        ssr: false,
        // 重命名路径  path.resolve(__dirname, './src')
        alias: {
            '/@/': path.resolve(__dirname, './src')
        },
        // 端口
        port: 3002,
        // 是否自动开启浏览器
        open: false,
        // 开启控制台输出日志
        silent: false,
        // 那个包不需要打包
         optimizeDeps: {
            exclude: ['element-plus']
        },
        // css预设的配置
        cssPreprocessOptions: {
            scss: {
                additionalData: '@import "style/var.scss";', // 添加公共样式
            },
        }
    }
}


详细配置


起步的main.js


创建一个vue的实例,导入element-plus, 导入vue-router,


或者vuex,但是这里都需要通过createApp链式调用来使用插件


import {createApp} from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus';
import '../style/index.scss';
import 'element-plus/lib/theme-chalk/index.css';
import router from "./router";
import vuex from "./vuex";
createApp(App).use(router).use(ElementPlus).use(vuex).mount('#app')


创建路由


在src文件夹下面创建router文件夹,里面配置vue的路由


import {createRouter, createWebHistory} from 'vue-router';
import {routes} from "./routes";
const router = createRouter({
    history: createWebHistory(), // 路由的history模式
    routes, // 导入路由的配置, 和vue2里面的路由一样
})
export default router;
//注意: 在.vue组件中如果需要使用router,则需要导入useRouter这个方法,需要使用route,则需要导入,useRoute这个方法


是否需要状态管理工具


如果需要使用状态管理工具,那个在src下面创建一个store文件夹,然后里面写vuex的配置,我这里使用的是模块,模块里面的内容和vuex3是一样的,调用方式也是一样的


import {createStore} from 'vuex'
import userModule from "./userModule";
export default createStore({
    modules: {
        userModule: userModule,
    }
})
//模块例子
export default {
    namespaced: true,
    state: {
        isLoading: false,
        data: null,
    },
    mutations: {
        // 设置是否正在加载
        setIsLoading(state, payload) {
            state.isLoading = payload;
        },
        // 设置用户数据
        setData(state, payload) {
            state.data = payload
        }
    },
    actions: {
        // 登录
        async login({commit}, {loginId, loginPwd}) {
            commit('setIsLoading', true);
            const r = await login(loginId, loginPwd)
            commit('setData', r);
            commit('setIsLoading', false);
            return r;
        },
    }
}
// 注意: 如果在.vue组件中需要使用store,需要导入 userStore的这个方法
// 例如:在vue的setup函数中使用
import {useStore} from "vuex";
import {computed} from "vue";
import {useRouter} from "vue-router";
export default {
  setup() {
    const store = useStore();
    const router = useRouter();
    const loginOut = () => {
      store.dispatch('userModule/loginOut');
      router.push('/login')
    }
    return {
      isLoading: computed(() => store.state.userModule.isLoading),
      data: computed(() => store.state.userModule.data),
      loginOut,
    }
  }
}


直接撸代码


对于撸代码的话,和vue2里面的差不多,只是vue3里面增加了compositionAPI 里面有比较大的改动,在写代码的时候,难免会有磕磕碰碰,祝愿大家在写代码的时候,写的都对。


这篇文章是基于本人想实现一个图片的网站,后台使用node,前台使用vue3,作为自己的练手项目,毕竟公司里面现在使用vue3对自己也哪方面都不好。 有兴趣的可以看看 项目地址 演示地址

相关文章
|
2月前
|
JavaScript 数据可视化
vue-cli学习一:vue脚手架的 vue-cli2和vue-cli3版本 创建vue项目,vue的初始化详解
这篇文章介绍了如何使用vue-cli 2和3版本来创建Vue项目,并详细说明了两者之间的主要区别。
98 5
vue-cli学习一:vue脚手架的 vue-cli2和vue-cli3版本 创建vue项目,vue的初始化详解
|
2月前
|
JavaScript 容器
乾坤qiankun框架搭建 主应用为vue3的项目。
乾坤qiankun框架搭建 主应用为vue3的项目。
160 2
|
2月前
|
JavaScript
Vue CLi脚手架创建第一个VUE项目
Vue CLi脚手架创建第一个VUE项目
36 3
|
1月前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
18天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
2月前
|
缓存 JavaScript 搜索推荐
|
2月前
|
JavaScript 数据可视化
vue-cli学习二:vue-cli3版本 创建vue项目后,Runtime-Compiler和Runtime-only两个模式详解;vue项目管理器;配置文件的配置在哪,以及如何配置
这篇文章详细介绍了Vue CLI 3版本创建项目时的Runtime-Compiler和Runtime-only两种模式的区别、Vue程序的运行过程、render函数的使用、eslint的关闭方法,以及Vue CLI 2和3版本配置文件的不同和脚手架3版本创建项目的配置文件配置方法。
55 3
vue-cli学习二:vue-cli3版本 创建vue项目后,Runtime-Compiler和Runtime-only两个模式详解;vue项目管理器;配置文件的配置在哪,以及如何配置
|
29天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
45 2
|
2月前
|
JavaScript
如何在 Vue 项目中选择合适的模块格式
【10月更文挑战第20天】选择合适的模块格式需要综合考虑多个因素,没有一种绝对正确的选择。需要根据项目的具体情况进行权衡和分析。在实际选择过程中,要保持灵活性,根据项目的发展和变化适时调整模块格式。
21 7
|
1月前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。