我的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系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...
随机推荐
- 去除python中数据的0值
import numpy as np a = [0, 1, 2] a = np.array(a) a = a[a != 0].tolist() print(a) //a = [1, 2]
- Windhill获取团队角色、用户
//获取容器团队里的用户和角色,也可以获取容器团队里某一角色的用户 WTContainer pContainer = project.getContainer(); if (pContainer in ...
- 用猿大师的VLC播放插件在高版本Chrome播放RTSP视频流,并抓图、录像、回放、倍速等
因为项目上需要把海康威视摄像头集成到WEB网页中播放,于是开始了对WEB播放摄像头方案的各种折腾. 2015年之前还可以用VLC原生播放器在Chrome.Firefox等浏览器中直接播放,延迟比较低, ...
- SQL作业编辑报错 无法将COM组件......
在命令行运行下列命令 数据库为2005cd C:\Program Files\Microsoft SQL Server\90\DTS\Binnregsvr32 dts.dll
- 明解STM32—GPIO理论基础知识篇之八种工作模式
一.引言 在之前围绕STM32的GPIO的基本结构进行了介绍,图1为STM32的5V容忍的GPIO口内部基本结构图,图2为GPIO的基本结构中各个模块部分的概述. 阅读GPIO基本结构的内容能够对GP ...
- 保姆级本地maven安装配置步骤【Windows】
一.前期准备 1.首先需要安装并配置好本地JDK(WIN+R输入cmd,输入java -version如下图) 2.下载maven到本地(链接Maven – Download Apache Maven ...
- Django笔记三之使用model对数据库进行增删改查
本篇笔记目录索引如下: model 准备 增 查 删 改 1.model 准备 在上一篇笔记中,我们新建了一个 application,增加了几个model 同步到了数据库,这次我们新建一个名为 bl ...
- 前端开发工具 VS Code 安裝及使用
一.下载地址 https://code.visualstudio.com/ 下载完后,傻瓜式安装即可 关注公众号"Java程序员进阶"回复"vs"也可获取 二. ...
- Qt连接不上Linux服务器?
目录 1. Qt连接代码 2. 问题分析(按照顺序排除) 2.1 服务器IP是否能被Ping通? 2.2 客户端中的服务器IP和Port是否填写正确? 2.3 Linux的代码处理是否正确? 2.4 ...
- Nmap基本使用【速查版】
列举远程机器开放的端口 nmap [域名] 列举远程机器开放的端口和服务 nmap --dns-servers 8.8.8.8 [域名] nmap进行探测之前要把域名通过DNS服务器解析为IP地址,我 ...