讨论一下,如何并行开发一个web页面开发

研发周报:微软无视W3C 拒绝遵循WebRTC标准
发表于 14:09|
作者张红月
摘要:忙碌的一周总算过去,闲暇时不妨来细细品味我们精心为你呈现的这份技术大餐。本期热点:屏蔽GitHub是互联网时代的“闭关锁国”吗?微软无视W3C 拒绝遵循WebRTC标准;为何乔布斯脾气怪糟 却能让一群最优秀的人为他卖命?
我们挑选了本周研发频道的精华文章,推荐给您的绝对&有料&,闲暇时不妨来细细品味我们精心为你呈现的这份技术大餐,或许有您意想不到的收获。本期热点:屏蔽GitHub是互联网时代的&闭关锁国&吗?微软无视W3C 拒绝遵循WebRTC标准;为何乔布斯脾气怪糟 却能让一群最优秀的人为他卖命?
本期热点回放:
日前,全球最大的社交编程及代码托管网站GitHub被&墙&掉一事在国内技术人员间引起激烈热议。本次屏蔽莫名其妙,有人猜测是或其他项目用了这个工具社区,导致被屏蔽。而在更多人看来,封锁GitHub相当于为了抓一只老鼠而点了整栋房子。最可能的结果是老鼠没烧到,房子却没了。
创新工场CEO李开复认为:在GitHub的300万会员中,中国是第四大国。GitHub是程序员学习和与世界接轨的首选工具。GitHub并无意识形态,也没有反动内容。封锁GitHub毫无道理,只会导致国内程序员和国际脱轨,失去竞争力和前瞻性。
若干年后,这种行为会被定义为互联网时代的&闭关锁国&吗?
在广大开发者的不懈努力下,GitHub,回归后的GitHub已在搜索上已进行了一些改进,这些改进包括技术上、设计上、高级搜索上和资源库结果(Repository Results)等。
微软刚刚发布了自己CU-RTC-Web标准的原型,无视了W3C&既定标准&WebRTC&。为什么这么做?微软也有他自己的理由。
首先,WebRTC尚未完备,微软相信他能阐明如何解决带宽变化下的挑战,以及WiFi下并行的失效备援,虽然Redmond的规范未被广泛采用,但仍有其价值。
第二,微软还相信WebRTC最终也不会像它的鼓吹者那样,最终会成为真正的标准,问题在于SDP。因为SDP本非为浏览器间异步通信所设计,WebRTC使用到的一些东西已经超过了其规范,因此微软及其盟友认为Chrome和Firefox最终的实现也不会互相兼容。
除此之外,WebRTC的基础&&SDP标准并非由W3C管理,而是IETF的MMUSIC(&Multiparty Multimedia Session Control&),如果他们不合作的话,最终也很难实现浏览器间的兼容。
目前,微软的标准已经在IE10和最新版本的Chrome中以插件的形式实现。也许现在标准确立的问题停留在WebRTC和SDP之间,如果能找到一个快速解方案,WebRTC将毫无疑问成为标准;反之微软的无SDP提议则更合适。
微软龚培元对此表示:&我们内部近期还在召开WebRTC的会议,CU-RTC-Web是为Skype等封闭应用服务的。微软两方面是都兼顾的,不存在非此即彼的事情&。而W3C负责人Alan Bird也表示,比如谷歌及其他大型互联网企业也都在推自己的标准,融合和竞争是很常见的态势。
日前,一篇旧文
(CSDN译文)冲上了Top3,引发了激烈讨论。文中作者回忆了自己和乔帮主一起工作的真实回忆。Glenn Reid从Next时代就跟着帮主,负责了iMovie和iPhoto的开发,团队一开始只有3到4人,产品的细节讨论帮主都参加,帮主最喜欢设计产品,并说自己当CEO的原因是可以自由参加产品设计讨论。
与此相对应的一篇趣贴来自于Quora上的 乔布斯脾气暴躁,不善于与人交际,却依然能团结一群最优秀的人为他卖命。在贴中,认为是因为:&乔布斯既能准确认清现在,又能清楚地看到未来。如果你曾经与这些人共事过,你的职业生涯高度将被拔高,他们会是你最好的职业引导师。&
将其归功于乔布斯的&现实扭曲力场&()能力。所谓现实扭曲力场,原意是说乔布斯口若悬河的表述能力、过人的意志力、扭曲事实以达到目标的迫切愿望,所形成的视听混淆能力。由此推动人做不可能的事。一个早期的是,当年Steve Wozniak在创建一个叫突围(Breakout)的游戏,Steve Wozniak告诉他,这将需要几个月的时间,但乔布斯盯着他,坚持能在四天之内完成,他能做到这一点。Steve Wozniak知道那是不可能的,但他最后真的在四天之内完成了。
本文作者Kate Matsudaira是一位美丽的女工程副总裁,曾在Sun Microsystems、微软、亚马逊这些一流的IT公司任职。她有着非常丰富的工作经验和团队管理经验,当过程序员、项目经理、产品经理以及人事经理。专注于构建和操作大型Web应用程序/网站,目前她的主要研究方向是SaaS(软件即服务)应用程序和云计算(如大家所说的大数据)。
本文是作者在一书介绍如何构建可扩展的分布式系统里的内容,我们进行了翻译并分为上下两篇分布分享给大家。在上一篇《》中,我们举例讨论了设计分布式系统需要考虑的核心要素:可用性、性能、可靠性、可扩展、易管理、成本。而在这篇文章中,我们将深入介绍如何设计可扩展的数据访问,包括负载均衡、代理、全局缓存、分布式缓存等。
构建快速可伸缩的数据访问块
在讨论完设计分布式系统的核心考虑因素后,下面让我们再一起讨论难点部分:可扩展的数据访问。
大多数简单的Web应用程序,例如LAMP堆栈应用程序,看起来如图5所示:
&图5:简单的Web应用程序
随着系统渐渐扩大,他们将面临两大主要挑战:构建可扩展的应用程序服务器和数据访问机制。在一个高可扩的应用程序设计中,通常最小化的应用程序(或Web)服务往往能体现一种无共享的架构。这就使得应用程序服务器层要进行横向扩展,这种设计的结果就是把繁重的工作转移到堆栈下层的数据库服务和配置服务上,这才是这一层上真正的可扩展和性能挑战。
本文的剩余部分专门讨论一些常见策略和方法来使这些服务可以快速和可扩展,提升数据的访问速度。
图6 过于简化的的Web应用程序
大多数系统可能会简化成图6那样,这是个非常不错的起点。如果你有大量的数据,想要快速便捷地访问,就好比在你书桌抽屉的最上面有一堆糖果。虽然过于简化,但也暗示了两个难题:可扩展存储和快速的数据访问。
为了这个例子,让我们假设有许多太字节(TB)数据,并且允许用户随机访问一小部分数据(见图7)。这与本文图片应用程序里的在文件服务器上定位一个图片文件非常相似。
图7 访问特定数据
这也是个非常大的挑战,把TB级数据加载到内存中的成本比较昂贵,这可以直接转化到磁盘上进行IO。从磁盘上读取要比内存慢的多&&内存访问和Chuck Norris一样快,而磁盘的访问速度要比在DMV上慢。这个速度不同于大数据集上的合计,实数内存访问大概要比顺序访问快6倍,或者比随机从磁盘上读取快10万倍(参考)。此外,即使是unique ID,想要在较少的数据中查找确切的位置也是一项艰巨的任务。
函数式编程这个不温不火的语言由来已久。有人说,这一年它会很火,尽管它很难,这也正是你需要学习的理由。那么,为什么函数式编程在Java中很危险呢?也许这个疑问普遍存在于很多程序员的脑中,作者Elliotte对此发表了一些见解,我们一起来看看他是怎么说的。
在我的日常工作中,我身边的开发者大多是毕业于CS编程顶级院校比如MIT、CMU以及Chicago,他们初次涉及的语言是Haskell、Scheme及Lisp。他们认为函数式编程是一种自然的、直观的、美丽的且高效的编程样式。但奇怪的是,我和我的同事并没有为Haskell、Scheme、Lisp、Clojure、Scala而编程,这个行业里的绝大部分人都会使用Python、 Ruby、Java或C#等编程,因为它们用起来比较顺手。但在Java中,函数式编程却是低效且危险的。
每隔几个月,我都会在调试中发现问题,究其原因最终可追溯到滥用函数的想法以及编程算法,更重要的原因是这个虚拟机无法创建这种编程样式。
目前上收录的API数已过8000,这也说明API的火热趋势锐不可当。在2012年,CSDN就做过许多关于API已越来越热的报道,如、,甚至有人提问这似乎也在说明软件已变的越来越开放。
&(需翻墙)
十大最差实践
错误处理不完善或者比较差
Rest API忽视HTTP规则
暴露原始底层数据模型
安全复杂性
意外和非法发布
缺乏开发经验
期待一个MVC架构带给你一个伟大的API
假设你构建API,用户就会被引进来(Assume if you build it they will come)
技术支持不充分
文档不给力&
五大最佳实践
提供一个有价值的服务器
有一个计划和商务模型
它应该被管理和测量
提供充足的技术支持
在这五个最佳实践里,最重要的是提供一个有价值的服务器,如果你在一台非常糟糕的服务上建立了一套非常伟大的API,那么就相当于给猪涂口红。
设计行业日新月异,设计师和开发人员必须紧跟潮流。2013年,网页设计师应该做什么准备?我们一起来欣赏时下流行的网页设计趋势&&单页Web设计。
单页网站设计正快速成为Web应用开发标准,单页网站是指只有一个页面的网站,这种形式的网站曾经非常流行,但并不是每个网站都适合做成单页。很多开发者的作品集网站会设计成单页网站,在内容很少而需要追求创意的时候,单页网站是很好的选择。单页Web设计网页因其超强的视觉效果、独特的外观备受用户关注。单页Web设计同样适用于移动版网页,拜移动大潮所赐,越来越多用户倾向于用手机观看网页。
单页面应用是指用户通过浏览器加载独立的HTML页面并且无需离开此导航页面,这也是其独特的优势所在。对用户操作来说,一旦加载和执行单个页面应用程序通常会有更多的响应,这就需要返回到后端Web服务器,而单页面应用为用户提供了更接近一个本地移动或桌面应用程序的体验。
那么,如何做出优美的单页设计呢?如果你想从事这一方面的设计,那么文中例举的四大案例或许能带给你一丝灵感。
单页设计之无导航
单页设计之点击导航
单页设计之&&滚动导航
单页设计之&&添加效果
最后还分享了设计单页Web成功秘诀:
保持简单。不要疯狂的使用颜色和字体。要知道太多的东西挤压在一个小空间里,势必会带来反效果。明确你的网站想传达什么样信息并围绕这个做下去。
思考比例。如果你有大量的内容,那么换一种方式。页面上承载太多东西,以致无法达到预期效果。
创建层次结构和导航功能。向用户推荐,在哪点击或者滚动(在可能的情况下)。确保用户通过网站能获取到什么;确保导航工具包括菜单、点击按钮或者滚动、网站内容和联系方式等能轻易被找到、使用。
展示。展示网页设计优势,给用户带来额外的惊喜&&动画、悬停效果、伟大的艺术或者排版。把设计发挥到淋漓尽致。
网页设计师所做的不是一项简单的工作,需要不断学习和适应行业的最新潮流,因为新的很快就会变成旧的,而现在正在变成过去。
JSON Template是一款非常强大的模板语言,目前有Python和JavaScript两个实现版。遵循Apache License 2.0许可。
JSON Template使用起来也非常方便,只需把Python file或者JavaScript file拷贝到你的项目里即可,无任何约束限制。
&&&&import&jsontemplate &&&&&jsontemplate.expand('Hello&{name}',&{'name':&'world'}) &'Hello&world'&
这个例子看起来与people.*非常相似,JavaScript版是对这个API的直接转换。
点击查看更多。
有哪些特征:
JSON Template是JSON模板的补充
简单易读的语法,即使是非专业程序员也可以轻松编辑模板文件
默认&格式化&设置,因此很容易获取escaping/security权利
可扩展特定应用程序格式
这种较小程度的自定义语法可以解决许多领域里的问题(不仅仅是Web方面)
定义良好的声明、面向数据API,并且使用JSON作为数据模型
项目首页:
下载地址:
详细介绍及教程:
相关阅读:
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
web网页并行爬行研究.pdf 4页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
web网页并行爬行研究
你可能关注的文档:
··········
··········
计算机应用研究
Web网页并行爬行研究
严亚兰 ,查先进
(1.武汉大学信息管理学院,湖北 武汉.武汉大学 信息资源研究中心,湖北 武汉430072)
摘 要:首先分析Web环境对并行爬行的需求,然后对并行爬行带来的优势和面临的问题进行探讨,进一步对
并行爬行模式和策略展开深入研究。
关键词:并行爬行;模式;策略
中图法分类号:TP393.06
文献标识码:A
文章编号 :05)04-0226-03
StudyontheParallelCrawlingonWeb
YANYa.1an,ZHAXian-jin
(1.SchoolofInformationManagement,WuhanUniversity,WuhanHubei430072,China;2.ResearchCenterofInformatoinResources,Wuhan
University,WuhanHubei430072,China)
Abstract:AnalyzestheneedfortheparallelcrawlingontheWebanddiscussesitsadvna tagesnadproblems.Then,theessay
reserachesintothemodesand therelativestrategiesoftheparallelcrawling.
Keywords:PraallelCrawling;Mode;Strategy
Web是一个 自组织的庞大的信息资源库,物理上处于不
满足各种应用的需求。
同地理位置的服务器上的资源通过网络形成了一个逻辑上的
整体,并通过网页之间的链接使得该资源体成为最大的非线性
1 并行爬行带来的优势和面临的问题
组织结构。任何一个用户通过浏览器可以非常方便地在不同
对并行爬行的需求至少体现在以下两个方面:①巨额的存
资源间进行链接,这极大地迎合了人类思维的发散性需求;另
量网页和网页数量的剧增趋势迫使Crawler必须在尽可能短的
外,Web为信息资源共享打造了一个全球范围的平台,使得各
时间内爬行更多的网页;②以数字形式存储在服务器上的网页
种基于网络的应用从梦想变为现实。随着网络用户和网络应
在大小和内容上很容易也经常发生变动,为了保证爬回的网页
用的增多,网页数量呈现出前所未有的急剧膨胀,这给网络爬
与实际存储在各个服务器上的网页的一致性 ,对网页的爬行不
虫 (Crawler)带来了新的挑战。
可能是一次性的,而需要Crawler定期或不定期地重新爬行同
Crawler可看成是一个模块,其中的每一个 Crawler就是一
样的网页以满足更新需求。庞大的网页数量和不断重新爬行
个能自动爬行Web网页以供生成本地索引和/或本地网页数
的需求使得Crawler很难基于串行爬行来高效率地完成爬行任
据集的程序。对于随机爬行来说,首先,Crawler从一个初始
务,这势必导致对并行爬行的需求。并行爬行是指多个爬行进
URLs集(称为种子 URLs)出发,从中获取一个 URL,下载网
程同时在地理
正在加载中,请稍后...[讨论]web开发哪种才是规范的?是从表现层开始自上而下,还是数据层开始自下而上?
[问题点数:20分]
本版专家分:1490
结帖率 89.05%
CSDN今日推荐
本版专家分:67990
2016年3月 Java大版内专家分月排行榜第一2016年2月 Java大版内专家分月排行榜第一2015年11月 Java大版内专家分月排行榜第一2015年10月 Java大版内专家分月排行榜第一2014年8月 Java大版内专家分月排行榜第一2014年7月 Java大版内专家分月排行榜第一2014年5月 Java大版内专家分月排行榜第一
2016年1月 Java大版内专家分月排行榜第二2015年12月 Java大版内专家分月排行榜第二2015年8月 Java大版内专家分月排行榜第二2015年3月 Java大版内专家分月排行榜第二2015年1月 Java大版内专家分月排行榜第二2014年12月 Java大版内专家分月排行榜第二2014年11月 Java大版内专家分月排行榜第二2014年6月 Java大版内专家分月排行榜第二2014年4月 Java大版内专家分月排行榜第二2014年1月 Java大版内专家分月排行榜第二2013年11月 Java大版内专家分月排行榜第二
2015年9月 Java大版内专家分月排行榜第三2015年6月 Java大版内专家分月排行榜第三2015年5月 Java大版内专家分月排行榜第三2015年2月 Java大版内专家分月排行榜第三2014年3月 Java大版内专家分月排行榜第三2013年12月 Java大版内专家分月排行榜第三
本版专家分:25
本版专家分:25
本版专家分:2627
本版专家分:50332
优秀大版主2015年8月优秀大版主2015年9月优秀大版主
2015年2月 Java大版内专家分月排行榜第二2014年3月 Java大版内专家分月排行榜第二
2014年9月 Java大版内专家分月排行榜第三2014年6月 Java大版内专家分月排行榜第三2014年2月 Java大版内专家分月排行榜第三2013年11月 Java大版内专家分月排行榜第三2013年10月 Java大版内专家分月排行榜第三
本版专家分:1490
本版专家分:25
本版专家分:25
本版专家分:636
本版专家分:25
本版专家分:8069
2013年10月 挨踢职涯大版内专家分月排行榜第一2013年8月 挨踢职涯大版内专家分月排行榜第一2013年7月 挨踢职涯大版内专家分月排行榜第一2013年6月 挨踢职涯大版内专家分月排行榜第一
2013年5月 挨踢职涯大版内专家分月排行榜第二
2013年9月 Java大版内专家分月排行榜第三
本版专家分:8069
2013年10月 挨踢职涯大版内专家分月排行榜第一2013年8月 挨踢职涯大版内专家分月排行榜第一2013年7月 挨踢职涯大版内专家分月排行榜第一2013年6月 挨踢职涯大版内专家分月排行榜第一
2013年5月 挨踢职涯大版内专家分月排行榜第二
2013年9月 Java大版内专家分月排行榜第三
本版专家分:687
本版专家分:888
本版专家分:1490
本版专家分:8069
2013年10月 挨踢职涯大版内专家分月排行榜第一2013年8月 挨踢职涯大版内专家分月排行榜第一2013年7月 挨踢职涯大版内专家分月排行榜第一2013年6月 挨踢职涯大版内专家分月排行榜第一
2013年5月 挨踢职涯大版内专家分月排行榜第二
2013年9月 Java大版内专家分月排行榜第三
本版专家分:1017
本版专家分:8891
本版专家分:8891
本版专家分:1490
本版专家分:8891
本版专家分:135
本版专家分:0
本版专家分:293
2005年7月 荣获微软MVP称号2006年7月 荣获微软MVP称号
2005年4月 Web 开发大版内专家分月排行榜第一
2005年2月 硬件使用大版内专家分月排行榜第二
2006年5月 Web 开发大版内专家分月排行榜第三2005年12月 Web 开发大版内专家分月排行榜第三2005年5月 Web 开发大版内专家分月排行榜第三2004年10月 Web 开发大版内专家分月排行榜第三2004年9月 Web 开发大版内专家分月排行榜第三
本版专家分:293
2005年7月 荣获微软MVP称号2006年7月 荣获微软MVP称号
2005年4月 Web 开发大版内专家分月排行榜第一
2005年2月 硬件使用大版内专家分月排行榜第二
2006年5月 Web 开发大版内专家分月排行榜第三2005年12月 Web 开发大版内专家分月排行榜第三2005年5月 Web 开发大版内专家分月排行榜第三2004年10月 Web 开发大版内专家分月排行榜第三2004年9月 Web 开发大版内专家分月排行榜第三
本版专家分:45
本版专家分:253
本版专家分:1490
本版专家分:426
本版专家分:427
本版专家分:2839
本版专家分:17
本版专家分:8
本版专家分:13426
本版专家分:0
本版专家分:0
本版专家分:100
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐【图片】Web 开发模式演变历史和趋势【高级前端开发吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:11贴子:
Web 开发模式演变历史和趋势收藏
今天的《前端文摘》给大家分享一篇玉伯的文章。文章详细介绍了 Web 开发的四种常用模式以及未来可能成为流行趋势的 Node 全栈开发模式,相信你看了以后一定会有收获。 一、简单明快的早期时代可称之为 Web 1.0 时代,非常适合创业型小项目,不分前后端,经常 3-5 人搞定所有开发。页面由 JSP、PHP 等工程师在服务端生成,浏览器负责展现。基本上是服务端给什么浏览器就展现什么,展现的控制在 Web Server 层。这种模式的好处是:简单明快,本地起一个 Tomcat 或 Apache 就能开发,调试什么的都还好,只要业务不太复杂。然而业务总会变复杂,这是好事情,否则很可能就意味着创业失败了。业务的复杂会让 Service 越来越多,参与开发的人员也很可能从几个人快速扩招到几十人。在这种情况下,会遇到一些典型问题:1、Service 越来越多,调用关系变复杂,前端搭建本地环境不再是一件简单的事。考虑团队协作,往往会考虑搭建集中式的开发服务器来解决。这种解决方案对编译型的后端开发来说也许还好,但对前端开发来说并不友好。天哪,我只是想调整下按钮样式,却要本地开发、代码上传、验证生效等好几个步骤。也许习惯了也还好,但开发服务器总是不那么稳定,出问题时往往需要依赖后端开发搞定。看似仅仅是前端开发难以本地化,但这对研发效率的影响其实蛮大。2、JSP 等代码的可维护性越来越差。JSP 非常强大,可以内嵌 Java 代码。这种强大使得前后端的职责不清晰,JSP 变成了一个灰色地带。经常为了赶项目,为了各种紧急需求,会在 JSP 里揉杂大量业务代码。积攒到一定阶段时,往往会带来大量维护成本。这个时期,为了提高可维护性,可以通过下面的方式实现前端的组件化:   理论上,如果大家都能按照最佳实践去书写代码,那么无论是 JSP 还是 PHP,可维护性都不会差。但可维护性更多是工程含义,有时候需要通过限制带来自由,需要某种约定,使得即便是新手也不会写出太糟糕的代码。如何让前后端分工更合理高效,如何提高代码的可维护性,在 Web 开发中很重要。下面我们继续来看,技术架构的演变如何解决这两个问题。 二、后端为主的 MVC 时代为了降低复杂度,以后端为出发点,有了 Web Server 层的架构升级,比如 Structs、Spring MVC 等,这是后端的 MVC 时代。
  代码可维护性得到明显好转,MVC 是个非常好的协作模式,从架构层面让开发者懂得什么代码应该写在什么地方。为了让 View 层更简单干脆,还可以选择 Velocity、Freemaker 等模板,使得模板里写不了 Java 代码。看起来是功能变弱了,但正是这种限制使得前后端分工更清晰。然而依旧并不是那么清晰,这个阶段的典型问题是:1、前端开发重度依赖开发环境。这种架构下,前后端协作有两种模式:一种是前端写 demo,写好后,让后端去套模板。淘宝早期包括现在依旧有大量业务线是这种模式。好处很明显,demo 可以本地开发,很高效。不足是还需要后端套模板,有可能套错,套完后还需要前端确定,来回沟通调整的成本比较大。另一种协作模式是前端负责浏览器端的所有开发和服务器端的 View 层模板开发,支付宝是这种模式。好处是 UI 相关的代码都是前端去写就好,后端不用太关注,不足就是前端开发重度绑定后端环境,环境成为影响前端开发效率的重要因素。2、前后端职责依旧纠缠不清。Velocity 模板还是蛮强大的,变量、逻辑、宏等特性,依旧可以通过拿到的上下文变量来实现各种业务逻辑。这样,只要前端弱势一点,往往就会被后端要求在模板层写出不少业务代码。还有一个很大的灰色地带是 Controller,页面路由等功能本应该是前端最关注的,但却是由后端来实现。Controller 本身与 Model 往往也会纠缠不清,看了让人咬牙的代码经常会出现在 Controller 层。这些问题不能全归结于程序员的素养,否则 JSP 就够了。经常会有人吐槽 Java,但 Java 在工程化开发方面真的做了大量思考和架构尝试。Java 蛮符合马云的一句话:让平凡人做非凡事。 三、Ajax 带来的 SPA 时代历史滚滚往前,2004 年 Gmail 像风一样的女子来到人间,很快 2005 年 Ajax 正式提出,加上 CDN 开始大量用于静态资源存储,于是出现了 JavaScript 王者归来的 SPA (Single Page Application 单页面应用)时代。
  这种模式下,前后端的分工非常清晰,前后端的关键协作点是 Ajax 接口。看起来是如此美妙,但回过头来看看的话,这与 JSP 时代区别不大。复杂度从服务端的 JSP 里移到了浏览器的 JavaScript,浏览器端变得很复杂。类似 Spring MVC,这个时代开始出现浏览器端的分层架构:   对于 SPA 应用,有几个很重要的挑战:1、前后端接口的约定。如果后端的接口一塌糊涂,如果后端的业务模型不够稳定,那么前端开发会很痛苦。这一块在业界有 API Blueprint 等方案来约定和沉淀接口,在阿里,不少团队也有类似尝试,通过接口规则、接口平台等方式来做。有了和后端一起沉淀的接口规则,还可以用来模拟数据,使得前后端可以在约定接口后实现高效并行开发。相信这一块会越做越好。2、前端开发的复杂度控制。SPA 应用大多以功能交互型为主,JavaScript 代码过十万行很正常。大量 JS 代码的组织,与 View 层的绑定等,都不是容易的事情。典型的解决方案是业界的 Backbone,但 Backbone 做的事还很有限,依旧存在大量空白区域需要挑战。SPA 让前端看到了一丝绿色,但依旧是在荒漠中行走。 四、前端为主的 MV* 时代为了降低前端开发复杂度,除了 Backbone,还有大量框架涌现,比如 EmberJS、KnockoutJS、AngularJS 等等。这些框架总的原则是先按类型分层,比如 Templates、Controllers、Models,然后再在层内做切分,如下图:   好处很明显:1、前后端职责很清晰。前端工作在浏览器端,后端工作在服务端。清晰的分工,可以让开发并行,测试数据的模拟不难,前端可以本地开发。后端则可以专注于业务逻辑的处理,输出 RESTful 等接口。2、前端开发的复杂度可控。前端代码很重,但合理的分层,让前端代码能各司其职。这一块蛮有意思的,简单如模板特性的选择,就有很多很多讲究。并非越强大越好,限制什么,留下哪些自由,代码应该如何组织,所有这一切设计,得花一本的厚度去说明。3、部署相对独立,产品体验可以快速改进。但依旧有不足之处:1、代码不能复用。比如后端依旧需要对数据做各种校验,校验逻辑无法复用浏览器端的代码。如果可以复用,那么后端的数据校验可以相对简单化。2、全异步,对 SEO 不利。往往还需要服务端做同步渲染的降级方案。3、性能并非最佳,特别是移动互联网环境下。4、SPA 不能满足所有需求,依旧存在大量多页面应用。URL Design 需要后端配合,前端无法完全掌控。 五、Node 带来的全栈时代前端为主的 MV* 模式解决了很多很多问题,但如上所述,依旧存在不少不足之处。随着 Node.js 的兴起,JavaScript 开始有能力运行在服务端。这意味着可以有一种新的研发模式:在这种研发模式下,前后端的职责很清晰。对前端来说,两个 UI 层各司其职:1、Front-end UI layer 处理浏览器层的展现逻辑。通过 CSS 渲染样式,通过 JavaScript 添加交互功能,HTML 的生成也可以放在这层,具体看应用场景。2、Back-end UI layer 处理路由、模板、数据获取、cookie 等。通过路由,前端终于可以自主把控 URL Design,这样无论是单页面应用还是多页面应用,前端都可以自由调控。后端也终于可以摆脱对展现的强关注,转而可以专心于业务逻辑层的开发。通过 Node,Web Server 层也是 JavaScript 代码,这意味着部分代码可前后复用,需要 SEO 的场景可以在服务端同步渲染,由于异步请求太多导致的性能问题也可以通过服务端来缓解。前一种模式的不足,通过这种模式几乎都能完美解决掉。与 JSP 模式相比,全栈模式看起来是一种回归,也的确是一种向原始开发模式的回归,不过是一种螺旋上升式的回归。基于 Node 的全栈模式,依旧面临很多挑战:1、需要前端对服务端编程有更进一步的认识。比如 network/tcp、PE 等知识的掌握。2、Node 层与 Java 层的高效通信。Node 模式下,都在服务器端,RESTful HTTP 通信未必高效,通过 SOAP 等方式通信更高效。一切需要在验证中前行。3、对部署、运维层面的熟练了解,需要更多知识点和实操经验。4、大量历史遗留问题如何过渡。这可能是最大最大的阻力。 六、小结回顾历史总是让人感慨,展望未来则让人兴奋。上面讲到的研发模式,除了最后一种还在探索期,其他各种在各大公司都已有大量实践。几点小结:1、模式没有好坏高下之分,只有合不合适。2、Ajax 给前端开发带来了一次质的飞跃,Node 很可能是第二次。3、SoC(关注度分离) 是一条伟大的原则。上面种种模式,都是让前后端的职责更清晰,分工更合理高效。4、还有个原则,让合适的人做合适的事。比如 Web Server 层的 UI Layer 开发,前端是更合适的人选。历史有时候会打转,咋一看以为是回去了,实际上是螺旋转了一圈,站在了一个新的起点。相关文档:Web开发技术的演变
前端开发好吗就选南京北大青鸟,传承北大百年教学,中国具核心竞争力软件学校,专注培养国家IT紧缺型人才,学成直达名企,北大青鸟前端开发好吗培训正在热招..
好文!!!仔细看了2遍,瞬时赶脚很多盲点都柳暗花明了
在开发阶段跨域提交问题 楼主有解决办法吗?
登录百度帐号

我要回帖

更多关于 移动webapp 的文章

 

随机推荐