`

Web App架构

阅读更多

好的框架可以提高开发效率,一个项目比较完整的架构,需要考虑到协同,代码管理,调试环境,开发框架,资源优化,部署等等。基于现有的架构之上做开发,并不只是简单地填充代码,而是在熟悉这套开发模式的基础之上,了解整体的架构,并与其他框架对比,必要时深入去研究下框架的实现和优缺点,积累更加全面的软件知识,才可以从整体上去考虑一个软件的设计。

在这个开源的世界里,做一个程序很多时候都可以找到很多不错的开源框架,从而更加快捷的搭建出自己的开发框架。J2EE开发框架的成熟度就不说了。而在web app或者web游戏这一块,框架也是百花齐放,但是如果我们不去仔细做调研对比,就不知道哪一个框架时我自己的。俗话说,不要重造轮子,但是很多时候,因为找不到合适的取代框架或者第三方类库,我们都会自己去开始为自己的project做一个框架,可是这样随着而来的问题是:项目的deadline已经不允许这样做了,而且很多时候,根据自己现有的水平,做出来的框架也不一定就是好用的。

看了豌豆荚web版的规划和技术架构的选取,确实感觉挺不错的。

1、首先提及了需要解决的事情:协同,代码管理,调试环境,开发框架,资源优化,部署。
2、然后是设计RESTful Data API,前后端可以并行工作。
3、开源了整个项目到GitHub,这点我非常喜欢。
4、选取AMD的理由:定义模块,自动化管理,CSS/HTML加载,灵活的Build工具
5、选取Sass & Compass的理由:可编程的CSS,自动合成Sprite
6、接下来需要考虑的就是工作流,脚本任务,类库管理:分别采用了YO,GRUNT,BOWER
7、接下来,就是根据这些框架类库搭建环境了,在熟悉了的情况下,在一台新的电脑下只要十分钟就可以搭建好开发环境了
8、接下来便是寻找一个合适的MVC框架,分别尝试了Backbone和Knockout,分别对比了其优缺点:
Backbone:
优势:
1、精致,抽象的数据同步模型
2、清晰的结构,易于扩展
缺陷:
1、Wiew层功能薄弱
2、缺乏常用功能
Knockout:
优势:
1、双向数据绑定,写View很方便
2、可以通过插件扩展功能
缺陷:
1、只有View层解决方案
2、基于事件的数据更新,不容易优化

最后选取的MVC框架是Angular,因为Angular的一些理念很好,也许可以用在大家的项目中

现在就来分析一下Model-View-ViewModel:

8.1、整体架构图如下:
web app的架构

web app的架构

8.2、使用了angular的依赖注入:
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.');
            });
        };
    });

总结使用之后的优点:

1、MVC严格分层
2、依赖注入控制访问权限
3、良好的可测试性
良好的可测试性

良好的可测试性

8.3、基于DOM的模板
8.4、基于dirty-check的数据更新机制

事件缺少context,可能导致一系列问题:

难于debug和定位
事件泛滥,容易冲突,维护难度大
难于批量优化

dirty-check会循环的检查所有数据,直到不再有变化,最后一次性渲染,难点在于如何保证即时触发

可能导致数据变化的事件:DOM Event, Timeout XHR, Worker, etc...

8.5、最大的收益:控制UI变化的时机和节奏,优化渲染性能
8.6、最后就是项目的部署了

有时候我们觉得使用框架会很没意思,觉得自己像个机器人,做一些无用功,但是反过来思考,却可以更加快速的让你接触到更多的知识,如果在空闲之余对这些框架的原理进行研究并对比各种同类框架的优缺点,在这些基础之上,相信也有能力去编写一个自己想要却找不到的框架了,你的思考深度决定过了你的兴趣程度。

有了这些第三方的API作为架构之后,即使你是一个人在写项目,你也绝对不是一个人在战斗,因为你已经身处开源世界了。

总结:

对于急着使用的技术,快速入门,做一个简单demo,整体阅读API,前提是一定要弄清楚demo的每一行代码的作用

多使用第三方框架或者类库提高开发效率

在空余时间,多把握好,去阅读一下第三方框架或者类库的源代码,找到吸引你的地方,多联想思考,写写技术博文

基于上面一点的学习和总结,如果下一次你真的发现没有这样的可以被使用的轮子时,你就可以着手创建一个新的类库了

平时作为个人的练习,还是可以根据自己近期的收获,写一个简单的框架练习一下的。

分享到:
评论

相关推荐

    开源技术构建 Web App 架构-Paracutin-豌豆荚

    ### 开源技术构建 Web App 架构:Paracutin-豌豆荚 #### 一、项目背景与目标设定 2012年底,豌豆荚团队决定开发一个全新的Web应用版本,旨在创建一个高性能、易维护且具备高度灵活性的应用程序。为了实现这一目标...

    基于Vue和Spring Boot的校园记录管理Web App的设计与实现.pdf

    9. 系统架构设计:本文介绍了系统架构设计在校园记录管理Web App中的应用,包括系统架构设计的原则、系统架构设计的方法等方面。 10. Web应用组件的开发:本文介绍了Web应用组件的开发,包括Web应用组件的选择、Web...

    嵌入式web服务器:appweb

    1. **轻量级架构**:AppWeb的设计目标是小体积和低内存占用,使其适合在资源有限的设备上运行,如嵌入式系统和物联网(IoT)设备。 2. **高性能**:AppWeb采用高效的事件驱动模型,可以处理大量并发连接,确保在高...

    49谈谈App架构的演进1

    【App架构演进】\n\nApp架构的演进反映了技术与业务发展的相互作用,从初期的Web App到原生App,再到Hybrid App,最后是组件化与容器化的趋势,这一过程始终围绕着解决不同阶段的核心复杂度问题。本文将深入探讨这些...

    appweb4.3.4-0添加arm配置及源代码

    本篇将详细讲解如何在ARM架构上配置AppWeb以及相关的源代码分析。 **一、ARM架构配置** 1. **环境准备**:首先,确保你的开发环境支持ARM架构,这通常意味着你需要一个交叉编译工具链,如arm-linux-gnueabi-gcc或...

    appweb 8.2.1

    **AppWeb 8.2.1 知识点详解** AppWeb 是一款开源的嵌入式 Web 服务器,由 Embedthis 软件公司开发。它设计轻巧、高效,适用于各种嵌入式设备和 IoT(物联网)应用。AppWeb 8.2.1 版本是该软件的一个重要里程碑,...

    基于 HTML5 移动 Web App 开发.pdf

    HTML5是互联网核心技术之一,它自20世纪90年代诞生以来,经过多次迭代,目前的HTML5版本已经成为Web应用程序开发的重要工具,特别是在移动Web App开发领域。HTML5的主要特征包括语义化的结构化标签、离线存储功能、...

    Web APP技术框架下“大学校园助手”APP的设计与实现.pdf

    "Web APP技术框架下“大学校园助手”APP的设计与实现" 本文主要介绍了基于Web APP技术框架的“大学校园助手”APP的设计与实现。该APP旨在为高校学生提供移动学习和泛在学习的支持,形成以移动智能为趋势的无线校园...

    百度Web App开发技术介绍_黎科峰

    1. **Web App平台整体架构**:这可能涉及前端展示层、业务逻辑层和数据存储层,以及与之相关的安全、监控和日志系统。 2. **Web App平台内核引擎**:这指的是解析和执行HTML5、CSS3和JavaScript代码的引擎,确保...

    后台管理(微服务模式框架)+ pcWeb(vue) + appWeb(vue)

    标题中的“后台管理(微服务模式框架)+ pcWeb(vue) + appWeb(vue)”揭示了整个项目的核心组成部分。 首先,我们来看“后台管理(微服务模式框架)”。微服务架构是一种将单一应用程序分解为一组小型、独立的服务的...

    Embedded Appweb移植 安装 应用

    * Multi-threaded, event-driven core:Appweb 服务器采用多线程、事件驱动的核心架构,提供了高性能、高可靠性的 Web 服务。 * Dynamically loadable modules:Appweb 服务器支持动态加载模块,提供了高度的可扩展...

    appweb+esp.zip

    《AppWeb与ESP嵌入式系统源码解析与问题解决》 在嵌入式系统开发领域,AppWeb和ESP(Embedded Systems Programming)是两个至关重要的组件。AppWeb是一款轻量级、高性能的嵌入式HTTP服务器,而ESP则通常指的是在...

    Embedthis Appweb 4.0.0

    - 这种架构使得Appweb具有高度可定制性,可以根据应用需求进行扩展。 3. **HTTP/2支持** - Appweb 4.0.0引入了对HTTP/2协议的支持,这是HTTP/1.1的重大升级,提高了网络传输效率,减少了延迟并增强了连接复用。 ...

    基于SSH jQuery框架的餐饮Web App的设计与实现.pdf

    总的来说,基于SSH + jQuery框架的餐饮Web App设计与实现,实现了各层的完全分离,优化了系统架构,提升了用户交互体验。这种结合不仅解决了传统Web App维护困难、扩展性差的问题,还充分利用了现代Web技术,为餐饮...

    appweb 4.6 版本源代码

    3. **模块化设计**:AppWeb 的模块化架构允许用户根据需求选择安装必要的组件,从而减小了最终的部署体积。例如,可以选择只包含基本的 HTTP 服务,或者添加 SSL/TLS 支持以实现加密通信。 4. **配置灵活性**:4.6 ...

    Sina App Engine架构——云计算时代的分布式Web服务解决方案.pdf

    标题中提到的“Sina App Engine架构——云计算时代的分布式Web服务解决方案”揭示了本文的核心内容是介绍新浪公司推出的Sina App Engine(SAE)的架构设计。SAE是面向Web开发者的云计算平台,能够为开发者提供一系列...

    汽车后用品市场系统的移动Web App设计与实现.pdf

    本论文的主要内容包括系统总体设计、系统开发架构、选择使用Web App的好处、系统功能模块设计与实现等几个方面。 在系统总体设计方面,本论文首先介绍了系统的总体功能和目标,然后详细论述了系统的开发架构和技术...

    移动HybridApp实战与架构与微信应用号开发教程

    3. **Hybrid App架构**:典型的Hybrid App架构包括Web层(HTML/CSS/JS)、WebView层(如Cordova插件系统)和原生层(iOS的Objective-C/Swift或Android的Java/Kotlin)。开发者需理解如何在这些层之间通信,实现功能...

    嵌入式服务器-appweb

    ### 嵌入式服务器-appweb相关知识点 #### 一、Appweb简介 Appweb是一款专为嵌入式系统设计的高性能HTTP Web服务器。它的设计理念着重于安全性与灵活性,能够直接整合进客户的设备与应用程序中,从而实现高效、便捷...

    融媒体新闻APP系统架构设计与实现.pdf

    融媒体新闻APP系统架构设计与实现 融媒体新闻APP系统架构设计与实现是基于媒体融合技术发展趋势下的新闻客户端APP系统设计和实现。该系统架构设计是基于LNMP架构,采用PHP5面向对象编程语言、MVC设计模式、模块化...

Global site tag (gtag.js) - Google Analytics