- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(程序员心中最佳的框架组合
在过去对框架的设计中,我收到过的最有用的建议是:“不要一开始就根据现有的技术去整合和改进。而是先搞清楚你觉得最理想的框架应该是怎样的,再根据现在的技术去评估,的确实现不了时再妥协。这样才能做出真正有意义的框架。”在这篇文章里,就让我们按照这样一条建议来探索一下现在的 web 框架最终可以进化成的样子,你绝对会被惊艳到。前端,还是从前端说起。前端目前的现状是,随着早期的 Backbone,近期的 Angular、React 等框架的兴起,前端在?模块化、组件化?两个方向上已经形成了一定的行业共识。在此基础上,React 的 FLUX、Relay 则是进一步的对前端应用架构的探索。这些技术在目前国内的大公司、大团队内部实际上都落地得非常好,因为很容易和公司内部已有的后端技术栈结合。而且这些纯前端框架的配套技术方案一般比较成熟,例如在支付宝确定使用 React,其实有一部分原因是它兼容 IE8,并且有服务器端渲染方案来加速首屏。相比之下,像 Meteor 这类从前到后包办的框架就较难落地。虽然能极大地提高开发效率,整体架构非常先进,但架构的每一个层级往往不容易达到行业内的顶尖标准。特别是在服务器端,对大公司来说,通常都有适合自己业务的服务器集群、数据库方案,并且经受过考验。因此当一个团队一上手就要做面向十万级、甚至百万级用户的产品时,是不太愿意冒风险去尝试的。反而是个人开发者、创业型的团队会愿意去用,因为确实能在短时间内高效地开发出可用的产品出来。包括像 Leancloud 提出的这类型的服务,也是非常受欢迎的。这种现状,就是理想和现实的一个争论。Meteor 的方式能满足我对开发效率的理想,而团队已有的技术方案能保障稳定。能否整合其中的优势,不妨让我们进一步来细化一下对框架的希望:- 有强大的前后端一致的数据模型层- 代码可以可以复用。例如我有一个 User 模型,当我创建一个新的 user 时,user 上的字段验证等方法是前后端通用的,由框架自动帮我区别前后端环境。- 数据模型和前端框架没有耦合,但可以轻松结合。这样在前端渲染型的框架进一步升级时,不影响我的业务逻辑代码。- 由数据模型层提供自动的数据更新机制。例如我在前端要获取 id 为 1 的用户,并且如果服务器端数据有更新的话,就自动帮我更新,不需要我自己去实现轮询。我希望的代码写法是: user = User({id:1});user.pull();user.watch();实际上,Meteor已经能实现绝大部分上述功能。但这不是软文。我要强调两点我不希望的:- 我不希望这个数据模型层去包含业务逻辑,也就是我创建的user对象,我不希望它提供 login、logout 等 api。?- 我也不希望数据模型层自动和任何ORM框架绑定,提供任何 SQL 或 NoSQL 的数据支持。看到这两点你可能心中大打问号,这两点不正是高效的精髓吗?前后端逻辑复用,屏蔽数据库细节。别急,让我们重新用“理想的方式”来思考一下“逻辑”和“数据持久化”这两件事。数据与逻辑我们以这样一个问题开头:任何一个应用,我们的代码最少能少到什么程度?这算半个哲学问题。任何人想一想都会得到同一个答案:最少也就少到和应用本身的描述一一对应而已了。什么是应用描述?或者说什么是应用?我们会这样描述一个博客:“用户可以登录、退出。用户登录后可以发表文章。发表文章时可以添加相应的标签。”抽象一下描述,答案很简单:数据,和逻辑。如果你在一个流程要求严格的公司,应用描述就是prd或系分文档。应用的数据就是数据字典,应用的逻辑就是流程图的总和:???流程图??那么代码最少能怎么写呢?数据很简单,参照数据字典,我们来用一种即使是产品经理都能掌握的伪码来写:User : {name : string}Post : {title : string,content : text}Tag : {name : string}User -[created]- PostPost -[has]- Tag这里为了进一步帮助读者从已有的技术思维中跳出来,我想指出这段伪码和数据库字段描述有一个很大的区别,那就是:我不关心 User 和 Post 中间的关联关系到底是在两者的字段中都创建一个字段来保存对方的id,还是建立一个中间表。我只关心我描述它时的逻辑就够了。数据描述的代码,最简也就简单到这个程度了。那么逻辑呢?我们先用按常规方式试试?class User{ createPost( content, tags= post = Post({content:content}) post.setTags( tags.map(tagName={ return Tag(tagName)} ) ) return post }}好像还不错,如果今天产品
您可能关注的文档
- (浙江省杭州江南实验学校2014-2015学年九年级上月考数学试卷含答案.doc
- (科学精神与大学生人文素养.doc
- (浙江省杭州高中2010届高三第三次月考语文试题.doc
- (科学考点分类汇编之19:常见的化学反应.doc
- (科学营光盘解说词.doc
- (科学计算器.doc
- (浙江省桐乡市实验中学2013-2014学年九年级上学期语文基础调研试卷word版含答案.doc
- (浙江省椒江区2012年中考语文二模试题及答案.doc
- (浙江省永嘉县六校2012-2013学年七年级科学下学期期中联考试题浙教版.doc
- (浙江省永嘉县四校2010-2011学年高一上学期期中联考信息技术试卷.doc
- 湖南省多校联考2025—2026学年高二上学期10月月考化学含答案.doc
- 湖南省多校联考2025—2026学年高二上学期10月月考数学含答案.doc
- 湖南省多校联考2025—2026学年高二上学期10月月考语文含答案.doc
- 河南省2025年中考:《化学》考试真题与参考答案.doc
- 河南省2025年中考:《英语》考试真题与参考答案.doc
- 河南省2025年中考:《物理》考试真题与参考答案.doc
- 湖北省2025年中考:《生物》考试真题与参考答案.doc
- 湖北省2025年中考:《物理》考试真题与参考答案.doc
- 湖南省2025年中考:《道法》考试真题与参考答案.doc
- 湖北省2025年中考:《英语》考试真题与参考答案.doc
最近下载
- 福建省莆田市2023-2024学年八年级下学期期末数学试题(无答案).docx VIP
- (高一十班《经济法律法规》第一章练习题.doc VIP
- 《形势与政策》课件第八章 弘扬中华优秀传统文化.pptx VIP
- 第十六讲文明新路与人类命运共同体-中华民族共同体概论专家大讲堂课件.pptx VIP
- 简单保洁服务外包合同范本.docx VIP
- 博物馆建筑设计原理摘要.ppt
- BSL-2 实验室生物安全手册.pdf VIP
- 高中数学教学中存在问题及改进策略.doc VIP
- 挡墙破裂角计算.xls VIP
- 中华民族共同体概论讲稿专家版《中华民族共同体概论》大讲堂之 第十六讲 文明新路与人类命运共同体.doc VIP
文档评论(0)