我的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系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...
随机推荐
- lc.59 螺旋矩阵 II
题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 输入:n = 3 输出:[[1,2,3],[8,9, ...
- linux/windows常见文件系统最大支持单个文件大小
windows常见文件系统:FAT12/FAT16/FAT32/NTFS/NTFS5.0 对应支持大小: 8M/2G/4G/64G/2TB linux常见文件系统:ext2/ext3/ext ...
- python 修改excel文件内容(修改excel文件日期每天保存一份)
import xlrd import xlwt from xlutils.copy import copy import time import datetime def setStyle(name, ...
- https传输流程(加密方式、证书、传输安全)
http的缺点 http的数据是明文传输 如果用明文传输 很容易被第三方获取到传输的数据 因此我们一般要在网络传输过程中对数据进行加密 常见的加密方式 对称加密 秘钥key 待加密数据data a和b ...
- hdu 4870 Rating(概率dp)
题意:给你两个初始分数为0的账号让你去打比赛,每场比赛赢的概率为p,赢了加50分,输了-100分,当然你不会负分,每次你会用分低的账号去打比赛,问你把一个账号打到1000分的需要参加比赛次数的期望值. ...
- MS SQL Server 删除重复行数据
您可以使用以下 SQL 语句删除 MS SQL Server 表中重复的行: WITH CTE AS ( SELECT ROW_NUMBER() OVER(PARTITION BY column1, ...
- 云原生K8S精选的分布式可靠的键值存储etcd原理和实践
@ 目录 概述 定义 应用场景 特性 为何使用etcd 术语 架构 原理 读操作 写操作 日志复制 部署 单示例快速部署 多实例集群部署 静态 etcd 动态发现 常见命令 概述 定义 etcd 官网 ...
- CSAPP-Shell Lab
提供的工具: parseline:获取参数列表char **argv,返回是否为后台运行命令(true). clearjob:清除job结构. initjobs:初始化jobs链表. maxjid:返 ...
- GIT 操作大全 基于廖雪峰
命令显示从最近到最远的提交日志 git log / git log --pretty=oneline 回退到上一个版本:$ git reset --hard HEAD^ (用HEAD表示当前版 ...
- 迁移学习(NRC)《Exploiting the Intrinsic Neighborhood Structure for Source-free Domain Adaptation》
论文信息 论文标题:Exploiting the Intrinsic Neighborhood Structure for Source-free Domain Adaptation论文作者:Shiq ...