好的框架可以提高开发效率,一个项目比较完整的架构,需要考虑到协同,代码管理,调试环境,开发框架,资源优化,部署等等。基于现有的架构之上做开发,并不只是简单地填充代码,而是在熟悉这套开发模式的基础之上,了解整体的架构,并与其他框架对比,必要时深入去研究下框架的实现和优缺点,积累更加全面的软件知识,才可以从整体上去考虑一个软件的设计。
在这个开源的世界里,做一个程序很多时候都可以找到很多不错的开源框架,从而更加快捷的搭建出自己的开发框架。J2EE开发框架的成熟度就不说了。而在web app或者web游戏这一块,框架也是百花齐放,但是如果我们不去仔细做调研对比,就不知道哪一个框架时我自己的。俗话说,不要重造轮子,但是很多时候,因为找不到合适的取代框架或者第三方类库,我们都会自己去开始为自己的project做一个框架,可是这样随着而来的问题是:项目的deadline已经不允许这样做了,而且很多时候,根据自己现有的水平,做出来的框架也不一定就是好用的。
看了豌豆荚web版的规划和技术架构的选取,确实感觉挺不错的。
优势:
1、精致,抽象的数据同步模型
2、清晰的结构,易于扩展
缺陷:
1、Wiew层功能薄弱
2、缺乏常用功能
优势:
1、双向数据绑定,写View很方便
2、可以通过插件扩展功能
缺陷:
1、只有View层解决方案
2、基于事件的数据更新,不容易优化
最后选取的MVC框架是Angular,因为Angular的一些理念很好,也许可以用在大家的项目中
现在就来分析一下Model-View-ViewModel:
angular.module('snappea', ['ng']) .service('photos', function($http){ this.fetch = function(){ return $http.get('http://snappea.com/photos'); }; }) .controller('galleryController', function($scope, photos){ $scope.photos = []; $scope.fetch = function(){ $scope.photos = Photos.fetch(); }; }) .directive('counter', function(){ return function($scope, $element){ $element.on('click', function(){ $scope.fetch(); }); $scope.$watch('photos.length', function(value){ $element.text('Total' + value + 'photos.'); }); }; });
总结使用之后的优点:
2、依赖注入控制访问权限
3、良好的可测试性
事件缺少context,可能导致一系列问题:
事件泛滥,容易冲突,维护难度大
难于批量优化
dirty-check会循环的检查所有数据,直到不再有变化,最后一次性渲染,难点在于如何保证即时触发
可能导致数据变化的事件:DOM Event, Timeout XHR, Worker, etc...
有时候我们觉得使用框架会很没意思,觉得自己像个机器人,做一些无用功,但是反过来思考,却可以更加快速的让你接触到更多的知识,如果在空闲之余对这些框架的原理进行研究并对比各种同类框架的优缺点,在这些基础之上,相信也有能力去编写一个自己想要却找不到的框架了,你的思考深度决定过了你的兴趣程度。
有了这些第三方的API作为架构之后,即使你是一个人在写项目,你也绝对不是一个人在战斗,因为你已经身处开源世界了。
对于急着使用的技术,快速入门,做一个简单demo,整体阅读API,前提是一定要弄清楚demo的每一行代码的作用
多使用第三方框架或者类库提高开发效率
在空余时间,多把握好,去阅读一下第三方框架或者类库的源代码,找到吸引你的地方,多联想思考,写写技术博文
基于上面一点的学习和总结,如果下一次你真的发现没有这样的可以被使用的轮子时,你就可以着手创建一个新的类库了
平时作为个人的练习,还是可以根据自己近期的收获,写一个简单的框架练习一下的。
相关推荐
开源技术构建 Web App 架构-Paracutin-豌豆荚
演讲提纲涉及:(1)凡客Android客户端应用的介绍及具备的主要功能,并同时介绍APP的实现架构,如native app + web app架构,及如此设计APP架构对电商应用的优势支持;(2)凡客Android客户端应用在开发中主要对APP...
这是一套可以运行的框架 后台api才用的是微服务架构 pc才用的是 webpack+vue+elementui app 采用的是 webpack+vue + vant 用问题可以一起探讨
当你做架构设计时,必然会面临技术选型的...纯原生开发,还是Web App,抑或Hybrid App?iOS开发,语言上是选择Objective-C还是Swift?架构模式用MVC,还是MVP,或者 MVVM?下面根据我的一些经验对某些方面做点总结分享
Web App虽然解决了“快速开发”和“低成本”两个复杂度问题,但随着业务的发展,Web App的劣势逐渐成为了主要的复杂度问题,主要体现在:移动设备的发展速度
#资源达人分享计划#
� MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的...
ExtApp是一个基于三层架构,使用NHibernate、API Controller和ExtJs创建的,用于简化政府和企业应用开发的单页Web应用框架
ExtApp是一个基于三层架构,使用NHibernate、API Controller和ExtJs创建的,用于简化政府和企业应用开发的单页Web应用框架。
小说精品屋是一个多平台(web、安卓app、微信小程序)、功能完善的小说弹幕网站,包含精品小说专区、轻小说专区和漫画专区。 包括小说/漫画分类、小说/漫画搜索、小说/漫画排行、完本小说/漫画、小说/漫画评分、...
电影应用使用微服务架构(Java Spring + Ember.js)构建的简单Web应用程序
基于数据分析与数据挖掘的社交类Web App开发.pdf
WebFOCUS 架构Web服务概览 Web服务 ibi_html approot 主要存放静态页面和静态内容 /ibi_html mapped to ../ibi/WebFOCUS76/ibi_html Common Templates and Forms Images, Icons, Scripts and Stylesheets MR ...
HTTP原理图解一切皆服务时代的安全隐患Google性能专家:速度是核心信条第一个AngularJS Web应用周爱民:真正的架构师是没有title的去加勒比海做IT项目的几点回忆谢工:进入互联网行业的得与失Web性能权威指南:一年...
1、 DCloud介绍和产品架构_高清;2、官方的文档和工具案例展示_高清;3、 用HBuilder开发一个HelloWorld_高清;4、 页面构成、跳转和网络通讯_高清;5、页面构成-创建子页面_高清;等等
各种不同的应用架构,各种不同的应用架构,各种不同的应用架构
现在移动web app越来越热门了,许多公司开始尝试使用angular、react、vue等MVVM框架来开发单页架构的web app。但在开发web app时,如果希望页面的导航体验也接近原生应用,那一般都会遇到这两个问题: 识别前进后退...
了解不同课题的知识内容,学习内部架构和原理,掌握有关课题重要资源, 同时增加自己对不同方面知识的了解,为后续的创作提供一定的设计思路和设计启发 , 并且可以快速完成相关题目设计,节约大量时间精力,也为...