如何让程序员更容易的开发Web界面程序员

关于Web开发,每个程序员都应了解的那些事 - 博客 - 伯乐在线
& 关于Web开发,每个程序员都应了解的那些事
导读:Joel Coehoorn 在 StackExchange上问了这样一个问题:
naeblis 给出的答案非常不错(得到了1493个推荐)。 顺便说一下,StackExchange真是非常好,大家可以对同一个答案做贡献和修订,看看这个问题的你就知道了——专业的问答网站应该怎么去做。这就是我在这篇文章中也说过真正的用户体验是什么样的。
好了,下面是正文(我对原文做了一些批注,也许不对或有误导,请大家指正)
下面的这些东西可能对于大多数人并不陌生,但是可能会有些东西你以前并没有看过,或是没有完全搞懂,甚至都没有听说过。(陈皓注:我相信当你看完这个列表后,你会觉得对于我国的Web开发有点弱了,还是那句话,表面上的东西永远是肤浅的。)
一、接口和用户体验
o 小心浏览器的实现标准上的不一致,确信让你的网站能够适当地跨浏览器。至少,你的网站需要测试一下下面的浏览器:
o 一个 Webkit 引擎 (、
或是其它的移动设备上的浏览器)
(测试IE的兼容性你可以使用微软IE的 )
o 最后,你可以使用一下 来看看你的网页在不同的浏览器下是怎么被显示出来的
o 多考虑一下人们是怎么来访问你的网站而不是那些主流的浏览器:手机,读屏软件和搜索引擎,例如:一些Accessibility的东西:
, 移动设备开发:.
o 部署Staging:怎么部署网站的更新而不会影响用户的访问。
可以让你了解一些(陈皓注:Ed说了一些如版本控制,自动化build,备份,回滚等机制)。
o 千万不要直接给用户显示不友好的错误信息。
o 千万不要把用户的邮件地址以明文显示出来,这样会被爬虫爬走并被让用户的邮箱被垃圾邮件搞死。
o 为用户的链接加上 rel="nofollow" 的属性以 。(注:nofollow是 HTML的一个属性,用于通知搜索引擎“这个链接所指向的网页非我所能控制,对其内容不予置评”,或者简单地说,该链接不是对目标网站或网页的“投票”, 这样搜索引擎不会再访问这个链接。这个是用来减少一些特定垃圾页面对原网站的影响,从而可以改善搜索结果的质量,并且防止垃圾链接的蔓延。)
- 这个属于安全性的范畴。(陈皓注:比如你在Google注册邮箱时,你一口气注册超过两个以上的邮箱,gmail要求给你发短信或是给你打电话认证,比如 Discuz论坛的会限制你发贴或是搜索的间隔时间等等,更多的网站会用CAPTCHA来确认是人为的操作。 这些限制都是为了防止垃圾和恶意攻击)
o 学习如何做 . (注:是一个Web Design的理念,如:1)基础的内容和功能应该可以被所有的浏览器存取,2)页面布局的应该使用外部的CSS链接,3)Javascript也应该是外部链接还应该是
的,4)应该让用户可以设置他们的偏好)
o 如果POST成功,要,这样可以阻止用户通过刷新页面重复提交。
o 严重关注Accessibility。因为这是(注:Section 508是美国的508法案,其是美国劳工复健法的改进,它是一部联邦法律,这个法律要求所有技术要考虑到残障人士的应用,如果某个大众信息传播网站,如果 某些用户群体(如残疾人)浏览该网站获取信息时,如果他们无法正常获得所期望的信息(如无法正常浏览),那可以依据相关法规,可以对该网站依法起诉)。
为这方面的事提供很不错的资源.
o 在网上有很多关于安全的文章,但是
涵 盖了几乎所有关于Web站点安全的东西。(注:OWASP(开放Web应用安全项目- Open Web Application Security Project)是一个开放的非营利性组织,目前全球有130个分会近万名会员,其主要目标是研议协助解决Web软体安全之标准、工具与技术文件,长期 致力于协助政府或企业了解并改善网页应用程式与网页服务的安全性。OWASP被视为Web应用安全领域的权威参考。2009年下列发布的美国国家和国际立 法、标准、准则、委员会和行业实务守则参考引用了OWASP。美国联邦贸易委员会(FTC)强烈建议所有企业需遵循OWASP十大WEB弱点防护守则)
o 了解什么是
并知道怎么阻止这种攻击。
o 永远不要相信用户的输入(包括Cookies,因为那也是用户的输入)
o 对用户的口令进行Hash,并使用salt,以防止Rainbow 攻击(注:Hash算法可用MD5或SHA1等,对口令使用salt的意思是,user 在设定密码时,system 产生另外一个random string(salt)。在datbase 存的是与salt + passwd 产的md5sum 及salt。 当要验证密码时就把user 输入的string 加上使用者的salt,产生md5sum 来比对。 理论上用salt 可以大幅度让密码更难破解,相同的密码除非刚好salt 相同,最后存在database 上的内容是不一样的。google一下md5+salt你可以看到很多文章。关于, 其意思是很像密码字典表,但不同的是,Rainbow Table存的是已经被Hash过的密码了,而且其查找密码的速度更快,这样可以让攻击非常快)。使用慢一点的Hash算法来保存口令,如 bcrypt (被时间检证过了) 或是 scrypt (更强,但是也更新一些) (, )。你可以阅读一下 (注:酷壳以前曾介绍过,这里,我更建议我们应该让用户输入比较强的口令,比如Apple ID注册的过程需要用户输入超过8位,需要有大小写和数字的口令,或是做出类似于这样的用户体验的东西)。
o ,你可能会忽略到一些不容易让你查觉的东西而导致你的站点被hack了。(陈皓注:我在腾讯那坑爹的申诉系统中说过这个事了,我说过这句话——“真正的安全系统是协同整个社会的安全系统做出来的一道安全长城,而不是什么都要自己搞”,当然,很遗憾不是所有的人都能看懂这个事,包括一些资深的人)
o 了解 . () (注:有两上vendor可以帮助你,一个是
另一个是 )
o 使用 / 来加密传输登录页面或是任可有敏感信息的页面,比如信用卡号等。
o 知道如何对付session 劫持。(注:请参看wikipedia的这,)
o 避免 (XSS)。
o 保持你的系统里的所有软件更新到最新的patch。
o 确保你的数据库连接是安全的。
o 确保你能了解最新的攻击技术,以及你系统的脆弱处。
o 请读一下 .
o 请读一下 .
o 只要需要,请实现cache机制,了解并合理地使用
o 优化页面 —— 不要使用20KB图片来平铺网页背景。(陈皓注:还有很多网页页面优化性的文章,你可以STFG – Search The Fucking Google一下。如果你要调试的话,你可以使用firebug或是chrome内置的开发人员的工具来查看网页装载的性能)
o 把多个CSS文件和Javascript文件合并成一个,这样可以减少浏览器的网络连数,并且使用gzip压缩被反复用到的文件。
o 学习一下
这个网站上的东西,上面有很多非常不错的改善前端性能的指导,以及
这个工具。
是另一个用来做性能采样的工具。这两个工具都需要安装
o 为那些小的图片使用 ,就像工具条一样。 (参看 “最小化 HTTP 请求” ) (注:把所有的小图片合并成一个图片,然后用CSS把显示其中的一块,这样,这些小图片只用传输一次)
o 繁忙的网络应该考虑在不同的域名下。(注:比如有专门的图片服务器——图片相当耗带宽,或是专门的Ajax服务器)
o 静态网页 (如,图片,CSS,JavaScript,以及一些不需要访问cookies的网页) 应该放在一个的独立的域名下,因为所有在同一个域名或子域名下的cookie会被这个域名下的请求一同发送。另一个好的选择是使用 Content Delivery Network (CDN).
o 使用单个页面的HTTP请求数最小化。
o 为Javascript使用
或是 (注:压缩Javascript代码可以让你的页面减少网络传输从而可以得到很快的喧染。注意,并不是所有的工具都可以正确压缩Javascript的,Google的这个工具甚至还可以帮你优化你的代码)
o 确认你的网站有一个 favicon.ico 文件放在网站的根下,如 /favicon.ico. ,就算这个图标文件没有在你的网页中明显说明,浏览器也会请求。如果你没有这个文件,就会出大量的404错误,这会消耗你的服务器带宽。(陈皓注:服务器返回404页面会比这个ico文件可能还大)
四、SEO (搜索引擎优化)
o 使用 “搜索引擎喜欢的” URL,如:使用 </pages/45-article-title 而不是 </index.php?page=45 (陈皓注:这里的URL是说Wordpress的,后者是默认的)
o 如果你的动态页面要使用 # ,那么请把其改成 #! ,而在服务端,你需要处理$_REQUEST["_escaped_fragment_"] 这是Google搜索引擎需要的。换句话说,./#!page=1 会被Google搜索引擎转成 ./?_escaped_fragments_=page=1。 (陈 皓注:通常来说URL中的#后的东西都不会被传到服务器上,所以,为了要让Google可以抓取AJAX的东西,你需要使用#!,而Google会把 “#!”转成“_escaped_fragment_”来向服务器发请求,Twitter的大量的链接者是#!的,比如:)。另外,用户也许会使用Firefox 或 Chromium, history.pushState({"foo":"bar"}, "About", "./?page=1"); 是一个很不错的命令。所以,就算是我们的地址栏上的地址改变了,页面也不会重新装载。这可以让你使用 ? 而不是 #! 也能无刷地保住当前的动态的页面,这可以让AJAX的请求被浏览器记住。
o 别使用 “click here” 这样的链接。这样一来,无法SEO,而且对于一些需要使用读屏人来说很不友好(注:关于读屏软件,可参见《》)
o 做一个 ,并放在网端的根下 /sitemap.xml. (注:这个文件可以让搜索引擎了解你的网站图)当你有多个URL指向同一个网页的使用,使用
你可以使用
来查看相关的问题。
(或是别的开源的网站分析工具,如: ).
和搜索引擎爬虫是如何工作的。
o 重定向请求 (使用 301 重定向网站) ,如果你要把
定向到 <(或是其它的变更) 这样可以防止Google的rank因为域名的变化发生改变。(陈皓注:301重定向一般用作域名变更)
o 知道并不是所有的爬虫都是好的,有些爬虫的行为并不好。(陈皓注:比如向你的网站发大量的请求导致服务器性能低下)
o 如果你有一些非文本的内容需要在 Google’s sitemap 中,比如视频什么的。,可以让你看到很多有价值的东西。
o 理解什么是
比如 GET, POST, sessions, cookies等,了解什么是 “stateless” 无状态。
o 让你的 / 和
符合 ,并确认他们都是 。我们的目标是避免浏览器的 “quirks mode”,并且可以让其更容易地能和非标准的浏览器工作,比如读屏器或移动设备。
o 理解浏览器是怎么处理 JavaScript 的。(注:你会看到有些Javascript代码在页面上前面,有些则是在后面,所以你需要对其了解清楚为什么是这样)
o 了解浏览器是怎么装载 JavaScript,CSS和其它资源的,了解其对视觉上的影响。(陈皓注:10年前我做网页的时候因为HTML还很弱,所以只能使用table来布 局,使用table布局的问题就是整个table读完后页面才会显示,用户的视觉体验并不好)。在某些情况下,你可能需要。
o 理解 JavaScript 的 sandbox 是怎么怎么工作的,尤其是你想使用iframes。
o 请注意 JavaScript 可能会被禁止,这样会让你的AJAX失效。就算是大多数用户都开启了Javascript功能,但是也可能在一些情况下脚本是不被运行的,比如移动终端上,搜索引擎抓网页的时候也并不会执行你的脚本。
(这也是一个SEO的问题).
o 尽可能多地学习你的部署平台。(比如:操作系统,Web Server:Apache/Nginx,防火墙,数据库,等等)
o 考虑使用一个 .
o 考虑使用 JavaScript 框架(如: , , ,
或 ),它们会很好的兼容于不同的浏览器。(注:强烈推荐你看一下本站的一文)
o 把视觉效果和JS框架合在一起讨论,考虑使用一个Service,如: 来装载框架,这样可以让浏览器可能早就把这个JS框架已经cache了而不需要再从你的网站上下载了。
六、Bug fixing
o 明白你会花20%的时间写代码,而80%的时候在维护,所以你要小心编码。(注:参见《》一文)
o 设计一个好的错误报告机制。
o 设计一个入口,可以让人们联系到你并给你建议和批评。
o 为你开发的东西形成文档,这样可以让后来的人容易维护你的软件和系统。
o 频繁备份(也可确保你的这些备份功能正常)
有一些忠告。你还需要有一个恢复策略,而不只是一个备份策略。
o 使用一个版本控制系统来保存你的代码,如:
o 别忘了做Acceptance Testing,使用
能帮到你。
o 确保你有足够的日志,你可以使用 log4j, log4n 或 log4r。如果出了问题,这是可以让你快速找到问题的方式。
o 当你写日志的时候,确保你记录了你捕获了处理和未处理异常。报告和分析日志可以让你知道你网站的问题。
o 这里有多的东西被省略了,并不是因为那些可能不是有帮助的答案,而是因为那些东西都太细节了,超出了这个问题的范围,因为这本来就是一个Web开发 需要了解东西的Overview。我想你可以去看一下其它人的答案,我有时间,我也会补充别人的答案进来。请随意编辑这个答案,因为可能有些东西忘了,也 有可能有些东西不对。
可能感兴趣的话题
说的够全面,但是这样的工作不是一个两个人能完成的,需要一个团队,自己还有不少东西要学习
最新评论(期待您也参与评论)
汇集优质的Python技术文章和资源。人生苦短,我用Python!
JavaScript, CSS, HTML5 这里有前端的技术干货!
关注安卓移动开发业界动态,分享技术文章和优秀工具资源。
关注iOS移动开发业界动态,分享技术文章和优秀工具资源。
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,做一个小而精的精选博客,为“快餐”添加一些“营养”元素。
欢迎关注更多频道
&#8211; 分享和发现有价值的内容与观点
&#8211; 为IT单身男女服务的征婚传播平台
&#8211; 优秀的工具资源导航
&#8211; 翻译传播优秀的外文文章
&#8211; 国内外的精选博客文章
&#8211; JavaScript, HTML5, CSS
&#8211; 专注Android技术分享
&#8211; 专注iOS技术分享
&#8211; 专注Java技术分享
&#8211; 专注Python技术分享
(加好友请注明来意)
网站使用问题
请在询问或者反馈
& 2015 伯乐在线
赞助云主机如何让程序员更容易的开发Web界面_百度知道
如何让程序员更容易的开发Web界面
提问者采纳
拖拉拽。。。和可视化的属性设置,以及时时的渲染反馈,所见即所得。这个ms的vs开发winform么的不就这样嘛。可以模仿。如果你说的不是工具,而是代码级的。如何更容易?程序员自身素质和分工合作么的就不说了,最有效的比如可以代码复用、模块化代码等方式。
来自团队:
其他类似问题
为您推荐:
程序员的相关知识
其他1条回答
界面一般都是美工做,程序员一般只写程序
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如何让程序员更容易的开发Web界面_百度知道
如何让程序员更容易的开发Web界面
提问者采纳
初级发展(学习期)前端应该学习HTML javascript css 能够制造简单的前端页面满足自己的工作需求后端应该学习asp.net or jsp or php 任一一个都行,主要是数据处理交互数据库ORACLE or Sqlserver 任一一个都行,以SQL语句为主为什么要学这么多呢,因为初级你什么都学的不深不精,和WEB相关的什么技术都要知道点相信你接触过的某一部分的专家都其他部分都能和你侃个半天,技术是互通的,全面了解所有WEB技术对你以后专攻某一技术是必要条件中级发展(工作期)工作期公司不可能要求所有WEB工作都你做,你可能只负责一部分这就要结合公司安排、你个人兴趣、命啊……来选择你主要从事的WEB工作这时候,你要深入研究你主攻的内容,其他内容要多看新闻,了解流行及新兴技术主攻内容,闭着眼睛都能写其他技术,上网一查帮助资料也能搞出来现在你是个熟练工了,工资不等高级发展(研究期)公司不会给你太多的学习机会,有时提供的培训也不一定符合你的要求这时你要留心你从事的WEB项目细分(手机应用啊、地图应用啊、门户应用啊、SNS啦)研究他们的系统架构、服务器部署、海量数据处理、效率解决方案……还有要了解商业上的东西,能够分析其用户、市场、盈利模式,能够做出短期预测最好主要还看你是技术路线还是管理路线!
来自团队:
其他类似问题
为您推荐:
程序员的相关知识
其他1条回答
使用框架,掌握html5和css
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前访客身份:游客 [
当前位置:
我是一个JAVA web 开发程序员,怎么才能找到一家互联网公司的职位。
每次投简历都没有互联网公司招聘我,难道用的技术不一样吗、
共有17个评论
<span class="a_vote_num" id="a_vote_num_
Java这个行业还是很缺人的,但是也容易形成高不成低不就的情况,这就是市场!不过不要灰心,工资可以先要的少一点!以后再慢慢学,进入了企业见到的东西就会多起来的,每个人可能都会经过这个步骤的!
--- 共有 1 条评论 ---
我是北京的猎头summer。手里有很多Java类高端岗位,希望和建立一个初步的联系呢。
联系方式:qq:
微信:summer_mjy_
(3周前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
多写点项目经验,还有把 Web 前端的东西都列出来,什么Jquery ,CSS Html5, Js, Json 等等,再加上几个例子,介绍下哪些功能是你开发的。差不多了吧。
还是多的,看看里面的要求,编也要编出个简历来。&
--- 共有 1 条评论 ---
我是北京的猎头summer。手里有很多Java类的高端岗位,希望和建立一个初步的联系呢。
联系方式:qq:
微信:summer_mjy_
(3周前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
回复MARK一下~
<span class="a_vote_num" id="a_vote_num_
很不一样,坐等大神来解答
<span class="a_vote_num" id="a_vote_num_
比较努力才行
<span class="a_vote_num" id="a_vote_num_
可以聊一下,&我是互联网公司,&如果在北京的话&&加我q&
<span class="a_vote_num" id="a_vote_num_
首先要看他招聘的要求。比如熟练websocket,nosql,分布式缓存。等等。然后有针对性的学习。。花长一点的时间准备。。
--- 共有 1 条评论 ---
我是北京的猎头summer。手里有很多Java类的高端岗位,希望和建立一个初步的联系呢。希望对您本人或者相关的朋友有所帮助呢
联系方式:qq:
微信:summer_mjy_
(3周前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
工作6年整,我是从企业软件转到互联网的(某企业软件公司——二线互联网公司——一线互联网公司),可以给这位同学些建议。首先是java基础,框架什么的无所谓,基础好意味着你写代码问题少,遇到问题调的快;其次是分布式方向,比较好上手的是hadoop,很加分。
另外,看了一些帖子发现经常有人没工作几年就20k多,这个在一二线互联网公司并不常见,因为是有级别序列的,除非你特别优秀(比如是学霸,论文登了某某权威杂志什么的)。所以如果想拿到比较高的薪水,在公司的时间也是一项重要指标
--- 共有 2 条评论 ---
我是北京的猎头summer。手里有很多技术和产品类的高端岗位,希望和建立一个初步的联系呢。希望对您本人或者相关的朋友在事业上有所帮助呢。
联系方式:qq:
微信:summer_mjy_
(3周前)&nbsp&
能否留个Q,朋友
(1年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
互联网公司区别很大
你要搞java,没若干年经验很多地方不要,但是有底子,搞python,php,.net的可能有意向
就是高不成低不就了,现在还好,我06年时候找java工作才叫痛苦。
--- 共有 1 条评论 ---
我是北京的猎头summer。手里有很多Java类的高端岗位,希望和建立一个初步的联系呢。希望对您本人或者相关的朋友有所帮助喔
联系方式:qq:
微信:summer_mjy_
(3周前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
楼上讲的好,我回复下,mark下楼上的话
更多开发者职位上
有什么技术问题吗?
jiangke...的其他问题
类似的话题

我要回帖

更多关于 web界面开发 的文章

 

随机推荐