登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 外文翻译 > 计算机类 > 软件工程 > 正文

在线音乐网站前端设计和实现外文翻译资料

 2022-11-14 04:11  

英语原文共 19 页,剩余内容已隐藏,支付完成后下载完整资料


Speed Performance Comparison of JavaScript MVC Frameworks

Alexander Svensson

1.介绍

比较Javascript框架是web开发的一个热门话题,社区和本研究将集中在处理DOM性能上面。这项研究将是在DOM节点上快速创建,删除和更新元素的一个新的光芒。Web页面每个页面上的内容像论坛、博客、社交媒体、统计网站网站可能获得的一些示例从JavaScript框架表现良好。今天的web浏览器响应速度相比旧版本比较快并且正在使它的响应速度更快,但不是所有的用户都有最新版本的或者一个网络浏览器不是表现的那么好。用新的web浏览器显示一个网站有更少的元素/内容的速度性能在JavaScript框架之间没有什么太多的不同,但是当web页面之间的内容会非常大性能的指标有了更多的影响。Facebook和Twitter等网站在每个页面上有很多内容,必须有一个框架能够快速执行到屏幕上。其他网站也许不是很流行但是也有很多内容显示屏幕上课可以获得选择快速执行JavaScript框架。

已经有一些类似的研究在网站但不是在研究的范围内和快速更新更改框架做每月的性能值可以彻底的改变。大多数研究也只关注少数量的框架。选中的JavaScript框架研究基于流行性或选择是那么的心的和更详细的说明阅读“JavaScript框架”一节。本研究也更侧重于MVC(模型-视图-控制器)框架,通常是应用程序的基础可以经常执行许多不同的任务。有很多框架和测试他们这个研究是不可能的,但一旦被检查:AngularJs1.5、AngularJs2.0、Aurelia、Backbone、Ember、Knockout、Mithril、Vue。还有一些其他的库,包括React和Incremental DOM但他们大多只是用作MVC的视图。本研究只关注JavaScript框架从浏览器的呈现速度性能。框架在屏幕上呈现的东西正以快速度显示有趣的东西。研究中框架的其他方面也有受阻了, 可用性、易学性、文档、有用的添加/功能也很重要在评估一个JavaScript框架。

2.背景

为了让我们了解所选的JavaScript框架管理他们表现我们首先必须了解基本的web浏览器是如何工作的。Web浏览器构建与一些主要组件,如浏览器引擎渲染引擎,JavaScript解析器、用户界面、数据存储、网络和用户界面端。我们将专注于web浏览器的渲染引擎部分和显示基本的工作原理。衡量比较它们的JavaScript框架性能其他的我们必须了解一些概念解释如下。树的顶端是HTML对象,在上面列子的图片中我们可以看到HTML对象有两个孩子节点分别是HEAD和BODY。树的图片只是一个简单的例子DOM的接口并且HTML元素是DOM根源的孩子节点的一个文本对象。

我们可以轻松地遍历树节点并选择DOM节点上我们想要的元素。我们可以通过搜索树的元素id或元素属性名来选择一个特定的元素。同一行并且有一个父亲节点的称为相邻兄弟节点,如果一个元素父元素也称为子节点的父节点。树中每个节点代表一个元素、属性、内容或更新节点。DOM节点每一次改变创建了一个链的行动web浏览器用户可以看到的之前必须做的更新网页,它可以是费时。一些变化风险更多的时间,然而其他的更费时的是当我们改变布局的时候意味着如果我们改变的几何学图形元素和它的高度或宽度。今天的web页面通常使用JavaScript操作DOM以某种方式添加、删除或更新DOM树中的元素。DOM并不是只使用为一个特定的编程语言(如JavaScript但是JavaScript称为最受欢迎的语言来操作DOM)。

2.2 CSS对象模型(CSSOM)

当web浏览器构建DOM引用它找到一个link元素外部CSS样式表并且获取它。如果没有HTML标记使用样式表链接元素就使用浏览器默认的样式表。样式表下载后web浏览器将css样式转换成一个树结构像DOM但这个时间段紧紧只是CSS。当计算最后一组页面上的样式风格,浏览器从最一般规则试用于节点(如果他是body元素的子节点,那么整体应用),然后递归的改进计算风格影响许多对象元素树会递归的将它添加到所有的人。我们CSSOM有一个body节点在它下面有个P节点,p节点有一个span节点并且我们span元素有一个样式。Bodygt;pgt;span.CSSOM变得像一个树映射的所有CSS样式结合告诉你什么风格不同的元素在树中不同的位置。

2.3 渲染树

渲染树是一个结合DOM树和CSSOM将一切都会显示在网页上。当我们把DOM上的一个节点元素CSS属性可以从CSSOM设置display属性为none的时候。节点将不包括在render树中。渲染树只显示对于用户在页面上浏览器上可见的东西比如HEAD不包括在内。Render树嘎斯浏览器如何布局并描绘它。在web浏览器中渲染树可能有不同的名称。渲染树也可以被视为一组对象被呈现在webkit中(布局引擎中使用e.gSafari)和Blink用于如何布局引擎Chrome,Opera)调用这些渲染或渲染对象而火狐浏览器中(布局引擎中使用(e.gFirefox,SeaMonkey)称之为框架。如果我们在页面上做任何事比如滚动页面,用javascript修改DOM、css动画或网页基本山我们在渲染树上将每秒60倍左右。每一帧不同的呈现创建不同的web浏览器和树之间有差别存在于不同的浏览器之间。

2.4页面浏览器的渲染

Web浏览器的渲染发生在每个有自己的引擎来计算每一帧的web交互浏览器和网站。一个web浏览器引擎(有时也称为布局引擎或渲染引擎)非常复杂,不同浏览器使用的技术不同用来区分但是他们通常意味着同样的事情。Web浏览器e.g谷歌,苹果的Safari使用webkit引擎,e.g火狐SeaMonkey使用 Gecko引擎。所有的web浏览器努力达到每秒60帧的页面浏览给用户。网络浏览器呈现不同步骤比如布局和绘制页面内容因此提高页面加载速度。这方面的一个例子就是在我们看到页面上的图片之前我们可以看到页面上的文本但是在老版浏览器中我们必须等到所有的图像完全加载之后我们才可以看到页面上的东西。重要的是要理解这是一个循序渐进的过程,引擎不会等到所有的HTML解析才开始构建和布局呈现/帧树。每个web浏览器引擎有自己的创建方式但是更新一个页面的主要流程还是基本一致的。我们可以从上面的图片中看出DOM和CSSOM(样式规则)结合呈现/帧树和布局/回流内容在页面浏览器得到正确的位置,宽度和高度。在这之后,给出样式(CSS)像背景色,颜色,展示的文本,图片和在渲染树上的各种节点元素来绘制网站。所以选人引擎的基本流程是先解析HTML和CSS构建DOM树和CSSOM树,创建和渲染/帧树之后计算布局回流(位置,页面上的元素的高度和宽度),最后一步就是绘制。

2.4.1渲染的展示

当浏览器产生动画、转换(如用CSS)或者滚动页面的时候大多数设备以每秒60帧的速率刷新。每一帧必须在16ms内完成(1s/60=16.66ms),但是浏览器需要6ms左右更新,所以每帧你只有不到10ms的时间。如果我们需要超过10ms的时间浏览器将开始减少帧这将导致图片的急速减少。选择javaScript框架的测试将在web浏览器中完成谷歌操作,所以我们要解释他们看到框架的一个过程。测试也会执行在Chrome开发工具(DevTools)可以用来测试时间,web浏览器花费不同的时间比如在JavaScript,style和布局路径。我们每次在屏幕上做一些事情比如滚动页面或者一些其他浏览器触发的javaScript、CSS或者web动画并且需要根据不同的行为来计算路径。所以如果我们在屏幕上做一些视觉上的变化就会创建一个新的框架。每个框架已经优化他们的渲染性能但在这个研究中我们用DevTool来计算JavaScript,style,布局和复合的时间。DevTool也可以用来优化你的代码我们也可以通过它看到是什么拖慢了你网站的加载速度。

这是谷歌开发团队描述一个像素在屏幕上的流动:

JavaScript :JavaScript用来处理会导致视觉的工作变化,无论是jQuery的动画功能,排序一个数据集,或在页面上添加DOM元素。他不需要JavaScript触发一个视觉改变:CSS动画、转换和网页动画API也经常被使用。

Style calculations:这是一个用于计算CSS规则适用于匹配选择器的元素例如headline或者navgt;.nav_item的过程。从哪儿,一旦规则被知晓,应用并最终计算出每个元素的样式。

Layout:一旦浏览器知道那些规则应用到一个元素就可以开始计算所需要的空间。在屏幕上,网络的布局模型意味着一个元素可以影响到其他人,列入lt;bodygt;元素的宽度通常影响整棵树上的孩子节点的宽度等等,所以浏览器的过程相当复杂。

Paint:绘画是填充像素的过程。它涉及 了文本的图画,颜色,图像便捷,和阴影,基本上每一个视觉元素的一部分。图通常是在多个表面上,通常称为层。

Compositing:自从页面部分被绘制完成他们需要以正确的数据绘制到屏幕上,这样页面能够正确的呈现。这是尤其重要的元素重叠,因为一个错误可能导致一个元素不正确的出现在另一个之上。

当web浏览器在屏幕上发生一个改变有3中不同的路径:

在图1.5的网页浏览器的流程中JavaScript, Style, Layout, Paint and

Composite。例如当我们改变一个HTML的元素宽度或高度我们改变了布局和因此它影响所有其他计算像线。

在图1.6中浏览器的流程必须计算 JavaScript, Style, Paint和 last Composite但布局计算是没有必要的,这可能发生在当我们改变元素上的颜色或者背景色。

图1.7最后没有计算Layout 或者paint的流程,这是最快最便捷的,如果我们滚动页面比如浏览器采取这个像素管道。

2.5可选的JavaScript框架

JavaScript框架有很多,研究只是选择了其中的一部分。选择框架的标准是他要么十一二新的框架(从2014年)或在根据谷歌搜索记录的趋势是前15个最流行的JavaScript框架。每个框架在google每个搜索词的搜索量趋势,比如(ember.js,ember的框架)所选的框架必须有一个MVC架构并且不能紧紧框架不能紧紧只关注视图层面。就我个人观点而言有些框架一直被选中是因为在这项研究中框架是有意思的。每一个被选中的框架都有它在研究中被选中的原因。本研究只关注创建,更新和删除元素框架的更新速度然而像可用性和易用性不在考虑范围之内。测试所选框架至少包括附录否则可能导致会包含像路由Angular时虽然有许多不同的场景一个框架比另一个更适合和它没有的性能是最重要的。一些JavaScript框架都是轻量级的主要关注性能其他构建许多不同的有用的功能所以知道一些它的重要框架可能做一个特定的工作特别好。所以可以阅读更多关于每个框架,找出有优势在性能测试在这项研究中。大多数JavaScript框架所做的只是创建一个渲染引擎操作DOM以某种方式已获得性能。不使用JavaScript框架操作DOM必须更新DOM对于每个请求比如删除、添加、或更改浏览器的元素这是很昂贵的代价。大多数的框架做的是一些DOM api调用合并成一个,这样就不需要更新。他们每个框架有不同的技术更新DOM节点,一些框架以类似的方式操作但是比其他的更好。

2.5.1 Angular 1.5

测试所用的版本是1.5.3,2016年3月25日发布

Angular JS是迄今为止最流行的JavaScript框架所以显而易见的纳入本研究。Angular JS在模型-视图-控制器(MVC)框架中并且它也可以作为一个模型-视图-视图模型(MVVM)。Angular首先从解析HTML文件和翻译自定义的Angular标记元素和模型绑定数据从JavaScript变量(two-way-bingding).使用Angular你可以分开操作HTML页面并且不会影响那一小部分页面。AngularJS使用所谓的“DIrty checking”检查模板中的数据改变并创建一个观察者的特定值。如果页面上有值改变就会立刻呈现到页面上。这种设计的好处之一就是可以看到任何数据比如一个数组或者一个值的改变。这种模式的缺点就是在Javascript不断检查更新值,但是不影响DOM毕竟消耗很小。用他们自己的话描述他们的框架:以下引用是由官方网站制作,

-Angular简化了应用程序开发,对开发人员提供了一个更高的抽象水平。

-Angular在搭建整个客户端的web应用程序中不是一个单一的拼图。他处理所有的DOM和AJAX代码一旦你写好并且定义了一个良好的结构。

-AngularJS对于动态的web app是一个好的结构框架,它允许你使用HTML模板语言和允许您扩展HTML的语法来清晰简洁的表达应用程序的组件。Angular的数据绑定和依赖注入消除了大部分需要写的代码。这一切都发生在浏览器内,和任何的服务端技术成为了好的合作伙伴。

-Angular让你从以下的痛苦中解放出来:注册回调,操作HTML,DOM编程,封送数据的ui,写成吨的代码只是开始。

2.5.2 Angular 2.0

测试中用的版本是2.0(Beta v9)2016年3月10号发布

Angular 2.0是新的改进了版本的性能 但是2.0版本第一次向公众展示是会见一社会上的人的质疑因为巨大的改变。一些变化的范围对象和控制器被组件和指令取代。他们自我描述他们的框架的话:

-Angular简化了应用程序开发,对开发人员提供了一个更高的抽象水平。-Angular在搭建整个客户端的web应用程序中不是一个单一的拼图。他处理所有的DOM和AJAX代码一旦你写

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[137050],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图