Vue 新手开发项目 以及 基于 Vue cli 项目最佳实践(二)项目篇

没创建好项目的同学,请看上一篇文章

《Vue 新手开发项目 以及 基于 Vue cli 项目最佳实践(一)基础篇》

本章将按照本人总结的经验,将项目文件结构改造,符合多人协作,个人思考

1. assets (静态文件)

image
├── css // 样式文件夹
│ ├── atom.less // 原子类文件:便于微调样式,例如:.g-ml10 {margin-left: 10px;}
│ ├── global.less // 全局样式
│ └── reboot.less // 样式初始化
└── images // 图片文件夹
  1. atom.less
/**
 * 原子类
 * 主要的作用是 便于css样式的微调
 */

// 上间距
.g-mt10 {
  margin-top: 10px;
}
.g-mt20 {
  margin-top: 20px;
}
.g-mt30 {
  margin-top: 30px;
}
.g-mt40 {
  margin-top: 40px;
}
// 右间距
.g-mr10 {
  margin-right: 10px;
}
.g-mr20 {
  margin-right: 20px;
}
.g-mr30 {
  margin-right: 30px;
}
.g-mr40 {
  margin-right: 40px;
}
// 下间距
.g-mb10 {
  margin-bottom: 10px;
}
.g-mb20 {
  margin-bottom: 20px;
}
.g-mb30 {
  margin-bottom: 30px;
}
.g-mb40 {
  margin-bottom: 40px;
}
// 左间距
.g-ml10 {
  margin-left: 10px;
}
.g-ml20 {
  margin-left: 20px;
}
.g-ml30 {
  margin-left: 30px;
}
.g-ml40 {
  margin-left: 40px;
}

// 上内边距
.g-pt10 {
  padding-top: 10px;
}
.g-pt20 {
  padding-top: 20px;
}
.g-pt30 {
  padding-top: 30px;
}
.g-pt40 {
  padding-top: 40px;
}
// 下内边距
.g-pb10 {
  padding-bottom: 10px;
}
.g-pb20 {
  padding-bottom: 20px;
}
.g-pb30 {
  padding-bottom: 30px;
}
.g-pb40 {
  padding-bottom: 40px;
}
// 左内边距
.g-pl10 {
  padding-left: 10px;
}
.g-pl20 {
  padding-left: 20px;
}
.g-pl30 {
  padding-left: 30px;
}
.g-pl40 {
  padding-left: 40px;
}

// 浮动
.g-fl {
  float: left;
}
.g-fr {
  float: right;
}

//字号
.g-ft12 {
  font-size: 12px;
}
.g-ft13 {
  font-size: 13px;
}
.g-ft14 {
  font-size: 14px;
}
.g-ft15 {
  font-size: 15px;
}
.g-ft16 {
  font-size: 16px;
}
.g-ft18 {
  font-size: 18px;
}
.g-ft22 {
  font-size: 22px;
}
.g-ft24 {
  font-size: 24px;
}
.g-ft28 {
  font-size: 28px;
}

/* 加粗 */
.g-fw {
  font-weight: 700;
}

.g-w100 {
  width: 100px;
}
.g-w340 {
  width: 340px;
}
.g-w400 {
  width: 400px;
}
.g-w500 {
  width: 500px;
}
.g-w600 {
  width: 600px;
}
// 分割线
.g-bottom-line {
  border-bottom: 1px solid #f0f1f2;
}
// 阴影
.g-shadow {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
// cursor: point
.g-pointer {
  cursor: pointer;
}

.g-tip {
  color: @tip-color;
  font-size: 12px;
}

.g-text {
  color: @text-color;
  font-size: 14px;
}
  1. global.less
// flex布局
.g-flex-row-start {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
}
.g-flex-row-center {
  display: flex;
  flex-direction: row;
  align-items: center;
}
.g-flex-column-start {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.g-flex-column-center {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.g-flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}
.g-text-hidden {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: inline-block;
}

// 更改主色调
:global(.ant-form-item-label label) {
  color: @text-color;
}
// 下弹框样式
:global(.ant-dropdown-menu-item:hover) {
  background: @primary-color;
  color: #fff;
}
// 去掉弹框下边框
:global(.ant-modal-footer) {
  border: none;
}
.g-table {
  border-left: 1px solid @line-color;
  border-right: 1px solid @line-color;
  border-top: 1px solid @line-color;
}
.g-input-tip {
  font-size: 12px;
  color: @error-color;
  margin: 10px 0 0 0;
}

2. layouts (基础布局)

项目中导航栏,头部,底部等外框放入此处

3. mixin (常用的属性)

多个页面通用的属性,如下:

将其提取为 table.js,统一管理各个页面再引入,不用重复写

export default {
  data () {
    return {
      page: 1,
      pageSize: 10,
      tableData: []
    }
  }
}

4. plugins (外部引入插件统一管理)

image
├── plugins // 样式文件夹
│ ├── antd-ui.js // ant-design.vue 按需引入
│ ├── icons.js // 图标按需引入
│ └── moment.js // 时间格式化引入

1. UI组件库

ant-design-vue

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

推荐阅读更多精彩内容

  • 本文为2016年11月9日,『前端之巅』微信群在线分享活动总结整理而成,转载请在文章开头处注明来自『前端之巅』公众...
    尾尾阅读 10,362评论 3 32
  • 基于Vue的一些资料 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 element★...
    尝了又尝阅读 1,119评论 0 1
  • 粑粑难得这么早回来 我已经洗好澡澡啦 奶奶帮我洗衣服 妈妈在忙,所以粑粑今天轮到抱我啦 好开心,粑粑的手臂壮壮的 ...
    小YiYi阅读 116评论 0 0
  • [转]mac OS 下配置SVN忽略文件 svn ignore 的用法(忽略文件及目录)http://blog.c...
    beforerFE阅读 1,664评论 0 1
  • 众所周知,全球的三大赛事分别是奥运会、世界杯和世界一级方程式锦标赛(F1)。 看到这里或许有人就不明白了,奥运会和...
    足球前沿阅读 974评论 0 0