Vue开发规范1.0
2019独角兽企业重金招聘Python工程师标准>>>
VUE开发规范-V1.0
前提条件
开发环境:Node 开发工具:推荐 WebStorm 同步工具:Git
推荐开发插件
- eslint (代码检测工具)
npm install -g eslint
- mock (模拟数据)
npm install mockjs --save-dev
注释细则
// 注释内容
表示解释,/** 注释内容 */
表示步骤说明注释加载代码行的上一行,不要加在代码水平的后面
删除不相关的注释
页面风格细则
同一水平线的组件,确保风格大致一直,比如:使用elementUI时,确保input、select等的size一致。
列表操作按钮,确保颜色有区分(推荐删除-红色,编辑-蓝色,查看-白色)
详情、编辑、新增页面,保存(或提交)按钮与返回(或取消)按钮颜色有区分(推荐保存-蓝色,返回-白色)
CSS细则
css用less写,.vue以局部css来写<style lang="less" scoped></style>只作用于当前vue文件,并写在当前页面底部。
遇到经常公用的,需写在全局 global.less 里面。
网页采用百度字蛛的方式,见 http://font-spider.org/
接口请求细则
所有接口编写之前请与后端约定好接口文档(接口名称、请求类型、请求字段、返回数据格式与字段)
使用axios进行接口请求,axios只使用get、post,不得使用其他请求类型,如有特殊情况,请与技术经理讨论后再决定
所有的接口需要在api.js中定义,不得直接写死在axios的url参数中
路由细则
1.路由间传递数据,只需要传递标识数据,再在子路由重新请求后台查询数据
2.路由跳转
From路由
# 跳转
this.storeMove({name: "departEdit",query: {"departId": this.infos.departId}
});
To路由
# 获取传递的参数,不支持对象
this.$route.query.departId
3.路由传参
:departId="departId"
父路由
<departDetails v-if="flag=='1'" :departId="departId"></departDetails>
子路由
props: {departId: String
},
axios使用方法
1、普通get请求
this.$axios({method: 'get',url: this.url,params: {...}
}).then(res => {...}).catch(err => {...this.$log('错误信息', err)})
注意:
- 使用 params: {}
2、普通post请求,后台没有@RequestBody
this.$axios({method: 'post',url: this.url,params: {...}
}).then(res => {...}).catch(err => {...this.$log('错误信息', err)})
注意
- 使用 params: {}
- 因为后台没有@RequestBody,则表示直接从params中读取数据
3、post传递json,后台有@RequestBody
this.$axios({method: 'post',url: this.url,data: {...},headers: {'content-type': 'application/json'}
}).then(res => {...}).catch(err => {...this.$log('错误信息', err)})
注意
- 使用 data: {}
- 追加headers -> 'content-type': 'application/json'
通用
代码要加注释
不要在页面写死url,统一提取出来到某个文件(如namespace.js)
公共资源提取出来:图片、颜色等
操作的时候加锁(调ajax),防止重复点击:查询不严格要求,增删改要写(防止重复操作)
ajax回调:微信端提示暂时都用alert(提取出来),PC端用饿了么的提示框,manager端用瞰聆的
- success判断code是否为0:为0代表成功,不为0失败,取res.desc作为提示,code为0时,如果要取data里面的数据,一定先要一层一层判空以避免空指针,如res.data && res.data.id。
- error代表网络请求失败,要给出提示“网络请求失败,请稍后再试!”,此时res为空。
每次改变搜索条件重新筛选的时候要记得把pageNo页码置为1
列表没有数据时要提示“暂无数据”,根据具体场景提示
不相关的内容不要写
需要解决的问题
UI的比较与选择
VUE全家桶
代码结构
├── index.html 入口页面├── build 构建脚本目录│ ├──build.js 生产环境构建(编译打包)脚本│ ├──check-versions.js 版本验证工具│ ├──utils.js 主要用来处理css类文件的loader│ ├──vue-loader.conf.js 处理vue中的样式│ ├── webpack.base.conf.js webpack基础配置│ ├── webpack.dev.conf.js webpack开发环境配置│ └── webpack.prod.conf.js webpack生产环境配置├── config 项目配置│ ├── dev.env.js 开发环境变量│ ├── index.js 项目配置文件│ ├── prod.env.js 生产环境变量│ └── test.env.js 测试环境变量├── dist 打包后的项目│ ├── html 静态问件│ ├── conf nginx配置文件│ └── 其他 nginx需要的文件├── node_modules 项目依赖模块 ├── src 项目源码目录 │ ├── main.js 入口js文件│ ├── app.vue 根组件│ ├── components 公共组件目录│ ├── assets 资源目录│ │ └── css 全局css文件│ │ └── font 字体│ │ └── less 全局less│ │ └── images 图片│ │ └── logo.png│ ├── router 前端路由配置│ │ └── index.js│ ├── mock 模拟数据文件│ │ └── register.js 模拟数据注册│ ├── pages 前端页面文件│ │ └── index.vue│ ├── plugin 插件文件│ │ └── axios 接口请求插件│ │ └── func 自定义方法插件集│ │ └── log 日志插件│ ├── vuex 应用级数据(state)│ │ └── store.js 分组数据存贮├── static 纯静态资源,不会被wabpack构建。
export代码
export default {// 名称name: 'index', // 组件components: {}, // 数据data() {return{}}, // 操作方法methods: {}, // 监听watch: {'checkboxModel': {}}, // 计算属性computed : {"val" : function() {return "123";}} // 创建之前 beforeCreate: function () {}, // 创建完成created: function () {}, // 挂载之前beforeMount: function () {}, // 挂载完成 mounted: function () {}, // 更新之前beforeUpdate: function () {}, // 更新完成updated: function () {}, // 销毁之前beforeDestroy: function () {}, // 销毁完成destroyed: function () {}
}
命名要求
文件名小写开头,采用驼峰方式
示例
apiMoni.vue
常量全部大写,并使用下划线连接
示例
const MAX_COUNT = 10;
方法命名
待...
文件格式
UTF-8
事件
对没有任何业务逻辑控制的页面,可以直接跳转
对于有业务逻辑控制的页面,应绑定链接事件方式,在事件中需要显示loading层,转到目标页面后,再隐藏loading层
弹框、select等需要大量代码去实现,要以组件的方式引入
接口调用
请求使用Axios
请求方式使用GET与POST,不要使用其他方式
token 验证
1、sessionStorage存贮token,尽量少用localStorage
2、登录安全(双重验证)
- 前端路由验证:首先全局路由拦截router.beforeEach,看sessionStorage是否存在验证。
- http请求和响应验证:看后台返回token是否过期,不过期就执行删除sessionStorage 操作,并重新登录。
部署方式
工具
- nginx
打包部署
打包项目:用cmd命令进入到项目的根目录,执行指令
npm run build
,打包之后会在项目根目录下面生成一个dist文件夹,然后把dist文件夹放到服务器上面。配置nginx:修改nginx的配置文件nginx.conf,在http里面添加server,格式如下:
- listen是端口号,
- server_name是连接地址(域名或ip),
- root指向打包后项目的物理路径(到index.html的父目录),保存文件,然后启动nginx。
server {listen 80;server_name www.xxx.com;location / { root /usr/local/vue/dist;autoindex on;}
}
注意:在nginx使用过程中,如果用到上传文件,通常需要设置nginx报文大小限制,在http里面添加一行代码
client_max_body_size 20m;
常见错误以及解决方案
待...
尊重原创
https://my.oschina.net/gmarshal/blog/1923893
转载于:https://my.oschina.net/gmarshal/blog/1923893
Vue开发规范1.0相关推荐
- [vue] 说说你觉得认为的vue开发规范有哪些?
[vue] 说说你觉得认为的vue开发规范有哪些? 风格指南 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题
- 个人工作室的网站开发规范V1.0
一,概述 不论是最古老的HTML,还是最近流行的AJAX,网站开发始终是一个综合了多种最新技术的实验场.作为个人工作室,成员屈指可数,多为手工作坊,往往一个人要担任多个角色,既是前台美工,又是后台程序 ...
- vue开发规范(单文件组件)
这里主要分为Vue风格指南和customer自定义风格,后续应该会继续更新. vue风格指南 优先级A(必要的) 组件名为多个单词 export default {name: 'vue-calenda ...
- Vue前端开发规范及代码风格
Vue.js 开发规范目录及说明 版本 v1.0 日期 2020-02-18 本文档为前端 vue 开发规范 规范目的 命名规范 结构化规范 注释规范 编码规范 CSS 规范 规范目的 为提高团队协作 ...
- 来公司必须了解的编码开发规范
编码开发规范 目 录 1.引言... 1 1.1 编写目的... 1 1.2 使用范围... 1 1.3 术语与缩略语... 1 1.4 参考资料... 2 2............... ...
- 前端规范 - 前端项目开发规范
0 前言 好好做业务,提高自己的工程能力 [强制] 1 开启eslint 根据团队的习惯,制定适合自己的rules 比如 no-console no-debugger可以关闭 [强制] 2 新项目使用 ...
- 前端规范 - js开发规范
因为会牵扯到业务逻辑,在实际开发场景中,js开发会占绝大部分,相应的规范细节也比较多 限于篇幅原因,加上有eslint的这个利器,本文只讲一些最最常用的规范 [强制] 开启eslint 开启了esli ...
- JavaScript开发规范 0.01版
为什么80%的码农都做不了架构师?>>> JavaScript开发规范v0.01 终极原则:简洁,明晰,优雅. 所谓简洁,可以只写一遍的代码,绝不写两遍: 所谓明晰,尽量只用人 ...
- WAP2.0开发规范及原则
来源:http://www.html5china.com/js/jsadv/20111120_2711.html 一.WAP简介: WAP(Wireless Application Pr ...
最新文章
- 拟阵(matroid)
- Qt Creator添加套件
- IDEA快捷键eclipse版(有自定义部分)
- MATLAB 基础教程:编程习惯
- 各种模拟器端口号及模拟器连接方式
- AidLearning0.87F3安装Python3.8
- 如何选购计算机的硬盘,教你如何选配电脑—硬盘篇
- 用three.js渲染上海外滩模型
- java多页码分页_对页码进行分页
- 完全二叉树和满二叉树
- 数据结构-头插法和尾插法
- MyBatis 大于小于不等于的写法
- 多目视觉三维重建研究综述
- 易基因 | 文献速递:RRBS方法绘制1538例乳腺癌甲基化图谱并预测癌症发生/预后
- 调用支付jsapi缺少参数 total_fee
- 双出口NAT+PBR+IPSec V*N
- java爬虫教程 百度云_java视频教程java爬虫实战项目httpclient hbase springmvc solr
- mysql备份脚本 shell_linux中mysql备份shell脚本代码 相关自动化脚本
- 爬虫学习第三天,urllib中的handler
- Alibaba后台4年,跳槽字节,艰难4面技术,成功砍下开发岗offer