#安装

下载安装nodejs 10

pull git
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install

#运行

假数据环境(热更新 不生成文件)

npm run dummy

开发环境(热更新 不生成文件)

npm run dev

打包前检查(生成文件,不转换路径)

npm run preprod

打包(生成文件,转换路径)

npm run prod

#文件结构

|-strongVue //项目文件夹
 |-.git //git配置
 |-build //打包配置(必须)
  |-alias.js//路径缩写
  |-bundle.js//依赖生成规则
  |-config.js//全局常量配置
  |-external.js//外部文件声明
  |-loader.js//文件加工规则
  |-webpack.config.base.js//全局打包配置
  |-webpack.config.dev.js//dev打包配置
  |-webpack.config.dummy.js//dummy打包配置
  |-webpack.config.preprod.js//preprod打包配置
  |-webpack.config.prod.js//prod打包配置
 |-dist //打包生成文件
 |-node_modules //nodejs库
 |-src //开发源文件(必须)
  |-assets //共用静态文件(必须)
   |-icon //全局矢量图标
   |-images //全局图片
   |-style//全局样式库
   |-dummy.js//dummy入口
   |-dummyList.js//dummy文件列表(自动生成)
  |-component //控件(必须)
  |-dummy //假数据(必须)
  |-subProject //页面(每个项目开一个文件夹)(必须)
   |-[projectName] //子项目(必须)
    |-control //control文件夹
     |-[controlName].vue //control文件
    |-store //store文件夹
     |-store.js //store入口
     |-[storeName].js //store文件
    |-images //项目图片
    |-index.js //子项目入口(必须)
    |-router.js //子项目路由
    |-style.scss //子项目全局scss
    |-template.vue //子项目外框
  |-util //工具库
 |-template //主模板,图标(必须)
 |-.babelrc //babel配置(必须)
 |-.editorconfig //编辑器配置,可以忽略
 |-.eslintrc //格式检查配置(必须)
 |-.gitattributes //git属性文件,可以忽略
 |-.gitignore //上传忽略文件
 |-dummyList.js //自动获取dummy路径,生成dummyList.json(必须)
 |-filelist.js //自动获取文件路径(必须)
 |-package-lock.json //nodejs库下载路径,可以忽略
 |-package.json //nodejs配置(必须)
 |-postcss.config.js //postcss配置(必须)
 |-README.md //说明文档
 |-webpack.config.js //webpack入口(必须)

#开发流程

##创建子项目

src/subProject/目录下创建子项目文件夹, 可从index文件夹复制或自行配置,

##创建命令

package.json 中添加script, 可参考devP1/dummyP1/preprodP1/buildP1, 分别添加对应打包命令, 将--project值改成对应子项目名,

##创建假数据

获取后台API返回格式, src/dummy/中添加mock data, 每api一个, 可参考homepage@getAllCitys.js

##创建数据模型

按需求模块才分, src/subProject/[projectName]/store/中各模块添加一个js, 并合并至src/subProject/[projectName]/store/store.js, 可参考src/subProject/index/store/store.js和src/page/index/store/user_ST.js,

##创建UI模块

按设计需求, 抽取重用率高的视觉交互元素, src/component/中每模块创建一个文件夹, vue及scss参考src/component/vuextest_CP/*.*

##创建工具库

从开发中抽取高频操作或高复杂度操作, 在src/util/中, 按功能组织成库, 可参考src/util/request_UT.js

##创建router及control(仅单页面,多页面应用每页为一个子项目)

src/subProject/[projectName]/control/中, 每一页添加一个control, 可参考src/subProject/index/control/home_CT.vue, 按需求在src/subProject/[projectName]/route.js中设置路由, 可参考src/subProject/index/route.js

##页面组织

按设计需求使用component组织页面, 按业务需求调用API, 并将数据存放于Store, 从Store将数据分发至各component


#开发规范

##html

统一使用VUE,
引用统一使用双对路径(webpack会根据环境自动转换绝对路经),
注释尽可能齐全(打生产包时会自动去掉)
可以通过eslint自动检查

##js

尽量使用ES6+,
control和component入口在vue文件内,
使用require或import引入依赖,
统一使用双对路径,
注意模块拆分封装,
注释尽可能齐全,
可以通过eslint自动检查,

##css

统一使用scss,
引用统一使用双对路径
control和component入口在vue文件内,
使用@import引入依赖,
一般无需处理兼容性(posscss会自动处理),
无需处理自适应(参考src/subProject/index/template自动处理自适应),
长度单位一般用px,
注意模块拆分封装,
注释尽可能齐全,
可以通过eslint自动检查,

##control

命名末尾统一‘_CT’,
按设计需求组织component,
按业务需求组织API及页面逻辑,
组织store缓存并分发,
注意拆分component,

##component

命名末尾统一‘_CP’,
按设计需求提取共性,
明确出入口数据需求,
内部自闭,
禁止使用vueX,
保持代码洁净,可重用可迁移

##store

命名末尾统一‘_ST’,
按业务需求组织前端数据模型,
注意模块拆分,

##util

命名末尾统一‘_UT’,
注意归纳逻辑共性,
纯函数,禁止操作UI,
可重用可迁移

##dummy

必须与后端API返回格式相符,
以API名命名

##icon

尽可能使用矢量图标,
使用fontsize控制大小,
color控制颜色,
使用方法参考src/assets/icon/demo_index.html

##image

可跨项目使用图片放于src/assets/images/,
项目内部使用放于src/subProject/[projectName]/images/
命名尽量易识别
打包时会自动压缩图片