在过去的一年里,我在从头开始开发我的第一个重要的Web应用。经验教会了很多以前不知道的东西,特别是在安全性和用户体验方面。
值得一提的是,我上一次尝试构建的任何合理复杂性是在2005年。所以,在安全防御方面,我还有很多东西需要去补充。
即使在那些我已经知道或已经遇到过的东西之外,下面这个清单的细节在开发Web应用时也非常容易忘记,尤其是你才刚刚起步的时候。
这个清单可能在某些方面不尽详细,如果你是一位经验丰富的开发者,我怀疑这里将不会有什么东西会让你感到惊奇。但是,我希望它对那些可能遗落了一些东西的人有帮助。
安全性
确认电子邮件:当用户注册时,你应该发一个带有确认链接的电子邮寄给他们,然后用户必须点击链接来确认。如果用户在某个时候改变他们的电子邮箱地址,应该触发同样的操作流程。
身份管理:在存储密码时,先用广泛使用的加密库将密码加密。如果你能不管理密码,那么身份管理转由Facebook/Github/Twitter来管理,只要使用一个认证接口。
加密:对Web的所有证书问题,没有比SSL更好的技术了,使用它吧,或者使用 HSTS也可以。
证书:永远不要Check任何形式的服务器证书(API密钥、数据块密码)到源码控制库中。
工程:动画
对于这一切是圣洁的爱,别将你的app上所有的元素都做成动画,因为大部分CSS动画都会触发布局重绘。你最好限制一下,尽可能用变换和 opacity。
避免懒过渡计算,如果你一定要使用它,必须确保使用特定的属性(如:”transition: opacity 250ms ease-in” 而不是 “transition: all 250ms ease-in”)。
用户体验
表单:当提交表单时,用户应该得到一些有关提交的反馈信息。如果提交后页面没跳转到其它页面,那么就应该有一个弹出类型的提醒来让用户知道他们是提交成功了还是失败了。
登陆重定向:如果一个用户正想访问你网址上的某个页面,但是他并未登陆,那么用户应该首先被导向登陆页面,用户登陆之后又会跳转到他之前试着去访问的页面。 如果他们在登陆时输入了错误的密码,应该给以提示,提示他们如果忘记密码了可以选择重新设置新密。
电子邮件
订阅设置:你发送给每个用户的邮件,至少要包含一个链接到你的应用的一个页面,在这个页面上用户可以修改他们的邮箱设置;还应有一个单独链接供用户来取消订阅。 别让他们发邮件给你来取消订阅。
移动端
你并不一定要为你的应用开发移动客户端。但是,开发或不开发,你必须了解它是一个非常重要的决定。因为这将对开发你的应用的设计师和工程师产生重大影响。
以下假定你已经选择某特定移动端作为您的平台之一。我碰巧使用了Grunt来作为我的构建工具,所以,我已经拥有一些有关Grunt的插件可以用。但是,可能存在一些与你正在使用的JavaScript工具类似的东西。
工程
单页面应用:最近单页面应用(SPA)是主流,它的主要优势:SPA只需要更少的加载,只需要加载你所需要的资源,而且不需要重复一遍又一遍的加载。如果你正好准备做一个新的web应用,你应该选用SPA。
用户界面
分辨率:在你开发你的MVP时,你可能不需要确保你的UI能够在所有设备上优雅地工作,但是,但你应该确保它能适用于手机和平板电脑分辨率的基本范围。
用户体验:带宽
移动端的带宽比台式电脑的带宽更加宝贵,这也是移动应用的一大话题。因此,你应该寻找一切机会来减少请求的数量,尽可能使用异步,减小被请求资源的大小。
JS与CSS:你应该讲应用上特定的JavaScript和CSS集中放到一个文件中(一个存JS、一个存CSS),并尽量减小它们的大小。你的朋友在这里 Grunt-contrib-concat, Grunt-contrib-cssmin 和 Grunt-contrib-uglify 。
为所有资源?使用CDN:使用CDN主要有两个好处。第一个适用于所有托管的资源即是定位,CDN可以确保你的资源在某个区域,然后用户访问的时候可以就近访问资源,这样减少了资源加载时间。
第二个是应用于你的Web应用的依赖文件(比如:非特定于应用的样式和JS代码)。对web应用所依赖的文件使用CDN,可通过用户的缓存来极大地减小加载时间。举个例子,很多网站都依赖Angular.js,使用CDN来链接到核心角代码将会触发一个缓存命中,移动设备用户将会从缓存中接收它,而不是发起另一个HTTP请求。
CSS-减小脚本大小:大部分开发者刚开始的时候可能会使用某种UI框架(如Bootstrap、Foundation等)。这些框架可能非常大,通常在大部分CDN上都可用它们的精简版样式,你也不可能需要使用它们所包含的全部样式。通常,像类似uncss的工具(通常与类似 processhtml 的工具搭配)在帮你移除那些用不着的样式有难以置信的意义。
需要重视的是,uncss解析器无法辨析动态样式。所以你在检测的时候,必须谨慎,确保别删错了那些实际上被使用在你的应用中的样式。
CSS-将关键的代码放置到head:在应用加载完之前,关键样式应该已经可用,它们应该放到Head中。次要的样式可用稍后再加载。
JS-减小脚本大小:由于在你的产品中JavaScript代码不需要任何内部变量对人们易理解,将变量user.email重命名为u.e可能会有助于减小你的脚本文件。幸运的是,有个工具可以帮你做这个工作-前面提到的 uglify,它可以将你的JS代码变得难以读懂,但是JS文件会更小。
用户体验:表单
确保你的表单和工作流程简单,总体上而言这是一个很好的建议。如果你还选择了针对移动端进行部署,那么这一点尤其重要,没有人愿意在他们的手机上填写具有5个页面的表单。
我希望这个列表能够对那些正准备开发你的第一个web app、或是那些已经着手在开发、或对前端设计优化技巧并不熟悉的朋友有帮助。如果你着手开发之后发现了一些其它被遗落的技术或技巧,请记下来并告诉我,我会考虑把它添加在这个列表中。
原文地址(英文):http://blog.venanti.us/web-app-2015/

공식 계정 웹 페이지 업데이트 캐시, 이것은 간단하고 간단하며 냄비를 마시기에 충분히 복잡합니다. 공식 계정 기사를 업데이트하기 위해 열심히 노력했지만 사용자는 여전히 기존 버전을 열었습니까? 이 기사에서는이 뒤에있는 비틀기와 회전을 살펴 보고이 문제를 우아하게 해결하는 방법을 살펴 보겠습니다. 읽은 후에는 다양한 캐싱 문제를 쉽게 처리 할 수있어 사용자가 항상 가장 신선한 콘텐츠를 경험할 수 있습니다. 기본 사항에 대해 먼저 이야기 해 봅시다. 액세스 속도를 향상시키기 위해 브라우저 또는 서버는 일부 정적 리소스 (예 : 그림, CSS, JS) 또는 페이지 컨텐츠를 저장합니다. 다음에 액세스 할 때 다시 다운로드하지 않고도 캐시에서 직접 검색 할 수 있으며 자연스럽게 빠릅니다. 그러나 이것은 또한 양날의 검입니다. 새 버전은 온라인입니다.

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

이 기사는 CSS를 사용한 웹 페이지에 효율적인 PNG 테두리 추가를 보여줍니다. CSS는 JavaScript 또는 라이브러리에 비해 우수한 성능을 제공하며, 미묘하거나 눈에 띄는 효과를 위해 테두리 너비, 스타일 및 색상 조정 방법을 자세히 설명합니다.

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

이 기사는 html5 & lt; time & gt; 시맨틱 날짜/시간 표현 요소. 인간이 읽을 수있는 텍스트와 함께 기계 가독성 (ISO 8601 형식)에 대한 DateTime 속성의 중요성을 강조하여 Accessibilit를 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Dreamweaver Mac版
시각적 웹 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
