我的web系统设计规范
以下是我自己在工作中总结的,仅供参考。
·应对所有用户输入进行trim()去除两头空格,若是需要空格的应用 转义代替,不应在js里trim(),而应该在数据库端或后端控制,且只在一处拦截控制,更改策略时只改一处代码。
·不应使用frameset框架集,应使用iframe代替frameset,因为frameset页面无法执行js,若想在frameset页面弹出内容是无法实现的。
·项目中应避免同时使用int和long,统一使用一种类型,因为他们之间相互转换非常不方便,容易导致错误。
·每个页面都应包含一个全局控制的js文件。
·前端设计应考虑一个扩展js库,对js原生对象的方法和属性及事件使用prototype进行扩展,以便随处直接调用,应避免写成第三方函数,应扩展的方法包括String的replaceAll()、hashmap类型等。
·同样功能的方法只定义一次,应杜绝重复定义,这样会造成代码混乱,维护麻烦。
·前端不应使用js内置的alert函数进行提示弹出,因为alert在不同的浏览器下显示样式不统一,且会阻塞线程,不适合存在计时器程序的页面使用。应使用第三方HTML控件。
·通过get方式传参,若传入boolean类型的值,是无法直接进行==判断的,因为get传的是字符串。
·js判断boolean类型尽量使用==true/false具体值进行判断,避免使用if(!boolean)这样的用法,因为undefined、false、null都可能满足条件。
·如果项目用到ajax,应配置全局ajax事件处理,如jquery的ajaxSetup,利用before及complate回调函数实现网速监测,利用error函数实现默认错误处理。
·若需要设计多级关联表(多张表存在级联关系),子表、孙表最好都加上顶层表的id,这样在删除时直接根据id删除比数据库自己的级联删除或通过程序级联删除性能高。
·数据库表添加字段时必须考虑该字段是否应创建索引,测试库数据量小不易发现问题,线上库数据量大时查询效率慢是致命的。
·对于功能较多,使用了前端资源缓存,bug风险较大的系统应该设计动态请求js代码并执行的功能,用于在紧急时刻临时性解决前端bug.动态请求一个action,action直接输出js代码.
·定义公共全角半角字符替换函数
·编码实现必须严格按照规范、按照约束,所有的处理逻辑必须写注释,有的地方该举例的应举例,该表明数据结构的要表明数据结构,该写原因的要写原因。
·对每个功能点进行编码,并在相关代码文件及位置添加编码注释,用于通过IDE快速定位功能所涉代码,便于功能维护。
·对每一次用户登录都记录日期时间,对所有操作记录日志。
·前端像向后台数据库保存数据应避免将"null"、"undefined"、"NaN"等JS产生的赃数据保存进库里,否则会影响数据分析与计算。
·集合数据去重复,前端可用obj[key]=value,后台可用hashmap,它们都利用key不重复的机制进行排除重复,这样比写循环效率高且不容易出错。
·设计时应考虑系统升级时给在线用户造成的影响,应留有在升级时对用户弹出提示的通道功能,即实时推送功能。
·如果使用MVC或多层设计设计模式,传递参数并获取返回值应严格按照方法调用、参数返回规范进行,不应采用如在M传给V参数对象,V的方法无返回值,V修改参数对象,M再直接读取参数对象里的值,应使用M传给V参数对象,V处理并创建返回值变量,V的方法返回该变量。为什么这么做?因为如果以后要对各层进行剥离,使用远程调用,那么M层就无法引用V里的参数对象了,他们跨机器、跨系统、跨内存了,引用无效。
·网页表单设计时,输入框应有两个属性,一个原值,一个最新值,用于保存时判断哪些值发生了改变,应仅对发生改变的字段进行更新,减少网络数据传输量,减少数据库操作量。
·若页面不想缓存,可在<head>标签内添加
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
·js文件头部应定义编码方式,utf-8。
·数据库表设计,业务功能保存时,如果存在外键字段,引用时最好不要直接引用id,应在对方表里创建具有唯一性的字段,并引用那个字段。这样做为了后期数据库升迁时,避免处理id带来的麻烦,也可在数据库发生严重故障时能便于数据对应及恢复。
.验证码使用后立即销毁,否则,用户可以通过非法手段重复提交数据。
我的web系统设计规范的更多相关文章
- (系统架构)标准Web系统的架构分层
标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...
- Web系统大规模并发——电商秒杀与抢购
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要.这次我们 ...
- Web系统的常用测试方法
在51上看到一篇不错的文章,拿过来分享一下,学习学习! Web系统的常用测试方法如下: 1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确. 2. 相关性检查:删除/增加一项会不会 ...
- 大型web系统数据缓存设计
1. 前言 在高访问量的web系统中,缓存几乎是离不开的:但是一个适当.高效的缓存方案设计却并不容易:所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型.常见缓存系统的特点和数 ...
- 亿级 Web 系统的容错性建设实践
一. 重试机制 最容易也最简单被人想到的容错方式,当然就是“失败重试”,总而言之,简单粗暴!简单是指它的实现通常很简单,粗暴则是指使用不当,很可能会带来系统“雪崩”的风险,因为重试意味着对后端服务的双 ...
- 亿级Web系统搭建——单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
- 浅谈大型web系统架构
动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统. ...
- 转:亿级Web系统的高容错性实践(好博文)
亿级Web系统的高容错性实践 亿级Web系统的高容错性实践 背景介绍 大概三年前,我在腾讯负责的活动运营系统,因为业务流量规模的数倍增长,系统出现了各种各样的异常,当时,作为开发的我,7*24小时地没 ...
- Web系统大规模并发——电商秒杀与抢购 【转】
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要.这次我们 ...
- 标准Web系统的架构分层
标准Web系统的架构分层 – 转载请注明出处 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...
随机推荐
- 自定义DOM事件函数封装
非原生DOM触发,个性化定制的自定义事件. currentTarget(DOM对象):要触发事件的元素节点. type(字符串):触发的事件类型,例如"keydown". bubb ...
- GRAPH ATTENTION NETWORKS(GAT)图注意力网络
摘要: 我们提出一个图注意力网络,一个新的用来操作图结构数据的神经网络结构,它利用"蒙面"的自我注意力层来解决基于图卷积以及和它类似结构的短板.通过堆叠一些层,这些层的节点能够参与 ...
- OSPF之Router id冲突
- C#的Event事件
一直不明白事件,今天写了一下,做个笔记吧. 先建一个类,里面有一个方法,返回bool型 public class Subject { public bool IsPass(int x) { Conso ...
- Spring--案例:百度网盘密码数据兼容处理
案例再度来袭 也就是说,在百度网盘的密码复制时,后面即使有空格也能提取成功(trim方法) 案例的实现: 也就是实现存在空格时,也能输出true: 现在的话: 那么,我们应该如何使得它忽略空格呢? 这 ...
- Innodb的Buffer Pool
什么是Buffer Pool 为了缓存磁盘中的页,MySQL服务器启动的时候就向操作系统申请了一片连续的内存,他们给这片内存起了个名,叫做Buffer Pool(中文名是缓冲池).innodb_buf ...
- BeautifulSoup模块的使用方法
本篇文章主要讲bs4模块(BeautifulSoup),这个模块能做么呢?用一句话来概括的话:beautifulsoup4 从HTML或XML文件中提取数据的Python库,用它来解析爬取回来的xml ...
- 基于 Agora SDK 实现 iOS 端的多人视频互动
视频互动直播是当前比较热门的玩法,我们经常见到有PK 连麦.直播答题.一起 KTV.电商直播.互动大班课.视频相亲等. 本文将教你如何通过声网Agora 视频 SDK 在iOS端实现一个视频直播应用. ...
- 声网教育aPaaS 产品灵动课堂:「低代码」开发,15分钟极速上线
1 月 20 日,声网Agora 在官网正式发布教育行业首款 aPaaS 产品灵动课堂,帮助教育机构和开发者最快 15 分钟上线自有品牌.全功能的在线互动教学平台,节省 90% 开发时间.目前,声网面 ...
- 一文带你搞懂java中的变量的定义是什么意思
前言 在之前的文章中,壹哥给大家讲解了Java的第一个案例HelloWorld,并详细给大家介绍了Java的标识符,而且现在我们也已经知道该使用什么样的工具进行Java开发.那么接下来,壹哥会集中精力 ...