关于个人开源项目(vue app)的一些总结

项目地址

https://github.com/BYChoo/record

项目简介

此项目名叫:Record。是以Vue全家桶(vue,vue-router,vuex) + axios + express + mongodb技术栈开发的一个校园考勤网站,专门为老师定制的。网站目前实现了登录注册、日历、导入文件(csv)、考勤、导出缺勤名单等核心功能。

关于项目结构

刚开始着手做此项目的时候,考虑到项目本身并不复杂,以视图层来说撑死了也就六七个视图层,我就把所有视图层组件都放在components文件夹中,再在components文件夹中新建一个common文件夹来放置复用的组件。这对于小型项目来说并没有什么问题(like this)。但是考虑到此站往后可能会部署上线,为了方便维护,我还是花了些时间对整个项目结构进行了重整:

组件:新建一个views文件夹放置视图层的组件,如果每个视图层需要用到的子组件多的话,还可以以此视图层为核心建一个文件夹,在此文件夹中再建一个childrens文件夹放置子组件

复用组件:项目中凡是复用到的子组件统一放在components中

http请求:新建一个APIs文件夹,以视图层面为出发点创建每个视图层需要用到的.js文件

全局方法:新建一个utils文件夹,放置方法.js文件
静态资源:关于静态资源,基于vue-cil构建的项目中有两个可以放置静态资源的文件夹:static和src文件夹下的assets,放置在static文件夹中的静态资源是不会被webpack打包的,而src文件夹下的静态资源则会,该放哪还是酌情考虑吧

关于http请求

不知道大家有没有这样子写过http请求

// 这条http请求是请求xxx
this.$http.get('/api/demo')
.then((res) => {
// do something
})
.catch((err) => {
// throw err
})

这样写请求是没问题的,但如果这条http请求是需要多次被使用到呢?每次都要写这样一长串的代码未免有点不优雅了。针对这个问题,我决定采用把请求抽离出来,以每个视图层为每个.js文件,把每个http请求封装成函数然后导出,like this:


/**
* index.js
*/ const getCaledarDay = function(params) {
return new fetch({ // fetch是http请求实例
url: '/api/get_caledarDay',
method: 'get',
params
})
} export { getCaledarDay }; // 把函数导出 /**
* index.vue
*/ ...
import { getCaledarDay } from 'api/index.js'; // 引入函数
...

这样子写的话就能有效的规避了http请求复用的问题了

关于状态管理

关于数据状态管理一直是我开发Vue项目是都要考虑的问题,一般考虑是否要用vux的状态管理(vuex)都离不开这个考虑点:跨组件之间数据共享问题。如果跨组件之间需要共享到的数据多且庞大,那么直接vuex一把梭就好了,不要再考虑了。但如果跨组件之间共享数据不多(酌情考虑多的概念),那么可以通过父子组件间和非父子组件的prop、$emit、$on等事件来传值也是可以的。

vuex编译后的大小25kb

关于csv文件上传与导出功能

csv文件上传导出可以说是此项目最关键的点了。在开发过程csv文件上传过程中,我发现了几个可以解析csv文件的包:

  • node-csv
  • line-reader
  • fs

其中我采用了node-csv这个类库来开发,毕竟是node中专门来用解析csv文件的包。此外,我还用了formidable包来模拟解析前端上传的form表单,如果不这样做的话,前端post得csv文件会接受不到。有了formidablenode-csv开发起来就很美滋滋了。

导出csv文件部分,我采用了file-saver包来模拟csv文件的导出下载,怎么使用可以去github上翻阅,那里都写的很详细了。

关于个人开源项目(vue app)的一些总结的更多相关文章

  1. [ABP开源项目]--vue+vuex+vue-router+EF的权限管理系统

    好久没写文字了,当然大家也不期待嘛,反正看代码就行了. 演示网站 首先说下这个项目吧. 如标题一样是基于VUE+.NET开发的框架,也是群友一直吼吼吼要一个vue版本的ABP框架. 我们先来看看首页吧 ...

  2. Vue常用经典开源项目汇总参考-海量

    Vue常用经典开源项目汇总参考-海量 Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的 ...

  3. Vue开源项目汇总(史上最全)(转)

    目录 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 element ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 - 基于Vue和 ...

  4. 【Vue】转-Vue.js经典开源项目汇总

    版权声明:本文为EnweiTech原创文章,未经博主允许不得转载. https://blog.csdn.net/English0523/article/details/88694219 Vue是什么? ...

  5. 【前端】Vue.js经典开源项目汇总

    Vue.js经典开源项目汇总 原文链接:http://www.cnblogs.com/huyong/p/6517949.html Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) ...

  6. Vue.js经典开源项目汇总

    Vue.js经典开源项目汇总 原文链接:http://www.cnblogs.com/huyong/p/6517949.html Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) ...

  7. Vue.js经典开源项目汇总-前端参考资源

    Vue.js经典开源项目汇总 原文链接:http://www.cnblogs.com/huyong/p/6517949.html Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) ...

  8. Vue经典开源项目

    Vue常用的开源项目和插件库 UI组件 element ★34,784 - 饿了么出品的基于Vue2的web UI工具套件storybook ★33,503 - 响应式UI 开发及测试环境Vux ★1 ...

  9. 20 个新的且值得关注的 Vue 开源项目

    译者:前端小智作者:Nastassia Ovchinnikova来源:flatlogic.com 个人专栏 ES6 深入浅出已上线,深入ES6 ,通过案例学习掌握 ES6 中新特性一些使用技巧及原理, ...

随机推荐

  1. pandas模块篇(之二)

    今日内容概要 布尔选择器 索引 数据对齐 数据操作(增出改查) 算术方法 DataFrame(Excel表格数据) 布尔选择器 import numpy as np import pandas as ...

  2. Write Combining Buffer

    现代CPU使用了很多技术来降低对内存存取数据的延时,因为CPU执行的速度实在是太快了,在从内存存取数据的约120ns中,可以执行数百条指令. 其中多级的缓存架构就是为了减少这种延时,来提高CPU的利用 ...

  3. Docker-生成镜像、服务搭建(redis集群、kibana、运行项目jar包)、上传镜像至阿里云

    目录 生成自己的镜像 1.下载官方tomcat镜像 2.运行镜像后将webapp目录里新增文件(官方镜像是没有页面的 具体操作见) 3.使用docker ps -a 查看刚刚修改后的容器id 4.执行 ...

  4. 简单实现一个快速传输电子书到kindle的小项目

    前言 最近翻出来好久没有看的kindle,准备继续我的阅读之路.当然,也是因为发现了一个非常好的获取电子书资源的网站,又燃起了我的阅读兴趣. 然而,往kindle里传输电子书的方式一共有四种: 直接在 ...

  5. tensorflow源码解析之framework-graph

    目录 什么是graph 图构建辅助函数 graph_transfer_info 关系图 涉及的文件 迭代记录 1. 什么是graph graph是TF计算设计的载体,如果拿TF代码的执行和Java代码 ...

  6. 【译】.NET 6 网络改进

    原文 | Máňa Píchová 翻译 | 郑子铭 对于 .NET 的每个新版本,我们都希望发布一篇博客文章,重点介绍网络的一些变化和改进.在这篇文章中,我很高兴谈论 .NET 6 中的变化. 这篇 ...

  7. Spring-MyBatis的配置文件

    <?xml version="1.0" encoding="UTF8"?> <beans xmlns="http://www.spr ...

  8. el-upload用form的方式多文件上传的方法

    使用el-upload组件遇到的坑. 1.第一种感觉最好,首先多个文件是一个http请求,另外还可以传除文件外其他的参数,但是没有进度条了. 发送请求的部分没有注释的部分是我分装了调后台的api,注释 ...

  9. CVE-2017-12615漏洞复现附EXP

    CVE-2017-12615复现 0x00 漏洞介绍 漏洞编号: CVE-2017-12615 CVE-2017-12616 漏洞名称: CVE-2017-12615-远程代码执行漏洞 CVE-201 ...

  10. 【freertos】002-posix模拟器设计与cortex m3异常处理

    目录 前言 posix 标准接口层设计 模拟器的系统心跳 模拟器的task底层实质 模拟器的任务切换原理 cortex M3/M4异常处理 双堆栈指针 双操作模式 栈帧 EXC_RETURN 前言 如 ...