我的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系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...
随机推荐
- 西电oj135题 拼数字并排序
类别综合 时间限制 1S 内存限制 1000Kb 问题描述 对于输入的字符串(只包含字母和数字),将其中的连续数字拼接成整数,然后将这些整数按从大到小顺序输出.例如字符串"abc123d5e ...
- ArcEngine创建注记类及生成注记要素
在宗地出图的时候遇到此功能要求,看代码 ※创建注记类 public void createBlackAnno(IMap pMap) { //创建mdb数据库文件 IWorkspaceFactory p ...
- RPA的应用及工作原理
通过本章学习,您将了解到: 什么是RPA RPA能做些什么 RPA的应用有什么特点 RPA是怎样进行工作的 RPA怎么实现人机协作 RPA的未来趋势怎么样 什么是RPA RPA是利用软件来执行业务流程 ...
- 验证码案例的实现---MyBatis+Session+Cookie
展示验证码(jsp页面) 首先,我们需要自己利用BufferedImage类去生成一张可以变换的验证码图片: 之后,我们就可以利用这样一串代码去将验证码里面的内容获取到: 这是一串测试代码: Outp ...
- MySQL学习(三)DQL/DML/DDL/DCL 介绍
参考博客:https://blog.csdn.net/tomatofly/article/details/5949070 DQL(data query language) :数据查询语言 select ...
- Kattis mapcolouring(状压dp)
刚知道vj上查看别人代码,看不到汉字...我理解的都注明后边了. #include <bits/stdc++.h> #define ll long long #define met(a, ...
- js直接操作数据库会怎么样
这几天刷脉脉的时候看到一个话题初看觉得可笑,再看陷入沉思,最后还是决定花点时间想清楚,写下来. 确实没见人这么干过,为什么呢? 技术限制 被技术限制了?据我所知目前没有面向js的数据库驱动,但反观现在 ...
- vue核心原理(Diff算法、虚拟dom)
核心原理&源码 Diff 算法 这里参考大佬文章:https://mp.weixin.qq.com/s/oAlVmZ4Hbt2VhOwFEkNEhw diff 算法的进化 关于 diff 算法 ...
- 分布式缓存的一致性 Hash 算法
一.使用一致性 Hash 算法的原因 简单的路由算法可以使用余数 Hash:用服务器数据除缓存数据 KEY 的 Hash 值,余数为服务器列表下标编码.这种算法可以满足大多数的缓存路由需求.但是,当分 ...
- 免费1年服务器,部署个ChatGPT专属网页版
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 白皮袄个免费1年服务器,部署个ChatGPT专属网页版! api.openai.com por ...