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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351