vue+element+vuetify+各种插件搭建后台管理系统

页面预览.png

the_technology_practice

(注:主要目的在于拆解大佬项目,尽最大限度的收归己用。记录下自己在开发过程中遇到的问题,在该项目中进行复现、总结、积累、储备新技术、新的技术点。)
该项目目前在GitHub、Coding有相应代码仓库,如果想看到全部代码,请关注下方公众号或添加个人微信获得权限,共同进步哈,在每周末闲暇时间会做更新,目前界面较少,基本功能框架已搭建完毕,Router、Vuex、Axios、I18n等均已配置,目前有登录页、欢迎页、测试侧边导航栏、顶部导航栏预留、animate.css使用等,具体内容如何建设思考ing。

用于实践各种技术、知识点。即认知盲区的排除之用。基于vue-cli3.0以及vuetify框架搭建该项目。(在开发过程中,混入了element框架,目前未发现不合理之处,目前思路,在该系统内依靠element与vuetify搭建两套方案)

vue/cli脚手架工具:

通过@vue/cli + @vue/cli-service-gloabal 快速开始零配置原型开发。

查阅资料

vuetify官方文档:vuetify官方文档
vue-cli官方文档:vue-cli官方文档

项目创建过程记录:

  1. 全局安装 @vue/cli

     npm install -g @vue/cli (全局安装最新版本 v4.0.5)  
     a. 是否使用了国内的淘宝镜像 cnpm ,未确定(安装过程较为缓慢,二十分钟左右,下次尝试 cnpm install -g @vue/cli,切换为淘宝镜像源后好了)。  
    
  2. 通过 vue create + '项目名' 来创建项目

     a.选择babel、eslint项(后面再处理eslint配置,十分钟左右),项目初始化成功。  
     b.键入命令 vue --version 查看版本。  
     c.安装vuetify框架(1.命令安装 vue add vuetify,2.Vue UI可视化终端安装。本次选用第二种方式。)  
         i.  键入命令 vue ui  
         ii. 安装 vue-cli-plugin-vuetify 插件(同时安装 vue-router vuex)  
    
  3. 项目启动后无热更新功能(百度得知,重新安装vue/cli)

  4. router.js里的children必须为数组 [].

  5. v-snotify使用注意事项:

     a. npm 安装该组件  
     b. 在main.js里注册引用  
     c. 在主vue界面插入组件模板 <vue-snotify></vue-snotify>  
     d. 使用:this.$snotify.success("");
     官方文档:([v-snotify详细说明](https://artemsky.github.io/vue-snotify/documentation/installation.html "v-snotify详细说明"))  
    
  6. 粒子特效插件 vue-particles('详见登录界面')

     a.npm安装插件 npm install vue-particles --save-dev  
     b.在main.js中使用                                                                                                                                                                                                                                                                                                                        
         import VueParticles from 'vue-particles'  
         Vue.use(VueParticles)  
    
  7. 代码片段植入-------------------使用vscode-ide自定义vue组件的模板,快速新建单页面.vue文件结构

     a. 在ide中  选择 ‘文件’ -> ‘首选项’ -> ‘用户代码片段’   
     b. 此时会弹出一个搜索框,然后输入vue,回车,就会进入一个名为‘vue.json’的文件  
     c. 将以下代码 复制 粘贴后 ok..  
         (代码片段详见  ‘the_technology_practice\src\assets\Snippets\TheCodeExample\TemplateCode\templateCode.md’)  
    
  8. 在main.js文件中

     引入css文件('在indx.html文件通过link方式引不进去,报错,请求方式变成了text/html ')  
    
  9. 重复点击左侧同一导航边栏时,控制台报错:_name: "NavigationDuplicated", name: "NavigationDuplicated"

     出现原因:因为 vue-router >= 3.1以后,回调形式改成了promise api,返回的是promise对象,如果没有捕获到错误,便会出现如题错误    
     解决方法:  
         a. 在router.js文件内添加如下代码  
             const originalPush = VueRouter.prototype.push;  
             VueRouter.prototype.push = function push(location) {  
                 return originalPush.call(this, location).catch(err => err);  
             };  
             ('该方法试验后,可行')    
    
         b. 在使用this.$router.push时:  
             this.$router.push(route, () => {}, (e) => {  
                 console.log('输出报错',e)   
             })  
             或者  
             this.$router.push(route).catch(err => {  
                 console.log('输出报错',err)  
             })  
    
  10. vuex的使用

    vuex:   是专门为vue.js应用设计的全局状态管理架构,统一管理和维护各个vue组件的可变化状态,你可以将之理解为vue组件里的某些data  
        主要涉及以下五大核心属性:  
            i:     state       基本数据  
            ii:    getters     从基本数据派生的数据  
            iii:   mutations   提交更改数据的方法,同步  
            iv:    actions     类似装饰器,包裹mutations使之可以异步  
            v:     modules     模块化vuex  
        a. 在根文件main.js中  
            import store from './store'  
                创建vue实例,并将store注册在该实例内  
    
            i.  
            const app = new Vue({  
                store  
            })  
                将该实例挂载到Dom上  
            app.$mount('#app')  
    
            ii.  
            new Vue({  
                store  
            }).$mount('#app')  
        b. 在各组件中获取及修改  
            获取:this.$store.state.xxx  
            修改:  
                通过 this.$store.commit('Mutations内修改相应变量的方法',msg->需要修改后的新值)  
                Mutations内修改相应变量的方法共接收两个参数:第一个是state,第二个是需要修改的msg  
                接收state用于获取变量:state.xxx = msg  
                over....  
    
  11. 在根目录创建util工具类文件夹,用于存放各类常用js方法

    a.函数的防抖与节流 _ debounce.js  
        鉴于抛出时使用的是 export const Debounce,所以引用时使用 import {Debounce} from '@/util/dedounce.js'  
        over...  
    
  12. 在构建首次进入页面的路由时,出现以下报错

    [vue-router] Named Route 'XXX' has a default child route.  
    说明:因为一级路由设置了默认的子路由,实际访问的是默认的子路由,所以导致以上vue警告即报错  
    解决方法: 将一级路由的name属性注释掉   ok...  
    
  13. 按照第3项引入vuetify的方式,引入elementui库,会出现模块丢失的错误

    出现原因:因为在可视化终端引入elementUI的过程中,修改了app.vue文件  
    需改回原样  
        需注意:    根元素必须是v-app  
    
    <!--   
    
    
        <template>  
            <v-app id="app">  
                <router-view></router-view>  
            </v-app>  
        </template>  
    
        <script>  
            export default {  
                name: 'app'  
            }  
        </script>  
    
    
        -->  
    
  14. 如果数组的数据已经发生改变,但是页面效果未实现 数据变 则 页面变 的效果,那么采取以下方式解决

    第一步:在所在单页应用中引入vue  
        ‘import Vue from vue’  
    第二步:  
        处理数据时,加入一行代码  
        Vue.set('发生改变的数组','[需要修改的索引值]','发生改变的数组[需要修改的索引值]')  
        例如:Vue.set(this.List,[1],this.List[1])  
    
  15. 判断一个值是否为数值型

        value => parseFloat(value).toString() != "NaN"  
    
Someday.png

Hold The Faith . Forever!

We can find a way .
Someday .
A path to a new world
And maybe
Maybe its just the begnning after all

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。