澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

程序猿该思量的手艺有这么些,开采一个

做 Web 应用要知道的那些事

2015/07/21 · HTML5 · Web应用

本文由 伯乐在线 - 刘健超-J.c 翻译,黄利民 校稿。未经许可,禁止转载!
英文出处:blog.venanti.us程序猿该思量的手艺有这么些,开采一个。。欢迎加入翻译组。

在过去一年里,我从零开始开发一直在我的首个重要的 Web 应用程序。这次经历教会了我许多之前不知道的东西,特别在安全和用户体验方面。

我最后一次尝试开发足够复杂的应用是在 2005 年,所以就我的立场来说,有很多东西需要补充。

除了我所知所见外,要记住本文清单里的内容。因为在开发 Web 应用时,尤其是刚开始做的时候,容易忘记一些重要的事情。

这个检查清单并不是面面俱到,如果你是一个经验丰富的开发者,这里可能没有让你感到惊喜的东西,但我希望能证明它是有助于让你回忆起一些错过的东西。

开发一个 Web App 必须了解的那些事,app那些事

  在过去的一年里,我在从头开始开发我的第一个重要的Web应用。经验教会了很多以前不知道的东西,特别是在安全性和用户体验方面。

  值得一提的是,我上一次尝试构建的任何合理复杂性是在2005年。所以,在安全防御方面,我还有很多东西需要去补充。

  即使在那些我已经知道或已经遇到过的东西之外,下面这个清单的细节在开发Web应用时也非常容易忘记,尤其是你才刚刚起步的时候。

  这个清单可能在某些方面不尽详细,如果你是一位经验丰富的开发者,我怀疑这里将不会有什么东西会让你感到惊奇。但是,我希望它对那些可能遗落了一些东西的人有帮助。

  在过去的一年里,我在从头开始开发我的第一个重要的Web应用。经验教会了很多以前不知道的东西,特别是在安全性和用户体验方面。

在过去的一年里,我在从头开始开发我的第一个重要的Web应用。经验教会了很多以前不知道的东西,特别是在安全性和用户体验方面。

本文由 伯乐在线 - 刘健超-J.c 翻译,黄利民 校稿。未经许可,禁止转载!
英文出处:stackexchange。欢迎加入翻译组。

安全性

确认邮件:当用户注册时,应向他们发送带有点击确认邮箱的链接的邮件。如果用户更新他们的邮箱地址,则要再次重复这个工作流程。

身份管理:当存储密码时,首先对它们进行加盐和散列操作,然后再用现在广泛使用的 crypto 库。如果你不这样做的话,把身份管理转由给 Facebook / GitHub /  Twitter / 等,用 OAuth 就能做到。

加密:所有证书问题,还有什么比 SSL 更好。使用它吧。还可以使用 HSTS。

凭证:不要把服务器身份信息(API 密钥、数据库密码等)放到版本控制里,否则就泄密了。

 安全性

  确认电子邮件:当用户注册时,你应该发一个带有确认链接的电子邮寄给他们,然后用户必须点击链接来确认。如果用户在某个时候改变他们的电子邮箱地址,应该触发同样的操作流程。

  身份管理:在存储密码时,先用广泛使用的加密库将密码加密。如果你能不管理密码,那么身份管理转由Facebook/Github/Twitter来管理,只要使用一个认证接口。

  加密:对Web的所有证书问题,没有比SSL更好的技术了,使用它吧,或者使用 HSTS 也可以。

  证书:永远不要Check任何形式的服务器证书(API密钥、数据块密码)到源码控制库中。

图片 1

  值得一提的是,我上一次尝试构建的任何合理复杂性是在2005年。所以,在安全防御方面,我还有很多东西需要去补充。

值得一提的是,我上一次尝试构建的任何合理复杂性是在2005年。所以,在安全防御方面,我还有很多东西需要去补充。

【伯乐在线注】:《Web应用上线前,程序员该考虑的技术有这些》这是 StackExchange 上面的一个经典问题贴。

工程:动画

所有的爱,都是神圣的。但别为应用里的所有元素添加动画。因为大多数 CSS 动画都会触发布局重绘;最好尽可能地限制自己使用 transform 和 opacity。

避免进行缓慢的过渡运算,如果非要使用,那么确保它是针对某个属性的(如,”transition: opacity 250ms ease-in” ,而不是 “transition: all 250ms ease-in”)。

 工程:动画

  对于这一切是圣洁的爱,别将你的app上所有的元素都做成动画,因为大部分CSS动画都会触发布局重绘。你最好限制一下,尽可能用变换和 opacity。

  避免懒过渡计算,如果你一定要使用它,必须确保使用特定的属性(如:”transition: opacity 250ms ease-in” 而不是 “transition: all 250ms ease-in”)。

  即使在那些我已经知道或已经遇到过的东西之外,下面这个清单的细节在开发Web应用时也非常容易忘记,尤其是你才刚刚起步的时候。

即使在那些我已经知道或已经遇到过的东西之外,下面这个清单的细节在开发Web应用时也非常容易忘记,尤其是你才刚刚起步的时候。

最赞回复有 2200 顶,虽然大多数人可能都听过其中大部分内容,但应该会有你没有深入了解的内容。一起来看看。

用户体验(UX)

表单:当提交一个表单后,用户应收到提交后的反馈。如果提交后不向用户发送一个不同的页面,那么就应该有弹框或 alert 一些信息,以便让用户知道这次提交是否成功。

登录重定向:如果用户打算在你的网站打开一个页面,但并没有登录,那么他们应该首先接收到一个能登录的页面,并在登录后重定向到一个他们原本想打开的一个页面(当然,前提是已得到授权)。

如果他们尝试登录,但提供了一个错误的密码,这时,用户有可能是忘记了密码,那我们就应该提供一个视觉线索来提醒他们,要有一个重置密码的选项。

 用户体验

  表单:当提交表单时,用户应该得到一些有关提交的反馈信息。如果提交后页面没跳转到其它页面,那么就应该有一个弹出类型的提醒来让用户知道他们是提交成功了还是失败了。

  登陆重定向:如果一个用户正想访问你网址上的某个页面,但是他并未登陆,那么用户应该首先被导向登陆页面,用户登陆之后又会跳转到他之前试着去访问的页面。 如果他们在登陆时输入了错误的密码,应该给以提示,提示他们如果忘记密码了可以选择重新设置新密。

  这个清单可能在某些方面不尽详细,如果你是一位经验丰富的开发者,我怀疑这里将不会有什么东西会让你感到惊奇。但是,我希望它对那些可能遗落了一些东西的人有帮助。

这个清单可能在某些方面不尽详细,如果你是一位经验丰富的开发者,我怀疑这里将不会有什么东西会让你感到惊奇。但是,我希望它对那些可能遗落了一些东西的人有帮助。


电子邮件

订阅设置:任何发送到用户的 email ,都应该至少包含一个链接,能链接到修改他们的邮箱设置的应用程序页面,并且最好每个邮件都有一个单独的链接,能取消订阅。

千万别让用户为了取消订阅而向你发送邮件。

 电子邮件

  订阅设置:你发送给每个用户的邮件,至少要包含一个链接到你的应用的一个页面,在这个页面上用户可以修改他们的邮箱设置;还应有一个单独链接供用户来取消订阅。 别让他们发邮件给你来取消订阅。

 安全性

  确认电子邮件:当用户注册时,你应该发一个带有确认链接的电子邮寄给他们,然后用户必须点击链接来确认。如果用户在某个时候改变他们的电子邮箱地址,应该触发同样的操作流程。

  身份管理:在存储密码时,先用广泛使用的加密库将密码加密。如果你能不管理密码,那么身份管理转由Facebook/Github/Twitter来管理,只要使用一个认证接口。

  加密:对Web的所有证书问题,没有比SSL更好的技术了,使用它吧,或者使用 HSTS 也可以。

  证书:永远不要Check任何形式的服务器证书(API密钥、数据块密码)到源码控制库中。

图片 2

安全性

确认电子邮件:当用户注册时,你应该发一个带有确认链接的电子邮寄给他们,然后用户必须点击链接来确认。如果用户在某个时候改变他们的电子邮箱地址,应该触发同样的操作流程。

身份管理:在存储密码时,先用广泛使用的加密库将密码加密。如果你能不管理密码,那么身份管理转由Facebook/Github/Twitter来管理,只要使用一个认证接口。

加密:对Web的所有证书问题,没有比SSL更好的技术了,使用它吧,或者使用 HSTS也可以。

证书:永远不要Check任何形式的服务器证书(API密钥、数据块密码)到源码控制库中。

图片 3

问题

Web 应用上线前,程序员应考虑哪些技术细节呢? 如果 Jeff Atwood 忘记把 HttpOnly cookies、sitemaps 和 cross-site request forgeries 放在同一个网站,那我会把什么重要的东西也会忘掉呢?

我以一个 Web 开发人员的角度思考这个问题,别人为网站进行美化设计并填充内容。因此,他们可能认为可用性和内容比平台更重要,程序员在这方面没多少发言权了。而你需要考虑到的是:你实现平台的稳定性、安全性和满足其它商业目的(如成本不要太高、耗时不要太长和网站排名)。

而以一位已经在相当可信的环境下,完成了几个企业内网应用程序项目的开发者角度思考,并在一个流行且权威网站上为整个糟糕的万维网打响第一枪。

另外,我希望能回答得更加具体一点,而不仅仅是一个“Web标准”这样模糊的答案。通过 HTTP 传输的 HTML、JavaScript、CSS 是必须要掌握的,特别是针对那些资深 Web 开发者。所以,超出上述范围,哪一个标准?在什么环境下,并且为什么这样?麻烦您提供一个跳转到该标准说明的链接。

 

移动端

虽然你不必开发移动端…但不管你是否做,你都应该确保这是一个积极的决定,因为这会对你的应用程序设计和工程有实质性影响。

下面的注意事项是假设你已选择移动端作为你的平台之一。我碰巧选用 Grunt 作为我的构建工具,所以我得使用一些 Grunt-specific 插件,但你可能使用类似的 JavaScript 构建工具。

 移动端

  你并不一定要为你的应用开发移动客户端。但是,开发或不开发,你必须了解它是一个非常重要的决定。因为这将对开发你的应用的设计师和工程师产生重大影响。

  以下假定你已经选择某特定移动端作为您的平台之一。我碰巧使用了Grunt来作为我的构建工具,所以,我已经拥有一些有关Grunt的插件可以用。但是,可能存在一些与你正在使用的JavaScript工具类似的东西。

 工程:动画

  对于这一切是圣洁的爱,别将你的app上所有的元素都做成动画,因为大部分CSS动画都会触发布局重绘。你最好限制一下,尽可能用变换和 opacity。

  避免懒过渡计算,如果你一定要使用它,必须确保使用特定的属性(如:”transition: opacity 250ms ease-in” 而不是 “transition: all 250ms ease-in”)。

工程:动画

对于这一切是圣洁的爱,别将你的app上所有的元素都做成动画,因为大部分CSS动画都会触发布局重绘。你最好限制一下,尽可能用变换和 opacity。

避免懒过渡计算,如果你一定要使用它,必须确保使用特定的属性(如:”transition: opacity 250ms ease-in” 而不是 “transition: all 250ms ease-in”)。

最佳回复

下面列表里的大部分内容,我们大多数人都应该已经听过了。所以在这之前,你可能只有一到两个项目没有深入查看和理解透彻,或甚至没听过。

界面和用户体验

  • 应意识到浏览器实现标准不一致,并确保你的网站能在所有主流浏览器上合理运行。至少起码在最近的 Gecko 引擎(Firefox)、Webkit 引擎(Safari 和一些移动端浏览器)、Chrome、支持 IE 浏览器(利用 Application Compatibility VPC Images 进行测试)和 Opera。另外,也要考虑浏览器在不同操作系统下是如何渲染网站的。
  • 要考虑到用户除了通过主流浏览器来浏览网站外,还有其它方式:手机、屏幕阅读器和搜索引擎等。 这有一些相关信息:WAI 和 Section508,移动开发:MobiForge。
  • Staging:如何部署更新而不影响用户。进行一次或多次测试或 staging 环境可用来实现架构的更改,确保代码或全部内容能部署在一个可控的方式而不会破坏任何东西。有一个自动化的方式部署批准改变网站。最有效地实现方法是使用版本控制系统(Git、CVS、Subversion 等)和一个自动构建机制( Ant、 NAnt 等)。
  • 不要向用户直接显示不友好的错误提示。
  • 不要以纯文本的方式显示用户的 Email 地址,否则他们将会收到该死的垃圾邮件。
  • 为用户链接添加属性 rel = “nofollow” 来 避免垃圾邮件。
  • 为你的网站建立深思熟虑的限制 – 这也属于下面将要讲到的安全性。
  • 学会如何实现网页的 渐进增强。
  • POST 提交成功后,要重定向,以防止再次提交引起刷新。
  • 别忘了考虑到访问性(accessibility,即残障人士如何使用网站)。这一直是好想法并且有时这是法定要求。WAI-ARIA 和 WCAG 2 都是这方面很好的资源。
  • 别让用户思考如何操作。

安全性

  • 阅读 《OWASP开发指南》,它提供了全面的网站安全指导。
  • 知道注入相关的知识,尤其是 SQL 注入,并知道如何防止它。
  • 千万别相信用户的输入,也不要相信任何请求(其中包括 cookies 和 表单域的隐藏字段值!)。
  • 使用 salt(密码散列技术)散列密码并为你的彩虹表行使用不同的 salts 来防止 rainbow 攻击。 使用一个效率较低的散列算法,如 bcrypt ( 久经试验的)或 scrypt (更新,甚至更强)(1,2),来存储密码。(如何安全地存储一个密码)。NIST 也批准用 PBKDF2 散列密码,FIPS 认可 .NET (想了解更多信息,请 点击)。应避免直接使用 MD5 或 SHA 家族。
  • 别尝试提出你自己喜欢的认证系统。这很容易在微妙且不可测的方式下出现错误,而且你可能直到被入侵才知道发生什么事
  • 了解 处理信用卡的规则。(也可以看看这里这个问题)
  • 在登录页和任何涉及敏感数据的网页(如信用卡信息),使用 SSL / HTTPS。
  • 防止 会话(session)劫持。
  • 避免 跨站脚本攻击(XSS)。
  • 避免 跨站请求伪造攻击(CSRF)。
  • 避免 点击劫持。
  • 系统补丁要保持更新。
  • 保证数据库连接信息安全。
  • 你自身要保持关注最新的攻击技术和影响你平台的漏洞。
  • 阅读  Google 的《浏览器安全手册》。
  • 阅读 《Web应用黑客手册》。
  • 考虑 最小特权原则。尝试将你的应用程序在 非根模式(non-root)的服务器下运行。(tomcat 案例)

性能

  • 如有必要,就实现缓存。了解和正确地使用 HTTP 缓存(caching)和 HTML 5 离线缓存。
  • 优化图片 – 别使用一个 20 KB 大小的图片做为一个重复背景。
  • 学习如何用 gzip / deflate 压缩内容([deflate更好](https://stackoverflow.com/questions/1574168/gzip-vs-deflate-zlib-revisited))。
  • 合并多个样式表单或脚本文件,以减少浏览器发送请求次数,而且要利用 gzip 压缩文件之间重复的部分。
  • 浏览 Yahoo Exceptional Performance(雅虎优越性能)网站,里面有很多优秀的指引,其中就包括提高前端性能和它们的 YSlow 工具(需要 Fixfox、Safari、Chrome 或 Opera)。另外,Google PageSpeed (以 浏览器扩展 的方式)是另一个测试性能的工具,而且它也会优化你的图片。
  • 为较小且有关联的图片使用 CSS 图片精灵 技术,如工具栏(看“把 HTTP 请求减到最低”那点建议)
  • 繁忙 Web 站点应考虑将 网页的内容分开存放 在不同的域名下。特别是…
  • 静态内容(也就是图片、CSS、JavaScript 和无需通过 cookies 获取的一般内容)应放进独立且 不使用 cookies 的域名上,因为所有域名和其子域名为客户端生成的 cookies 都会伴随请求发送回给自己。 一个很好的选择是使用内容分发网络(CDN),但要考虑到这种情况:CDN(包括可替代的 CDN)可能会失效,这时本地副本能代替它来进行传输。
  • 将浏览器渲染页面所需 HTTP 请求数量最少化。
  • 用Google的 Closure Compiler 压缩 JavaScript,当然也可以使用 其他压缩工具。
  • 确保有一个 favicon.ico 文件在网站的根目录,也就是说 /favicon.ico。浏览器会自动请求它,即使在 HTML 中并未提及到它。如果没有 /favicon.ico,那么请求返回的结果是 大量的 404 错误,这将会耗尽服务器的带宽。

SEO(搜索引擎优化)

  • 使用“对搜索引擎友好”的链接,比如说 example.com/pages/45-article-title 优于 example.com/index.php?page=45。是 googlebot(Google 的 web 爬虫)用来替换 #! 的。换句话说,./#!page=1 会被Google搜索引擎转成 ./?_escaped_fragments_=page=1。 (通常来说 URL 中的 # 后的东西都不会被传到服务器上,所以,为了要让 Google 可以抓取 AJAX 的东西,你需要使用 #!,而 Google 会把“#!”转成“_escaped_fragment_”来向服务器发请求,Twitter 的大量链接者是#!的,比如:https://twitter.com/#!/your_activity —— 陈皓注)。另外,用户也许会使用 Firefox 或 Chromium,那么 history.pushState({"foo":"bar"}, "About", "./?page=1"); 是一个很不错的命令。因为即使地址栏上的地址改变了,页面也不会重新加载。这可让你使用 ? 而不是 #!来动态加载内容了,也告诉服务器,当下次访问该页面时给该链接发邮件,AJAX 无须再发送一个额外的请求了。
  • 别使用 “点击这里” 这类的链接。这是浪费一个 SEO 的机会,并且会对使用屏幕朗读器用户造成困惑。
  • 拥有一个 XML 网站地图,它的默认路径最好是 /sitemap.xml。
  • 当你有多个 URL 指向同一个内容时,请使用 <link rel="canonical" ... />。这个问题可利用 Google Webmaster Tools 解决。
  • 使用 Google Webmaster Tools 和 Bing Webmaster Tools。
  • 在一开始就正确安装 Google Analytics (或一个开源的分析工具,如 Piwik)。
  • 要知道 robots.txt 和搜索引擎爬虫是如何工作的。
  • 重定向请求(使用 301 永久性移走),要求 www.example.com 重定向到 example.com (或反过来),从而防止分裂两个站点之间的谷歌排名。
  • 知道并不是所有的爬虫都是好的,有些爬虫的行为并不好。
  • 如果有非文本内容(如视频等)需要添加到 Google 网站地图的话,你可以到 Tim Farley’s answer 看看,里面有一些关于这方面的,而且不错的信息。

技术

  • 搞懂 HTTP 协议,以及诸如 GET 、POST、sessions 和 cookies 这些概念,而且要知道“无状态”是什么意思。
  • 根据 W3C 文档 编写你的 XHTML / HTML 和 CSS 代码,并确保它们 有效。这里的目的是避免浏览器的怪异模式,并让它们更容易在非传统浏览器(如屏幕阅读器和移动设备)上运行。
  • 搞懂浏览器是如何处理 JavaScript。
  • 搞懂页面上的 JavaScript、样式表单和其他资源是如何加载和运行的,并考虑它们对性能的影响。现在广泛认同的做法是:除了通用脚本,如 analytics apps 或 HTML5 shims,将其它脚本放到页面底部。
  • 搞懂 JavaScript 沙箱如何工作,特别是你打算用 iframes。
  • 要意识到 JavaScript 可能会被禁用,因此 AJAX 也只是一个扩展,不一定会被运行。即使大多数普通的用户并不会理会 JavaScript 被禁用,但要记住 NoScript 正变得更流行,移动设备可能默认禁止 JavaScript,而且 Google 在索引你的网站时,并不会执行大多数 JavaScript。
  • 学会区分 301 和 302 重定向 的不同之处(这也是一个 SEO 问题)。
  • 尽可能多地学习你部署平台的相关知识。
  • 考虑使用 Reset Style Sheet(重置样式表单) 或 normalize.css。
  • 考虑使用 JavaScript 框架(如 jQuery、MooTools、Prototype、Dojo 或 YUI 3),它们会解决很多在使用 JavaScript 操作 DOM 时的浏览器差异问题。
  • 把性能和 JS 框架合在一起讨论,考虑使用诸如 Google Libraries API 服务来加载框架, 以至于浏览器能使用已缓存框架的副本,而不是从你的网站下载同样的副本。
  • 不要重复造轮子。在做任何事之前,可搜索一个组件或案例是如何实现的。但有 99% 机会是其它人已经做过了,并发布了 OSS 版本的代码。
  • 另外,即时确定你需要的是什么,但也别使用太多库。特别是在 Web 客户端,保持轻量、快速和灵活非常重要。

BUG 修复

  • 要明白你将花费 20% 时间敲代码,而剩下 80% 的时间是在维护你的代码,所以代码质量很重要。
  • 建立一个良好的错误报告解决方案。
  • 为用户提供一个能向你提交建议与批评的系统。
  • 为将来的维护和技术支持人员撰写文档,解释清楚系统是怎么运行的。
  • 经常备份!(并确保那些备份是可用的)除了备份机制,你还必须有一个恢复机制。
  • 使用版本控制系统来存储你的文件,如 Subversion、Mercurial 或 Git。
  • 别忘记进行验收测试。框架(如 Selenium)能为你提供相应帮助。特别是如果你想完全自动化测试,也可通过使用持续集成工具,比如 Jenkins。
  • 在网站运行时,要确保你有足够的日志,当然你可以使用框架,如 log4j、log4net 或 log4r。因为当你的网站某部分发生错误,你将需要一种方式找出是哪里发生的。
  • 当日志能确保你能同时捕捉到处理异常和未处理异常。那么可通过记录/分析输出的日志,可显示网站的关键问题出现在哪里。

其他

  • 服务器端和客户端都要监控和分析(应主动而不是被动)。
  • 使用能与用户保持联系的服务(如 UserVoice 和 Intercom,或其它类似的工具)。
  • 采用 Vincent Driessen 的 Git 分支模型(Git branching model)。

文中有很多省略掉的东西,并不是因为它们不是有用的答案,而是它们过于详细,且超出本问题的范围。而对于想懂得更多的人来说,他们希望学到更多的东西,因此他们应该知道这些概述。另外,我也欢迎大家编辑补充这个答案,因为我可能忽略了一些东西或犯了一些错误。

打赏支持我翻译更多好文章,谢谢!

打赏译者

工程

单页面应用:现今单页面(SPA)是王道。它的主要优势是很少加载整个页面 – 只需加载所需资源,并且无须反复重载相同的资源。如果你才刚刚开始开发一个新的 web 应用,那它很可能是 SPA。

 工程

  单页面应用:最近单页面应用(SPA)是主流,它的主要优势:SPA只需要更少的加载,只需要加载你所需要的资源,而且不需要重复一遍又一遍的加载。如果你正好准备做一个新的web应用,你应该选用SPA。

 用户体验

  表单:当提交表单时,用户应该得到一些有关提交的反馈信息。如果提交后页面没跳转到其它页面,那么就应该有一个弹出类型的提醒来让用户知道他们是提交成功了还是失败了。

  登陆重定向:如果一个用户正想访问你网址上的某个页面,但是他并未登陆,那么用户应该首先被导向登陆页面,用户登陆之后又会跳转到他之前试着去访问的页面。 如果他们在登陆时输入了错误的密码,应该给以提示,提示他们如果忘记密码了可以选择重新设置新密。

用户体验

表单:当提交表单时,用户应该得到一些有关提交的反馈信息。如果提交后页面没跳转到其它页面,那么就应该有一个弹出类型的提醒来让用户知道他们是提交成功了还是失败了。

登陆重定向:如果一个用户正想访问你网址上的某个页面,但是他并未登陆,那么用户应该首先被导向登陆页面,用户登陆之后又会跳转到他之前试着去访问的页面。 如果他们在登陆时输入了错误的密码,应该给以提示,提示他们如果忘记密码了可以选择重新设置新密。

打赏支持我翻译更多好文章,谢谢!

任选一种支付方式

图片 4 图片 5

1 赞 4 收藏 评论

用户界面(UI)

分辨率:当你开发 MVP (Minimum Viable Product –最简化可实行产品)时,不用先急着兼容各种尺寸的 UI ,那是等你的产品一下子火了之后才需要去做的事情,但要确保支持主流设备(尺寸)。

 用户界面

  分辨率:在你开发你的MVP时,你可能不需要确保你的UI能够在所有设备上优雅地工作,但是,但你应该确保它能适用于手机和平板电脑分辨率的基本范围。

 电子邮件

  订阅设置:你发送给每个用户的邮件,至少要包含一个链接到你的应用的一个页面,在这个页面上用户可以修改他们的邮箱设置;还应有一个单独链接供用户来取消订阅。 别让他们发邮件给你来取消订阅。

电子邮件

订阅设置:你发送给每个用户的邮件,至少要包含一个链接到你的应用的一个页面,在这个页面上用户可以修改他们的邮箱设置;还应有一个单独链接供用户来取消订阅。 别让他们发邮件给你来取消订阅。

关于作者:刘健超-J.c

图片 6

前端,在路上... 个人主页 · 我的文章 · 19 ·     

UX:带宽

相对于桌面端,移动端的一个大主题是带宽,它是非常珍贵的资源。因此,不应该放过任何能减少请求的机会,让它们尽可能地采用异步请求,并减少请求资源的大小。

JS & CSS – 合并与压缩:把面向具体应用的 JavaScript 和 CSS  合并到单独文件里(一个 JS,一个 CSS),并进行压缩。Grunt-contrib-concat、Grunt-contrib-cssmin 和 Grunt-contrib-uglify 都是你的好朋友。

所有资源 – 使用 CDN:它有两个主要的优势。第一个是适用托管所有资源,并本地化。CDN 确保资源服务都位于一个区域,而该区域在地理位置上是靠近用户请求资源的位置,从而减少加载时间。

第二个优势是更适用于你的依赖文件(比如,非面向特定应用的样式和 JS 代码)。为你所依赖的文件使用 CDN 能极大地减少加载时间。比如,很多网站依赖 Angular.js,使用 CDN 链接 Angular 代码会触发缓存命中,那么移动设备会从设备缓存里检索,而不是额外新建一个 HTTP 请求。

CSS – 减少占用空间:大多数开发者在初始时阶段,很可能使用某些 UI 框架(如 Bootstrap、Foundation 等)。这些框架可以很大,其压缩版通常可以常用的 CDN 上获得,但你不太可能使用它包含的所有样式。因此,类似 uncss 工具(一般配对的有 processhtml)能令你难以置信地移除最终未被使用的样式。

注意这点很重要:uncss 解析器不能提取动态样式(即通过 JavaScript 事件添加的样式),所以你必须在浏览器进行严格的测试,以确保不会去除应用程序实际用到的样式。

CSS – 将关键的文件放在头部:因为样式需要在应用完成加载前看到;次要的样式能在加载完后提供。

JS – 减少占用空间:因为应用一旦上线,程序员就不需要考虑 JavaScript 代码里内部变量的可读性,因此可以将所有如 user.name 变量重命名为 u.e,从而减少文件大小。因此,有一个工具为此而生 – 上面提及到的 uglify,虽然它会使 JS 代码完全看不懂,但极大地减小文件大小。

 用户体验:带宽

  移动端的带宽比台式电脑的带宽更加宝贵,这也是移动应用的一大话题。因此,你应该寻找一切机会来减少请求的数量,尽可能使用异步,减小被请求资源的大小。

  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文件会更小。

 移动端

  你并不一定要为你的应用开发移动客户端。但是,开发或不开发,你必须了解它是一个非常重要的决定。因为这将对开发你的应用的设计师和工程师产生重大影响。

  以下假定你已经选择某特定移动端作为您的平台之一。我碰巧使用了Grunt来作为我的构建工具,所以,我已经拥有一些有关Grunt的插件可以用。但是,可能存在一些与你正在使用的JavaScript工具类似的东西。

移动端

你并不一定要为你的应用开发移动客户端。但是,开发或不开发,你必须了解它是一个非常重要的决定。因为这将对开发你的应用的设计师和工程师产生重大影响。

以下假定你已经选择某特定移动端作为您的平台之一。我碰巧使用了Grunt来作为我的构建工具,所以,我已经拥有一些有关Grunt的插件可以用。但是,可能存在一些与你正在使用的JavaScript工具类似的东西。

用户体验:表单

这是一个很好的建议:保持表单和工作流程的简易性,当你针对移动设备作为部署平台时,这点尤其重要。因为没有人愿意在手机上填满 5 页的表单。


我希望这列表对于刚开始开发第一款 Web 应用的你有所帮助,甚至对那些之前不熟悉前端的一些优化技巧的后端或设计师。如果你有其它建议或记起某些东西,那么请让我知道,我会考虑将它添加到该列表。

感谢 Chris Dean (@ctdean),Danny King (@dannykingme) 和 Allen Rohner (@arohner),他们不仅审阅本文的草稿,而且添加了建议。

打赏支持我翻译更多好文章,谢谢!

打赏译者

 用户体验:表单

  确保你的表单和工作流程简单,总体上而言这是一个很好的建议。如果你还选择了针对移动端进行部署,那么这一点尤其重要,没有人愿意在他们的手机上填写具有5个页面的表单。

  我希望这个列表能够对那些正准备开发你的第一个web app、或是那些已经着手在开发、或对前端设计优化技巧并不熟悉的朋友有帮助。如果你着手开发之后发现了一些其它被遗落的技术或技巧,请记下来并告诉我,我会考虑把它添加在这个列表中。

  如果你也喜欢这篇文章,或觉得它对你有帮助,请分享到社区,让更多的朋友受益于它吧!

  由程序员的资料库–小柯同学翻译,有翻译不正确的地方,请帮忙更正,谢谢支持。

  英文原文: Things to Know When Making a Web Application in 2015 翻译:codecloud.net

Web App 必须了解的那些事,app那些事 在过去的一年里,我在从头开始开发我的第一个重要的Web应用。经验教会了很多以前不知道的...

 工程

  单页面应用:最近单页面应用(SPA)是主流,它的主要优势:SPA只需要更少的加载,只需要加载你所需要的资源,而且不需要重复一遍又一遍的加载。如果你正好准备做一个新的web应用,你应该选用SPA。

工程

单页面应用:最近单页面应用(SPA)是主流,它的主要优势:SPA只需要更少的加载,只需要加载你所需要的资源,而且不需要重复一遍又一遍的加载。如果你正好准备做一个新的web应用,你应该选用SPA。

打赏支持我翻译更多好文章,谢谢!

任选一种支付方式

图片 7 图片 8

1 赞 1 收藏 评论

 用户界面

  分辨率:在你开发你的MVP时,你可能不需要确保你的UI能够在所有设备上优雅地工作,但是,但你应该确保它能适用于手机和平板电脑分辨率的基本范围。

用户界面

分辨率:在你开发你的MVP时,你可能不需要确保你的UI能够在所有设备上优雅地工作,但是,但你应该确保它能适用于手机和平板电脑分辨率的基本范围。

关于作者:刘健超-J.c

图片 9

前端,在路上... 个人主页 · 我的文章 · 19 ·     

图片 10

 用户体验:带宽

  移动端的带宽比台式电脑的带宽更加宝贵,这也是移动应用的一大话题。因此,你应该寻找一切机会来减少请求的数量,尽可能使用异步,减小被请求资源的大小。

  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文件会更小。

用户体验:带宽

移动端的带宽比台式电脑的带宽更加宝贵,这也是移动应用的一大话题。因此,你应该寻找一切机会来减少请求的数量,尽可能使用异步,减小被请求资源的大小。

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、或是那些已经着手在开发、或对前端设计优化技巧并不熟悉的朋友有帮助。如果你着手开发之后发现了一些其它被遗落的技术或技巧,请记下来并告诉我,我会考虑把它添加在这个列表中。

  如果你也喜欢这篇文章,或觉得它对你有帮助,请分享到社区,让更多的朋友受益于它吧!

  由程序员的资料库–小柯同学翻译,有翻译不正确的地方,请帮忙更正,谢谢支持。

  英文原文: Things to Know When Making a Web Application in 2015 翻译:codecloud.net

用户体验:表单

确保你的表单和工作流程简单,总体上而言这是一个很好的建议。如果你还选择了针对移动端进行部署,那么这一点尤其重要,没有人愿意在他们的手机上填写具有5个页面的表单。

我希望这个列表能够对那些正准备开发你的第一个web app、或是那些已经着手在开发、或对前端设计优化技巧并不熟悉的朋友有帮助。如果你着手开发之后发现了一些其它被遗落的技术或技巧,请记下来并告诉我,我会考虑把它添加在这个列表中。

原文地址:

原文地址(英文):

 

 

本文由澳门新浦京娱乐场网站发布于新浦京娱乐场官网,转载请注明出处:程序猿该思量的手艺有这么些,开采一个