我的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系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...
随机推荐
- Spring MVC 常见问题
Spring MVC的主要组件有那些? spring mvc 在使用 DispatcherServlet 处理 web 请求的时候,会用到 spring 中的九大组件,以下是几个关键的组件: 1.Li ...
- Konga-Kong网关的权限控制指定消费者
刚开始陷入了误区了,网上很多参考例子都是如何实现身份证验证,而且看到konga上面配置身份插件的地方基本都有consumer一个配置项,一直纠结在这个如何通过key-auth实现指定的route或者s ...
- 登录:ORA-12504:TNS:监听程序在CONNECT_DATA中未获得SERVICE_NAME
问题描述:在用pl/sql登录soctt用户时,显示: 解决办法:在tnsnames.ora文件中添加(文件位置的查找方法见文章末尾) ORCL = (DESCRIPTION = (ADDRESS = ...
- Win32窗口设置为透明
可以使用以下方法将Win32窗口设置为透明: 定义窗口类时,在WNDCLASSEX结构体中设置hbrBackground成员为NULL. 在窗口创建时,使用WS_EX_LAYERED风格和SetLay ...
- CentOS7.6 单用户模式下修改root密码
第一种方法: 1.启动时用上下键选择要进入的内核,输入'e'进入编辑 2.可以使用上下键移动找到linux16这行编辑ro 为 rw init=/sysroot/bin/sh 并使用ctrl + x进 ...
- Solon2 分布式事件总线的技术价值?
分布式事件总线在分布式开发(或微服务开发)时,是极为重要的架构手段.它可以分解响应时长,可以削峰,可以做最终一致性的分布式事务,可以做业务水平扩展. 1.分解响应时长 比如我们的一个接口处理分为四段代 ...
- Jetson Xavier NX 试玩 (一)
Jetson Xavier NX 试玩 (一) 环境搭建 0 前言 NVIDIA家的Jetson系列是业内嵌入式边缘计算机的代表作,体积小,功能强是其最主要的优点. 学院入手了一款Jeston Xav ...
- webgl 系列 —— 渐变三角形
其他章节请看: webgl 系列 渐变三角形 本文通过一个渐变三角形的示例逐步分析:varying变量.合并缓冲区.图形装配.光栅化.varying 内插 绘制三个点v1 需求:绘制三个相同颜色的点, ...
- Java面试——TCP与HTTP
更多内容,移步 IT-BLOG 一.Session 和 Cookie 的区别 [1]Cookie 保存在客户端,未设置存储时间的 Cookie,关闭浏览器会话 Cookie 就会被删除:设置了存储时间 ...
- 解决el-checked-group中v-medel绑定的是一个数组对象方法(不用修改源码)
思路:弃用el-checked-group使用el-checked模拟 <!DOCTYPE html> <html> <head> <meta charset ...