Web前端优化(精选9篇)
Web前端优化 篇1
1 HTTP请求优化
减少页面的HTTP请求次数是首先要做的一步, 这是改良初次访问用户等待时间的最重要的方法。
1.1 图片地图
在站点导航中, 最常见的应用就是超链接, 它通常带有一些文本, 并被关联到目标URL上。一种更为没关的选择是将超链接关联到图片上, 例如在导航栏或按钮中。如果是以这种形式关联多个带有超链接的图片, 使用图片地图既能减少HTTP请求, 又无需改变页面外观感受。
图片地图 (Image Map) 允许你在一个图片上关联多个URL, 目标URL的选择取决于用户单击了图片上的哪个位置。获取图片地图的时间比获取为每个超链接使用分离图片的导航时间快很多, 这是因为图片地图减少了HTTP请求。
1.2 内联图片
内联图片是指在Web页面中包含图片但无需任何额外的HTTP请求, 它允许将小块数据内联为立即数, 数据就在其URL自身之中, 格式如下:
示例:
data:URL模式大多数用于内联图片, 也可以用在任何需要指定URL的地方, 如:script和a标签中。
1.3 合并脚本和样式表
大多数Web站点, 都会用到Java Script脚本和层叠样式表, 通常把脚本和样式表分别保存在独立的.js和.css文件中, 然后在Web页面中引用。为了符合模块化的开发原则, 通常不会将Java Script代码和CSS代码放在同一个文件中。分散保存的Java Script代码应该合并在一个文件中, 样式表也应该合并, 这样可以使用户在浏览网页时只需下载一个.js或者.css文件, 这样减少了HTTP请求, 从而减少响应时间, 提高访问速度。
2 客户端缓存优化
使用客户端缓存可以优化Web性能, 减少用户等待的时间。减少HTTP请求的方式可以明显提高用户首次访问Web站点的速度, 客户端缓存的使用, 对于页面的首次访问是不会减少响应时间的, 对性能的提高会在再次访问同一个页面的时候体现出来。
在设计Web页面的时候, 首次访问的响应时间并不是唯一需要考虑的。如果这样, 可以不在页面上放置任何图片、脚本和样式表, 就能够把减少HTTP请求发挥到极致。然而, 我们都知道, 图片、脚本和样式表可以加强用户体验, 但是又会让页面的加载时间更长。
通过对脚本, 样式表, 图片和Flash使用一个长久的Expires头, 使这些组件被缓存, 就使得在浏览器浏览后续的页面时避免了不必要的HTTP请求。Web服务器使用Expires头告诉Web客户端它可以使用一个组件的当前副本, 直到指定的时间为止。如:
它表示浏览器该响应的有效性持续到2012年4月22日为止。如果为页面中的一个图片返回了这个头, 浏览器在后续的页面浏览中会使用缓存的图片, 将HTTP请求的数量减少。
3 压缩技术
除了减少和限制不必要的HTTP请求来解决响应时间的问题外, 还可以通过减小HTTP响应的大小, 在传输前对文件进行压缩, 进一步减少响应时间。
从HTTP 1.1开始, Web客户端就可以通过HTTP请求中的Accept-Encoding头来标识对压缩的支持:
如果Web服务器在请求的文件头中检测到上面的代码, 就会以客户端列出来的方法中的一种来压缩响应内容。Web服务器把压缩方法通过响应文件头中的Content-Encoding来返回给浏览器:
Gzip是目前最盛行也是最有效的压缩方式, 这是由GNU项目开发的一种免费的格式, 并被标准化为RFC 1952。另外一种压缩格式是deflate, 但是它的效果较差而且不太流行。
Gzip大约可以减少70%的响应大小, 目前约有90%通过浏览器传输的互联网互换支持gzip格式。Gzip压缩所有可能的文件类型, 是减少文件体积, 增加用户体验的最好方法。
4 页面元素的优化
4.1 CSS放在页面顶部
除了HTML文档外, 其他很多组件也都是呈现页面内容所必需的。Web页面的所有内容, 通常是按照他们在文档中出现的先后顺序下载的。
样式表在Web页面中放置的位置对于Web页面性能的影响是很明显的。如果把样式表放在页面底部, 实际产生的页面速度比放在页面顶部慢;将样式表放在文档顶部的head标签中, 能使页面加载得更快。
4.2 脚本置于页面底部
脚本带来的问题就是它阻拦了页面的平行下载。HTTP 1.1规范建议, 浏览器每个主机名的并行下载内容不超过两个。如果你的图片放在多个主机名上, 你可以在每一个并行下载中同时下载2个以上的文件。但是当下载脚本时, 浏览器就不会同时下载其它文件了, 即使是主机名不相同, 这是因为脚本可能使用document.write来修改页面内容, 因此浏览器会等待, 以确保页面能够恰当地布局。
脚本对Web页面的影响表现在两个方面, 一是脚本会阻塞其后面内容的呈现, 另外脚本会阻塞对其后面组件的下载。所以, 如果将脚本放在页面顶部, 页面中的所有内容都位于脚本之后, 整个页面的呈现和下载都会被阻塞, 直到脚本加载完毕。
放置脚本的最好地方是页面的底部。这不会阻止页面内容的呈现, 而且页面中的可视组件可以尽早下载, 虽然其请求时间较长, 但对页面影响很小, 可以很好提高用户的体验。
5 结语
对于Web应用开发人员来说, 在编写Web应用时注意性能问题。本文仅针对Web应用的前端性能优化作了简要分析, 提出了一些W e b站点前端性能优化技术的方法, 但还有很多与前台性能相关的问题还没有涉及到, 比如避免使用CSS表达式、减少DNS查找、精简Java Script、避免重定向、配置ETag、使用Ajax优化请求等。
Web站点的性能分析不仅仅是一种技术, 更是一门艺术。通过性能优化, 尽可能确保Web站点能够满足人们对性能方方面面的要求。
参考文献
[1]孙友仓.提高ASP.NET应用程序性能方法浅析[J].福建电脑, 2006 (10) .
[2]谭建平.Web网站系统性能优化研究及其应用[D].重庆大学, 2008 (5) .
[3]夏素霞.谈谈WEB设计中的优化方法[J].电脑开发与应用, 2002 (2) .
Web前端优化 篇2
达内web前端简历模板
个人信息
所求职位:网页设计/web前端设计
期望薪资:3000-5000元/月
目前职位:网页设计/网站制作
学 历:大专
工作经验:3-5年 现居住地:广州天河天河公园
联系电话: 电子邮箱:
精通HTML、JavaScript、CSS,熟悉网页设计、商城网站整站制作;
精通Photoshop、Flash、Dreamweaver等软件。
工作经验
信阳天勤科技
20xx-8 至 20xx-2任职网页设计/制作薪资-3000元/月
工作职责:完整的网站开发与建设(程序和美工)负责网站规划、设计、制作。武汉旌麾策划设计机构20xx-3 至 20xx-12任职网站策划薪资3000-5000元/月
工作职责:负责网站规划、设计,包括企业站、商城。广州网纪商务服务有限公司-1 至 现在任职网页设计/网站制作薪资3000-5000元/月
工作职责:
1.淘宝商城装修;
2.完整的商城、企业站制作(含美工及程序);
3.公司技术支持及网络维护
教育经历
20xx-9 至 20xx-9北京新亚研修学院计算机综合性学习专业
20xx-9 至 20xx-7信阳新华电脑学校Web应用程序网站开发与建设学习专业
语言能力
英语:一般
自我评价
Web前端性能优化研究及应用 篇3
截止至2013年,互联网总站数超过10亿,每秒约增加8个新网民,Web发展如此迅速,前端性能却普遍低下,就连大型互联网公司也难以幸免,例如:2011年百度推出的百度新首页,后端平均运行时间只有60ms,而前端平均运行时间却为1.3秒[1],前端性能可见一斑。尤其是在当今网速低下的环境中,优化前端就显得尤为重要。
在21世纪初,谷歌就已经开始重视前端优化,并提出了speed tracer等前端优化工具,雅虎也推出了《High Performance Web Sites》、《Even Faster Web Sites》等前端优化方案。国内,王成等人分析了浏览器与服务器的通讯过程,以优化HTTP请求为原则,从提出了一个系统的前端优化方案[2];朱云峰通过研究Ajax响应速度,以执行速度和内存使用量为优化点,对页面的Ajax请求进行了了优化[3]。上述研究各有侧重,但都没有针对浏览器的二连接限制进行优化,本文针对此,分析了影响Web前端性能的因素,在优化B/S通讯过程中的HTTP请求的同时,针对浏览器二连接限制所导致的Web前端效率低下的问题提出了连接请求调度权值模型,在该模型的基础上提出了请求调度算法SACC,并将上述优化方案与实际相结合,验证了解决方案的合理性。
1 Web前端性能瓶颈分析
1.1 B/S结构限制
从浏览器对服务器发出网页请求,到网页呈现在浏览器的过程,由下列步骤组成:
①用户在浏览器的地址栏输入网页URL。
②浏览器通过域名解析出与对应的IP地址。
③浏览器向Web服务器发送HTTP请求命令。
④服务器接收请求,根据请求确定目标资源文件。
⑤服务器发回HTTP响应,将生成的HTML文档发回给浏览器。
⑥浏览器接收并解析服务器返回的HTML文档,向服务器请求其中的资源文件。
⑦服务器接收浏览器对资源文件的HTTP请求,并返回相应的资源文件。
⑧浏览器接收资源文件,渲染页面,重排和重绘。
在B/S理论中,浏览器是与服务器通信、展现页面的主体,因此浏览器与服务器的通信过程、对页面的渲染效果等方面,成为了Web前端性能优化的关键。
1.2 浏览器二连接限制
为防止服务器拥塞,HTTP协议规定:客户端与服务器端建立的并发连接数应受到限制,在同一时刻,单个客户端与服务器建立的持久连接数不应超过两个[4]。
浏览器在以下情况出现二连接限制问题:①用户触发了网页中两个以上的Ajax请求;②用户连续发出两个请求,在服务器未对请求响应的情况下,又发出了请求,如图1所示,用户在T1时刻发出了请求1和请求2,在服务器尚未响应时,又在T2时刻发出了请求3,由于浏览器的二连接限制,请求3被阻塞,直到T6时刻浏览器才发出请求3。
2 Web优化性能方案
2.1 B/S结构优化
针对由于B/S结构对前端性能带来的影响,本文从服务器端优化、HTTP请求优化、延迟加载和Ajax优化方面给出了优化方案。
①服务器端优化
服务器端优化旨在减小浏览器对服务器发出的HTTP请求数量,优化HTTP请求的资源传输路径,尽可能减小网络资源的传输消耗,主要有以下手段:优化域名、设置合理缓存、使用CDN、Gzip压缩。
优化域名是指使用多域名策略,把页面内容分配到多个域名中,可以使页面最大限度地实现平行下载。给页面资源分配多域名其中的一个域名的原则是,保证一个资源在分配时总是分配到固定的一个域名。这样,如果资源已经在浏览器缓存,下次访问时就可以在缓存中读取,避免从其他域名再次下载资源。
设置合理的缓存是设置浏览器使用缓存来避免重复加载资源,提高资源利用率。在服务器与浏览器之间可以设置Expires、Etag头部信息等方式进行缓存。
CDN由一系列分散到不同地理位置上的服务器组成,它能够实时地根据网络流量和各节点的连接负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,缩短了服务器与用户之间的距离,提高了资源的加载速度。
GZIP压缩是指当服务器中的网站被访问时,服务器将网页内容压缩后传输给来访的浏览器,GZIP有两个优点,一是减少存储空间,二是通过网络传输文件时,减少传输的时间。
②HTTP请求优化
HTTP请求优化是指精简浏览器请求的资源文件大小,主要手段有图片优化、压缩合并资源文件。
图片优化旨在减少图片的HTTP请求个数,使用CSS Sprites把多个图片整合到一张图片中,再用CSS的background属性进行背景定位。
压缩资源文件指通过去除多余空格、换行符、注释等来压缩HTML、CSS、Java Script文件。合并静态文件将页面中多个CSS、Java Script请求合并为一个请求,以减小客户端对资源文件的请求数量。
③延迟加载
延迟加载并不一定能减少HTTP请求数,但是却能在某些条件下或者页面刚加载时减少HTTP请求数,主要手段包括图片延迟加载和组件预加载。
图片延迟加载是指在页面刚加载的时候只加载首屏,当用户继续往后滚屏的时候才加载后续的图片,这种加载机制减小了不必要的HTTP请求数量。
预加载是一种浏览器机制,使用浏览器空闲时间来预先加载用户接下来可能会浏览的页面资源。页面提供给浏览器需要预加载的集合,浏览器载入当前页面后,会在后台下载需要预加载的页面并添加到缓存中,用户访问时,再从缓存中取,从而加速页面呈现。
④Ajax优化
Ajax优化指利用可缓存的Ajax来提高性能,Ajax的优点是由于其从服务器传输信息的异步性而为用户带来反馈的即时性。但使用Ajax并不能保证用户不会在等待异步的Java Script响应上花费时间,在许多应用中,用户是否需要等待响应取决Ajax如何使用,这时“异步”并不意为着“即时”。为提高性能,优化Ajax响应很重要,提高Ajax性能的一项重要措施是使响应具有可缓存性,减少对HT-TP的请求。
2.2 针对浏览器二连接优化
2.2.1 请求调度解决方案
有两个指标可以用来衡量网页的性能:
①文档下载完成时间TDD(Time to Download Document):是指浏览器下载网页资源文件如脚本、图片、视频等元素的时间。它与网络延时和网络带宽有关,网络延迟越小、带宽越大,TDD值越小。
②文档渲染时间TSR(Time to Start Render):是指浏览器从请求网页到向用户呈现网页所用的时间,TSR时间越短,用户感觉上等待时间越短。
浏览器的连接数目不可以更改,因此考虑在浏览器二连接限制的情况下调整多个HTTP请求的请求顺序,从而减小总体等待时间,证明如图2所示。
T5时刻得到请求1的响应,T6时刻得到请求2的响应,假设T6-T5=1,且T5时刻有等待发出的A、B、C三个HTTP请求,从请求到响应时间分别为x、y、z,并且满足大小x>y>z,x>y-1>z。在T5时刻由于请求2还未返回,因此只能发出一个请求。
方案1中,请求发送顺序为A、B、C,总等待时间从T6算起,为x+z-1;方案2中,请求发送顺序为A、C、B,等待时间为y+z,因y>x-1,所以方案1的等待时间小于方案2的等待时间,因此方案1优于方案2,由此可得出HTTP的请求顺序会影响请求效率。
针对浏览器二连接限制的优化实质上是指在多个HTTP请求的情况下,通过合理调整请求顺序,保证TDD和TSR值最小,那么此时的二连接限制优化问题就变成了队列模型的多机调度问题。
2.2.2 SACC算法设计
①TDD最小优先策略思想
上述多机调度问题具体是指:有n个独立任务P={p1,p2,…,p3},由m台相同的机器Q={q1,q2,…,qn}进行处理,作业pi所需的处理时间为ti(1≤i≤n),每个作业均可在任一台机器qi上加工处理,但不可间断、拆分。多机调度问题要求给出一种作业调度方案,使n个作业在尽可能短的时间内由m台机器处理完成。
其中n个作业等价于浏览器发出的n个请求,m台机器等价于m个并发连接通道,那么二连接限制优化就转化为寻找一种请求调度方法,使用户在m个并发连接限制下,完成n个请求花费的时间最短。
多机调度问题采用贪心策略来解决,贪心策略指当请求数大于并发连接数时,将请求按处理时间降序排序,处理时间最长的请求被优先处理,因此需构建处理时间TRP(Time to Request Processed)降序序列。
TRP由三个部分组成:①请求从浏览器到服务器的传输时间;②服务器响应时间;③请求从服务器到浏览器的传输时间。第2项时长相较于1、3项可忽略不计。在相同的网络状况和请求路径下,浏览器请求的数据越大,TRP值越大,因此可依据请求数据大小构建TRP降序序列。
②TDD与TRP综合调度策略
TDD最小优先策略虽然能得到较小的TDD值,但用户体验较差,因为通常情况下,浏览器发出的请求消耗的时间大小为:视频>图片>文本,而浏览器对网页内容的渲染速度却是:视频<图片<文本。若仅考虑TDD最小策略,会导致用户长时间看到空页面,因此需同时考虑TDD值和TSR值,设计一个综合的调度权值计算模型,以得到更优的调度方案。
在此模型中,设置两个度量属性,分别是请求对象大小P和对象渲染时间Q,在此基础上引入权重系数μ,μ决定了TDD和TSR在等待总时间中所占的比重,最后引入ω值来确定请求的发送次序。
以上公式描述如下:在等待调度的请求序列中,ω0表示请求q的调度权值,α0表示请求q的大小P,β0表示请求q所需的渲染时间Q,公式(1)表示了三者的关系,μ表示对象大小所占的权重。
公式(2)体现了TDD最小优先策略,即请求对象P较大的会被优先发送,将请求对象P0与最大请求对象Pmax相除,使α0在区间(0,1]内,保证ω0的取值尽量平滑。
公式(3)体现了TSR最小优先策略,即渲染时间小的请求会被优先发送,Qmin表示请求序列中渲染时间最小值,Q0表示请求q所需的渲染时间,与α0类似,采用两者的比率的方式保证β0取值在(0,1]内。
公式(4)表示Q0的具体计算方式,渲染时间等于对象大小S0除以此对象的渲染速度V0。
综合公式(1)、(2)、(3)得出,请求的调度权值ω越大,请求发送优先级越高,由此得到一个综合的请求调度方案,使得TDD和TSR的值最小。
3 Web性能优化实践
集智调查网站是一个面向高校的调查网站,以其案例丰富、操作简洁而受到高校师生的好评。但在使用过程中,网站前端性能问题严重,极大制约了网站的使用,本文选择将该网站作为前端性能优化对象,通过实施前端优化策略,提升其前端性能。
3.1 前端性能检测流程设计
3.1.1 选择评测工具
①使用Fire Fox的network来查看页面资源加载时间顺序和阻塞情况。
②使用Chrome的Time Line查看页面加载事件、脚本事件、渲染事件、绘制事件的情况。
③使用Chrome的profiles监测CPU使用、页面渲染、Java Script执行、CSS利用率等。
④选择YSlow对页面进行性能检测并评分,并分析造成页面性能底下的原因。
⑤利用Speed Tracer监测浏览器UI线程、渲染重排、布局板面以及Java Script执行效率。
3.1.2 设计评测流程
准备测试环境,包括清空浏览器缓存,清空DNS缓存,慢网速下测试,开启网页测试工具。启用YSlow来检测页面得分,发现85%的页面得分在70分以下,而达到前端标准的页面分数应在80分~90分之间,通过对网站整体页面检测分数,找到性能得分在65分以下(严重影响使用)的页面,进行性能问题分析。
3.2 寻找前端性能优化瓶颈
前端性能瓶颈分析如图3-4所示。
图3和图4为对调查案例页面采用Fiddler和Speed Tracer所检测到的Timeline和Connection View的数据,从图中可以分析出的前端性能瓶颈如表1所示。
3.3 B/S框架优化策略
①服务器端优化
在服务器端进行以下优化:使用Expires、ETags策略对资源缓存;开启Gzip,对资源文件进行压缩;去除HTTP 404请求。
②优化HTTP请求
对资源文件进行精简、压缩、合并成一个资源文件,图标和小图片文件使用CSS Sprites策略,由原来的十几个HTTP请求减小到一个。
③延迟加载
对于多图片页面,进行图片延迟加载处理,在用户浏览图片集时,才进行图片加载。
④Ajax优化
对多Ajax请求的页面进行Ajax缓存,减小用户重复的Ajax请求对服务器造成的压力。
3.4 SACC算法优化
为解决浏览器二连接限制优化问题,采用SACC算法来优化请求序列,在并发连接请求处添加该连接的相关信息,如请求类型、请求内容大小等,在浏览器发出该请求时,利用Java Script代码读取请求的备注信息,建立调度模型。
算发的伪代码如下:
3.5 优化前后对比
以调查案例页为例,图5优化前后页面HTTP请求对比中可以看出,页面资源请求明显减少,提高了页面响应速度,减小了对服务器的压力,加速了页面渲染,提升了用户体验。
表2优化前后的对比中可看出,加载时间和页面渲染时间的减少,提高了页面的呈现速度,脚本执行时间的降低,提高了页面响应速度和整体性能。
4 结束语
web前端开发面试题 篇4
1. Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?
2. 行内元素有哪些?块级元素有哪些?CSS的盒模型?
3. CSS引入的方式有哪些? link和@import的区别是?
4. CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?
5. 前端页面有哪三层构成,分别是什么?作用是什么?
6. css的基本语句构成是?
7. 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?经常遇到的浏览器的兼容性有哪些?怎么会出现?解决方法是什么?
8. 如何居中一个浮动元素?
9. 有没有关注HTML5和CSS3?如有请简单说一些您对它们的了解情况!
10. 你怎么来实现下面这个设计图,主要讲述思路 (效果图省略)
11. 如果让你来制作一个访问量很高的大型网站,你会如何来管理所有CSS文件、JS与图片?
12. 你对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
【Javascript】
1. js是什么,js和html 的开发如何结合?
2. 怎样添加、移除、移动、复制、创建和查找节点
3. 怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别
4. 面向对象编程:b怎么继承a
5. 看看下面alert的结果是什么
view sourceprint?1.function b(x, y, a) {
.arguments[2] = 10;
.alert(a);
}
b(1, 2, 3);
如果函数体改成下面,结果又会是什么?
a = 10;
alert(arguments[2] );
6. 请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象
var obj = parseQueryString(url);
alert(obj.key0) // 输出0
7. ajax是什么? ajax的交互模型? 同步和异步的区别? 如何解决跨域问题?
8. 什么是闭包?下面这个ul,如何点击每一列的时候alert其index?
这是第一条
这是第二条
这是第三条
9. 最近看的一篇Javascript的文章是?
10. 常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
11.说说YSlow(可以详细一点)
[web前端开发面试题]
基于框架的WEB前端设计 篇5
关键词:Bootstrap,Angular JS,框架,WEB前端
0 引言
随着新一代信息技术的快速发展,Web应用越来越广泛,对于Web前端开发工程师的要求也越来越高,无论是开发技术上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,由原来必须掌握的HTML、CSS和Java Script三个技术要素演变成现在的HTML5,CSS3和Jquery。而且前端工程师开发的Web应用不仅需要适合传统的电脑PC端,还需要适合手机和IPAD等各种不同的移动设备。为了降低Web前端开发的难度和复杂性,引入框架思想进行Web前端开发。
使用框架进行Web前端开发主要有两个方面的原因:使用W3C标准的框架后,可以有效提高Web应用的性能,让应用的代码组织更有序,提高其可维护性;使用便捷的MVC框架,把HTML作为信息模型(Model)、CSS控制样式(View)、Java Script实现功能和业务逻辑(Controller),使得代码具有很好的重用性和复用性,提高Web前端开发的效率、质量和团队协作性。本文主要简单介绍使用框架思想来进行Web前端开发。
1 框架概述
框架是随着软件工程的发展演变而来的,在软件开发过程中,很多项目要解决的问题和实现的功能是一样的,在这种情况下,可以将实现相同功能的代码放在单独的一个文件作为组件或构件,供以后开发和使用,这些代码是可重用和扩展的。因此,业界人士将相同功能的实现和问题的解决方法进行抽象,最终抽取和形成一个应用框架。框架可以使软件开发人员将大部分时间用来分析和处理业务逻辑上,在编写代码时只要应用框架就可以了。
使用框架开发应用的优点如下:
(1)框架重用性好,开发效率高。在开发应用时,可以重用框架的分析、设计、代码,使得应用开发效率和开发质量得到了显著提高。应用开发人员可以按照框架的思想将应用进行分析并将其分解为同样的组件,采用同样的方法来解决的问题。框架还提供了可重用的概要设计和详细设计,并将应用分解成较小的组件和接口。只要符合框架的定义和要求,开发人员就可以使用框架中的类和接口,使得开发效率大大提高。
(2)因框架实现了“高内聚、低耦合”,可扩展性较好。框架把要解决的业务分解为较小的事务,采用分层的方法将相关性很强的代码组合成一个组件,根据单一责任原则只解决一项较小的事务,并且减少组件与组件之间的联系,如果彼此之间的联系比较复杂的话,继续分解为较小的组件。因此框架实现了软件工程的“高内聚、低耦合”的要求,易于控制,易于扩展。
(3)使用框架,开发周期短,成本低,可维护性较好。使用框架开发应用,只要调用类和接口就可以完成大部分工作,大幅度缩短了应用和软件的开发周期,显著提高了软件开发质量。大粒度的重用使得应用和软件开发成本大大降低,开发时间成倍减少,同时分层思想设计的框架使得应用开发的适应性和灵活性也得到增强,可维护性较好。
2 Bootstrap框架应用
2.1 概述
Bootstrap框架主要用于静态页面的设计,是由Twitter公司的设计师Mark Otto和Jacob Thornton共同开发的,是比较受欢迎的一个CSS/HTML Web前端框架。它是基于HTML5、CSS3和Java Script的框架,符合HTML和CSS规范,且代码简洁灵活,使得Web前端开发更加快捷。Bootstrap框架推出以后一直颇受欢迎,是Git Hub网站上的排行榜靠前的开源项目,国外知名的公司NASA的Breaking News和国内一些移动开发者较为熟悉We X5前端开源框架都采用了Bootstrap框架。
由于Bootstrap的HTML是基于HTML5的最新技术,可以快速实现响应式页面,集成了非常友好的CSS样式表,对于非设计人员也可以制作出很漂亮的网页,且占用资源非常少,因此我们也采用Bootstrap框架进行Web前端设计。该框架包含了丰富多彩的Web组件,利用这些组件,我们可以快速的搭建一个个性化的、漂亮和功能完备的网站。主要包括以下几个部分:
1)全局CSS样式:包含了格栅系统、表单和表格等集成样式。
2)组件:包含了下拉菜单、按钮下拉菜单、文本框、导航、列表框等组件。
3)插件:包含了进度条、警告对话框、弹出框等插件。
2.2 应用
(1)从Bootstrap官网http://getbootstrap.com/getting-started/#download下载Bootstrap开源框架。Bootstrap主要包含css、fonts和js文件夹:css文件夹存放的是bootstrap.css基本样式,在网页中使用<link rel="stylesheet"href="css/bootstrap.css"/>命令即可;fonts文件夹存储网页中可以使用的各种字体;js文件夹存放的是bootstrap.js等js文件,在网页中可以通过<script></script>标签来使用js组件。
(2)Bootstrap是根据移动终端优先的原则设计的。它支持响应式网页(RWD,Responsive Web Design),为了控制网页的尺寸比例和触屏缩放,需要使用命<meta name="viewport"content="width=devicewidth,initial-scale=1">命令添加viewport元素。
(3)设置页面流式布局,网页中的各元素会根据设备分辨率的不同而自动调整大小,但元素位置并不会发生变化。流式布局通常将页面分为12列,将网页的宽度设置为100%,具体代码因太多此处省略。
(4)运用Bootstrap提供的各种样式、组件和插件完成WEB前端设计。例如制作一个提交按钮,通过以下代码实现<button class="btn btn-default"type="submit">提交</button>。
3 Angular JS框架应用
3.1 概述
Angular JS主要用于构建单页面的动态页面的设计,更多关注的是构建CRUD(增加Create、查询Retrieve、更新Update、删除Delete)应用,由Misko Hevery等人在2009年创建,是一款优秀的JS框架,被广泛应用。
Angular JS主要使用MVC的分层设计模式,将管理数据的model、应用逻辑controller和向用户显示数据的界面(view)清晰地分离开,以提高代码的易读性和可移植性,使得程序清晰易读。在Angular JS应用中,model被存储在各个对象的属性中,view就是文档对象模型(DOM),controller就是JS类和代码。
3.2 应用
(1)从网上下载Angular JS框架。将要使用的js文件复制到工程文件的js文件夹中,并在页面中使用<script src="js/angular.js"></script>命令引入。
(2)使用ng-app命令在动态页面中创建模块。Angular JS的MVC结构是基于整个具体应用的。通常在页面的指定容器标签中使用ngapp命令来创建具体模块,例如<div ng-app="test"></div>。
(3)设置控制器controller。在网页中通过ng-controller指令设置控制器,<div ng-app="test"ng-controller="test Controller">{{text}}</div>。再通过JS代码控制逻辑,app.controller("test Controller",function($scope){$scope.text='welcome';})。
(4)设置模型数据model。通过ng-model命令动态设定模型数据model内容,<div ng-app="特test"ng-controller="Hello Controller"><input type="text"ng-model="text">{{text}}</div>。
4 总结
本文针对新一代信息技术的发展,将Bootstrap和Angular JS框架运用在WEB前端开发中,希望能对WEB前端设计的研究提供一定的参考。当然本文只是简单介绍了Bootstrap和Angular JS框架的基本应用,详细的应用有待进一步的完善。
参考文献
[1]http://www.51cto.com.
[2]http://baike.baidu.Com.
Web前端开发技术探讨 篇6
2005年以后,互联网进入Web2.0时代,Web前端由此发生了翻天覆地的变化。和Web1.0时代相比,网站的主要内容不再只是静态的,网页也不再只是承载单一的文字和图片,各种富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现的。
Web前端开发是从网页制作演变而来的,之前使用Photoshop和Dreamweaver就可以方便的制作网页。但如果要让网页的内容更加生动,提供更多交互形式的用户体验,以满足企业级别的需求。那么还需要掌握基本的Web前端开发技术,其中最基础的是HTML、CSS和JavaScript。html是内容,css是表现,javascript是行为。在此基础上则延伸了大量的插件、框架和模板,丰富了Web前端的交互内容,增加了Web的开发效率。
这里介绍Web前端开发所需要用到一些的重要技术。
2DIV+CSS、JavaScript 、HTML5和jQuery
2.1 DIV+CSS
DIV+CSS是WEB设计标准,它是一种网页的布局方法,而网页的布局不仅仅影响到网页的美观,也直接决定了网页重构的难度,因此在网页开发中占有重要的位置。与传统中通过表格(table)布局定位的方式不同,它可以实现网页页面内容与表现相分离。
相对与传统的table, 采用DIV+CSS技术的网页,对于搜索引擎的收录更加友好。样式的调整更加方便现在YAHOO,MSN等国际门户网站,网易,新浪等国内门户网站,和主流的WEB2.0网站,均采用DIV+CSS的框架模式。
对于同一个页面视觉效果,采用CSS+DIV重构的页面容量要比TABLE编码的页面文件容量小得多,代码更加简洁,前者一般只有后者的1/2大小。对于一个大型网站来说,可以节省大量带宽,并且支持浏览器的向后兼容。
2.2 HTML5
HTML5是2012年才开始推出的新的网页设计语言,和HTML相比,HTML5赋予网页更好的意义和结构。基于HTML5开发的网页APP拥有更短的启动时间,更快的联网速度,这些全得益于HTML5 APP Cache,以及本地存储功能。
HTML5具有以下的优点:
易用性:新的HTML标签像<header>, <footer>,<nav>,<section>,<aside>等等,使得阅读者更加容易去访问内容。
视频和音频支持:HTML5为视频和音频的播放提供了便利,视频和音频标记的使用,可以带来顺畅的回放。内置支持的标题和副标题,把视频和音频元素添加到一个网站,比使用flash要更加的容易。
更好的交互:HTML5的Canvas标记,可以创建交互和先前由flash完成的动画制作。并且,和HTML5辨识能力一起,带来了常见的平板电脑操作手势,像点击和滑动进行缩放等,甚至允许创建移动游戏。
2.3 JavaScript
JavaScript是一种脚本编写语言,它采用小程序段的方式实现编程,像其它脚本语言一样,JavaScript也是一种解释性语言,因为JavaScript的运行不需要专门的编辑器,因此JavaScript通常用在客户端。使用它的目的是与HTML超文本标识语言、Java脚本语言一起实现在一个网页中链接多个对象,与网络客户交互作用,从而可以开发客户端的应用程序。
JavaScript具有很多优点:
动态性:JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。
跨平台性:JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可以正确执行。
减少交互时间:网页上一些常用的功能,比如在注册时检测用户名输入有效性、两次输入密码是否一致等,如果这些功能都交给服务器来判断,不仅增加了服务器的负担,也同时耗费了网络流量,也相应的提高了系统的响应时间,而使用JavaScript,就可以在客户端完成这些操作。
2.4 jQuery框架
jQuery是对js(javascript)底层Dom操作封装的一个框架,它是轻量级的js库,封装了大量常用的DOM操作,使开发者在编写Dom操作相关程序的时候能够得心应手。jQuery
没有大量的专有对象,多为提供函数进行Dom操作。它使用户能更方便地处理HTML、events、实现动画效果,并且方便地为网站提供AJAX交互,它不是偏重于富客户端的框架,而是侧重于Dom编程。
jQuery是现在最流行的js框架,它有几个突出的亮点:一是支持CSS3的大量选择符,想定位或选择一个html元素简直轻而易举。二是灵活便捷的Ajax请求和回调操作。三是事件绑定功能,内部封装了很多事件,想统一为一个页面上的一些元素添加事件很方便,这也提高了复用性和可维护性,避免了页面中出现大量的html属性。合理的编码可以使html与js, css分离开,便于维护。
3 Bootstrap
快速构建一个美观且高品质的网站是所有开发者梦寐以求的事,但是开发一个好的网页前端不仅掌握需要大量的技巧,还需要丰富的设计经验,而Bootstrap的出现,则很好的解决了许多初学者面临的问题。
Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。它提供了丰富的元素和组件,并使得形式和功能结合得很好。Bootstrap的强大之处在于它对常见的CSS布局小组件和JavaScript插件都进行了完整且完善的封装,即使代码不是很理解,也轻松使用。
Bootstrap主要具有以下的优点:
网格系统:使用了目前比较流行的网格系统,灵活的网格系统可以让开发工作变得更简单,不仅可以使用核心默认的网格类,也可以去创建自己的,新的网格系统允许根据设备大小通过变量来声明。比如,可以针对桌面环境设置4列布局,针对平板电脑设置2列布局,针对手机设置1列布局。这样,就可以很容易地控制你的页面的跨设备显示效果。
响应式设计:根据不同的屏幕分辨率与上网设备,Bootstrap的布局与组件会做出响应,自动缩放。
扁平化和整洁的UI:Bootstrap采用了时下最为流行的扁平化设计风格,而扁平化带来的好处包括优化网站加载速度、有利于SEO搜索引擎优化、采用FontAwesome等字体类矢量网页图标。
基于LESS:可以更有效,更快速的创建CSS代码,大大简化了CSS的编写,并且降低了CSS的维护成本,就像它的名称所说的那样,LESS可以让我们用更少的代码做更多的事情。
4小结
前端开发的学习曲线是先快后慢,每一步的提高都不是一件容易的事情。在学习的过程中,一定要保持良好的习惯。比如,注意多写代码、和命名规范,保持好的html的文档结构,尽量优化html,css和js代码,多去关注网站性能优化的方式。
Web前端常见安全问题及对策 篇7
随着互联网特别是Web2.0的兴起,Web网站和应用越来越广泛,越来越多的企业和个人将服务架在Web平台上,Web的安全性也变得越来越重要。Web业务的发展引来黑客们的关注,黑客利用一些常见的Web安全漏洞对网站进行攻击和窃取用户信息,使得网站用户的利益受到损害。
2 Web安全问题产生原因
2.1 现实原因
随着网络的普及和Web应用的丰富,在互联网上人们可以开展各类活动,如购物、游戏、网上银行、社交平台等,这些服务网站上有大量用户资金相关的隐私信息如银行账户、密码、个人身份信息、电话号码等,这些信息可以直接或间接被不法分子窃取和利用,从而对最终用户造成损失。巨大的利益诱惑是产生Web安全问题的动机。
2.2 技术原因
在技术层面,W eb服务是建立在HTTP协议上的,HTTP又是建立在TCP/IP之上,在TCP/IP设计之初是没有考虑安全问题的,所有的安全问题需要Web服务提供者自己考虑,这使得在网络上传输的数据是没有任何安全保护。攻击者可以利用系统漏洞造成进程缓冲区溢出,或者利用系统漏洞来进行用户提权运行任意程序,甚至安装和运行恶意木马程序,窃取用户机密数据。在Web应用开发时由于大部分开发者把精力放到业务逻辑实现而非Web安全性上,导致Web程序本身存在很多漏洞,如缓冲区溢出、SQL注入等。
2.3 开发人员的乐观
大部分的开发人员是乐观的,认为自己开发的Web网站很安全,如网站已经通过成熟的Web开发框架或采用了一些安全传输技术如SSL或做了完善的数据备份,所以没有什么安全风险,产生这种原因的根源是大部分开发人员对Web安全问题认识不足或不全,片面乐观导致。
3 Web安全问题常见分类
在了解Web安全问题之前,需要先大致了解Web应用结构,如图1所示。
上面只是列举了Web开发用到的一些技术和框架,实际上Web应用依赖的技术栈比这个丰富许多。黑客攻击的基本过程是:通过输入提交“特殊数据”,特殊数据在数据流的每个层处理,如果某个层没处理好,在输出的时候,就会出现相应层的安全问题。例如:
(1)如在操作系统层上没处理好,在Shell下把“特殊数据”如rm-rf/;当做指令执行而此时进程恰好对操作系统有root权限,就产生了OS命令执行的安全问题,把所有硬盘数据全部删除了。
(2)如在存储层的数据库中没处理好,数据库的SQL解析引擎把这个“特殊数据”'union select username,passwd from user_table--当做sql语句执行时,就产生SQL注入安全问题,这样用户的数据就泄漏了。
针对上面的分层模型,对Web安全大致可以分为:
(1)Web前端安全性。
(2)Web后端安全性。
(3)数据库安全性。
(4)服务器安全性。
下面重点介绍Web前端的常见安全性问题和应对策略。
4 Web前端安全问题
4.1 XSS漏洞
XSS(Cross-Site Scripting)指攻击者在网页中嵌入客户端脚本(例如Java Script),用户浏览网页就会触发恶意脚本执行。比如获取用户的Cookie、导航到恶意网站、携带木马等。
攻击者寻找有漏洞的Web站点,然后生成其攻击链接,把攻击链接伪装成美女图片等用户容易点击的链接,用户一旦点了该链接后,用户访问的就是攻击者篡改后的网站内容。
4.1.1 通过URL参数进行攻击
该页面显示两行信息:
从URI获取'name'参数,并在页面显示,显示跳转到一条URL的链接。
攻击者还可以通过以下URL实现修改链接的目的:
当用户点击以上攻击者提供的URL时,index.php页面被植入脚本,用户再点击"Click to Download"时,将跳转至攻击者提供的链接。
4.1.2 利用用户输入攻击
例如:用户前端代码如下:
<input id=1>{{username}}</input>
黑客攻击代码如下:
<script>alert(1)</script>
最后html代码如下:
<input id=1><script>alert(1)</script></input>
黑客通过注入js脚本的方式进行站点攻击。
XSS攻击解决办法:
(1)不允许输入HTML内容时。
1)输出到页面上的所有内容都要转义
2)不要动态生成<script></script>的内容
3)输出URL时仅允许以“http://”或“https://”开头的URL
4)不要从外部网站读入样式表
(2)允许输入HTML内容时,解析输入的HTML内容,提取其中的非脚本部分。
(3)不要相信用户的任何输入(不限于POST Body,URL的Query String,甚至是Headers),用户的输入都要检查。
4.2 CSRF漏洞
CSRF(Cross-site request forgery),是一个知名度不如XSS但是却同样具有很大杀伤力的安全漏洞。
4.2.1 Get请求漏洞
如你网站A上的「登出」功能是这样实现的:
<a href="http://www.abc.com/logout.php">登出</a>
则存在CSRF漏洞。假设网站B(当然也可以是网站A本身)中有这么一段代码:
<img src="http://www.abc.com/logout.php">
那么当用户访问的时候,就会导致网站A上的会话被登出。
4.2.2 POST请求漏洞
如网站B中:
当用户访问网站B的时候,网站B自动发送了POST请求到网站A,网站A无法识别请求来自网站A的form请求还是网站B的form请求,最后被攻击。
CSRF攻击解决方法:
(1)给所有请求加上token检查。token一般是随机字符串,只需确保其不可预测性即可。token可以在Query String、POST body甚至是Custom Header里,但千万不能在Cookies里。
(2)检查referer(这往往不能防御来自网站自身的CSRF攻击,如用户评论中的<img>就是一个常见触发点)。
(3)执行重要业务之前再次要求输入密码。
5 结语
Web前端优化 篇8
关键词:MVVM,Web前端框架,Angular JS
面向对象设计(OOD)的核心设计原则是使程序模块达到“高内聚,低耦合”,而MVC、MVP、MVVM等都是围绕这一核心原则相继产生的框架模式。随着Web应用的日趋复杂、前端规模不断扩大,Web前端也开启了MVC、MVVM风潮,越来越工程化。
1 MVVM框架模式思想
MVVM框架模式是Model-View-View Model模式的简称,于2005年由微软的WPF和Silverlight的架构师John Gossman提出。MVVM既吸收了MVC模式的精华,又利用了数据绑定(Data Binding)技术和WPF中命令Command技术对MVP模式进行了改进。其设计思想是“数据驱动界面”,与传统的“事件驱动界面”相比较,以数据为核心,使视图处于从属地位。数据绑定[1]使表层视图会随底层数据地改变而改变,若用户修改了视图元素值,相当于透过视图元素直接修改了底层数据。Com-mand技术可接受View中用户的输入并做相应处理,它解耦了视图和视图模型。
MVVM框架模式结构如图1所示,由模型(Model)、视图(View)、视图模型(View Model)三部分组成[2]。MVVM为View层单独定制了一个Model,既View Model。View中的视图逻辑通过双向数据绑定和命令绑定到View Model的属性上,通过View Model得到Model中的数据,双向数据绑定实现了视图和数据模型的自动同步机制。
MVVM中每个模块在系统中的职责不同。视图:用于界面呈现,它不直接与Model进行交互,而是通过View Model与Mod-el通信,并可独立于Model的变化和修改,这也是MVVM低耦合思想的体现。视图模型:是对视图逻辑和View与Model模块之间状态控制的封装,是View和Model通信的桥梁,也是MVVM设计思想的核心部分。它包含绑定的数据集合,可根据用户输入通知修改Model、响应Model中的数据变化事件,可发送View Model中的变化事件以通知View更新。一个View Model可以绑定到多个View上,即多个View可以复用同一个View Mod-el,这大大提高了代码的可重用性。模型:封装了与业务逻辑相关的数据,以及数据处理等事件。它不依赖于View和View-Model,可直接与数据库交互。
2 Angular JS中MVVM框架模式的应用
2.1 Angular JS简介
Angular JS框架于2009年由Google首次发布。因其模块化思想,双向数据绑定,指令(Directives),测试驱动开发等特性,以及其2.0版本对移动设备的良好支持,目前已处于前端JS框架之领导地位。Angular JS设计初衷是标准的MVC模式,但随着代码重构和API的重写,现在更是将MVVM框架模式表现得淋漓尽致。
2.2 Angular JS中MVVM应用模式
在Angular JS中,MVVM应用模式主要体现在以下几个部分,结构如图2所示。
View:它专注于界面的显示和渲染。在Angular JS中,View除了HTML、CSS这些视图代码,还包含Angular JS指令、表达式等的视图模板。View不能直接与Model交互,视图对象需要通过$scope这个View Model来引用。
View Model:它负责View和Model的交互、协作。View Model给View提供显示数据,并提供了View中Command事件操作Model的方式。在Angular JS中,$scope对象充当了这个View-Model的角色。$scope被称为控制器的功能模块包装,它提供一些API来监控View状态,可以把数据模型和函数暴露给视图(UI模板),它包括数据引用关系、控制器定义行为、视图处理页面布局以及相应的处理跳转等内容。
Model:它是与应用程序的业务逻辑相关的数据的封装载体,是业务领域的对象。Angular JS通过数据模型Model驱动,以Java Script对象的属性的形式呈现。通过数据绑定技术,视图会根据数据模型的变化自动更新,因而模型也是Web应用程序开发和设计中的焦点。
Angular JS中,Model与View Model通过$scope对象互动。$scope对象监听Model的变化,通过View来发送和渲染,由HT-ML来展示代码。Model并不关心会被如何显示或操作,所以Model中也不会包含任何界面显示相关的逻辑。在web页面中,大部分Model都是来自Ajax的服务端返回数据或者是全局的配置对象,而Angular JS中内置的服务$http非常强大,可直接替代Jquery的Ajax函数,它封装和处理这些与Model相关的业务逻辑。
Controller:Angular JS提供了无状态的Controller,它并不是MVVM模式的核心元素。Controller可设置模型的初始状态,它组合一个或者多个服务(service)来获取业务领域Model并将其放在View Model对象上,使得应用界面在启动加载的时候达到一种可用的状态。另外,Controller可监控模型其余部分的变化并采取相应的动作。
Angular JS内嵌了j QLite,它内部实现的一个Jquery子集,包含了常用的Jquery DOM操作方法,事件绑定等,所以我们只需用JS控制View Model,不用关注数据如何呈现到页面,由框架更新Model和View。对于用户交互Command事件(如ng-Click、ng-Change、ng-If等)则会转发到转到$scope的某个行为逻辑上,通过View Model来实现对Model的改变,对于Model的任何改变也会随之反应在View Model之上,再通过$scope的“脏检查机制”($digest)来更新到View,从而实现View和Model的分离。
2.3 Angular JS中MVVM应用模式与Web前端传统开发思维对比
Jquery是以事件驱动为中心、面向网页编程的传统前端开发思维的代表。它专注于View层的变化和用户的操作,在对网页元素的定位和操作上需花费较多精力,对于数据处理却是弱项。随着界面和逻辑的日趋复杂,再使用JS或者Jquery去控制DOM会越来越不易,尤其对具有复杂交互的项目,JS逻辑会变得臃肿,交互逻辑分散。而Jquery template技术,虽可实现模块之间解耦,但无法实现数据和视图展现的解耦。Angular JS是新一代前端开发思维的体现,以Model为中心、面向数据编程。它减少对网页元素的定位和操作,避免了Jquery中DOM操作对网页结构的破坏。Angular JS把模型和视图绑定在一起,实现联动,改变模型,DOM就可以随之进行改变,甚至绑定DOM的事件也可以直接跟着进行改变,让View和Model的进一步分离和解耦,减少了前端开发工作量,提高了开发效率。
3 MVVM框架在Web前端开发过程中的优势
MVVM适合编写大型Web应用前端JS框架,其优势如下。在团队层面,MVVM改变了软件开发方式。由于View与View Model之间的松耦合关系,使得开发团队与设计团队分工明确,设计团队只需产出用户友好的界面,而开发团队则专注于业务逻辑和数据,提高了开发效率。在架构层面,模块间松耦合关系使得模块间相互依赖性降低,项目架构更稳定,扩展性得到提高,后续如需增加新模块,能做到最小的改动。在代码层面,通过合理的规划分层View Model,可提高代码重用性,使整个逻辑结构更为简洁。另外,MVVM的引入能更有效地组织应用结构,使项目模块变得清晰化、条理化,增强了代码可读性,降低了前端测试难度。
4 结束语
MVVM框架模式归根结底还是MVC精心优化后的结果,它可兼容当下使用的MVC模式。或许有些人认为,MVVM是以更复杂的方式存储DOM和数据绑定关系,比较耗内存、耗性能,但是当Web应用程序的功能达到一个量级且代码开始需要以更高效的方式组合时,使用优秀的开发框架反而会提高网站的性能。
参考文献
[1]刘立.MVVM模式分析与应用[J].微型电脑应用,2012(12):57-60.
[2]陈涛.MVVM设计模式及其应用研究[J].计算机与数字工程,2014(10):1982-1985.
Web前端优化 篇9
关键词:PHR,物联网,云平台
0 引言
个人健康档案是人们健康管理过程的规范和科学记录, 以多种渠道收集信息满足人们自我健康管理的一种手段[1]。个人健康档案的建立是“以人为本”的电子化档案, 有助于人们建立并拥有服务终身健康的信息系统, 在当今社会尤其在国内医疗资源有限的背景下有重要的现实意义。作为个人健康不间断、非静态、数字化的电子记录集, 一方面要求个人及时有效地记录个人自己表征健康状况的生理指标和症状表现;另一方面要求系统快速准确地根据个人身体的现状, 同时结合已往的个人健康档案 (以往在患病、治疗和用药情况) 进行合理的建议或者向医生专家提供准确专业的描述, 以便快速进行治疗。而传统PHR记录, 书写量大、记录杂乱、文件繁多、不易保存、录入效率低、查询困难等种种因素难以满足以上两个方面的要求。这为物联网和云服务等新技术在该应用领域的发展应用找到空间, 本文的研发工作正是围绕这方面来展开。
本文参考国外个人健康档案的现状和发展, 分析国内个人健康档案的提出重要性和需求迫切性的分析;结合个人健康档案服务平台的需求, 初步给出个人健康档案服务云平台系统的构架设计, 具体包括各个功能结构作了详细的功能设计, 覆盖了个人健康档案的一些基本操作;进而根据个人健康档案服务云平台不同对象的不同流程, 以面向对象的编程思想进行编程实现, 给出了系统的设计实践, 展示了一个界面较美观、灵活性和交互性良好的个人健康档案服务云平台系统。
1 个人健康档案概述
1.1. 个人健康档案的提出
1968年美国Weed等首先提出以问题为导向的健康档案记录方式 (problem oriented medical record, POMR) , 要求医学服务者在医疗工作中记录要采用以个体健康问题为导向的方式[2]。然而直到20世纪90年代这个概念才逐渐推广, 在计算机网络技术高度发达的今天, 个人健康档案可借助网络的力量发展的更加全面和快速。2009年我国为贯彻落实《中共中央国务院关于深化医药卫生体制改革的意见》 (中发[2009]6号) 和《国务院关于印发医药卫生体制改革近期重点实施方案 (2009-2011年) 的通知》 (国发[2009]12号) 精神, 推进居民健康档案标准化和规范化建设工作, 卫生部组织制定了《健康档案基本架构与数据标准 (试行) 》 (以下简称“标准”) 等一系列健康档案标准, 为提高我国居民健康水平奠定了基础, 也为个人健康档案系统的建立提供了标准和依据。
1.2. 健康档案数据标准
从有关个人健康数据来源可看出, 建立个人健康档案是一个横跨各个医学科目、贯穿个人一生、跨行政区域, 不断源源累积、随时动态更新、共建共用的一个长期过程。制定全国统一、科学合理、满足个人、灵活适用的个人健康档案数据标准, 是建立个人健康档案, 尤其是个人电子健康档案的关键。健康档案数据标准目前主要包括三类[3]:
(1) 健康档案相关卫生服务基本数据集标准;
(2) 健康档案公用数据元标准;
(3) 健康档案数据元分类代码标准。
依据以上三类数据标准, 系统在第二类公用数据元标准和第三类数据元分类代码标准的准则及分类下, 按第一类相关卫生服务基本数据集标准, 建立拥有基本信息、公共卫生、医疗服务三个一级类目, 其中公共卫生包括儿童保健、妇女保健、疾病控制和疾病管理四个二级类目, 从而产生三级类目32个, 最终建立起一个总计34张表作为主表的数据库。针对“标准”的第二类公用数据元标准, 主要规定个人健康档案所必须收集记录的公用数据元最小范围及数据元标准, 其中数据元是不同业务领域之间进行无歧义信息交换和数据共享的基础。本系统根据需要节选“标准”中2252个数据元的90%的内容, 用此规范和统一个人健康档案的信息内涵和外延, 指导个人健康档案数据库的规划设计。由于健康档案中的数据元之间存在着一定的层次结构关系。第三类数据元分类代码标准从信息学角度对数据元进行科学分类与编码, 继而建立一个统一的、标准化的信息分类框架, 区别不同的数据元之间的特性, 这样PHR就能够分别定位和存储相应数据, 最终做到方便个人健康档案系统用户的快速理解和共享。
2 个人健康档案服务云平台技术与设计
2.1. 物联网与云平台技术
物联网 (Internet of Things, Io T) 通过各种传感设备, 通过一定协议直接或经过多传感器信息融合后, 将这些观察对象与互联网连接。在PHR系统里, 主要心电传感器、脉搏波传感器、血压传感器、体温传感器等测量监测对象对应的生理特征参数[4], 同时扫描二维码采集药品、相关食品信息, 通过与之连接的智能终端将数据实时稳定地传送到云服务器上。
云服务器 (Elastic Compute Service, ECS) 是一种处理能力可弹性伸缩的计算服务, 其通过虚拟技术将传统的分布在不同地域的服务器, 以集群模式将它们整合成为一个逻辑上的大服务器。因此, ECS有良好可扩展性、强大的存储和计算能力、万无一失的灾难备份能力, 并且通过BGP多线独享带宽ECS可以为用户提供快速准确的服务, 而且很好地解决传统服务器由于服务网络提供商、网络攻击、并发访问带来的一系列问题。PHR系统考虑到系统可能面临的大量数据、不同地域用户等问题, 将服务器建设在云端, 目的按需决定服务能力的配备方案, 一方面保证服务能力, 一方面节约资源经费。
2.2. 个人健康档案服务云平台系统设计
2.2.1. PHR系统功能结构图
个人健康档案服务云平台Web前端主要分为登陆和健康知识的展示, 其中登录用户分为普通用户、超级管理员、普通管理员、医生, 图1显示不同角色的用户权限和功能。
2.2.2. PHR系统主要用例图示例
普通用户在注册、修改个人健康信心、修改个人账户信息、设置医生信息账户信息和数据库的交互, 如图2所示。
2.2.3. 主要流程图
从顶层数据流图可看出, 数据流向为用户访问网站页面后数据进行交互后, 信息数据向网站页面显示和数据库数据存储。
从第一层数据流图可看出, 根据用户的交互请求不同, 数据将会有不同的走向, 分别是流向网站页面显示和流向数据存储。
3 个人健康档案服务云平台系统实现
3.1. 开发环境
(1) 开发工具:Myeclipse 8.5, Tomcat 7.0, Oracle;
(2) 开发配置:CPU i3 3.6Ghz以上, 内存2G以上, 硬盘40G以上, 10M/100M网卡, Windows 7/Windows 8.1中文操作系统。
(3) 数据库管理系统:Oracle 10g及以上。
3.2. 云服务架构
PHR系统采用第三方云服务, 直接将程序部署在第三方提供的服务器上, 在确保拥有云服务器的管理权限, 或者是云服务器的空间和接口程序后, 实现网站应用的步骤如下:
1、需要在web服务上配置好网站所需的相应环境;
2、需要添加网站所使用的权限;
3、开启网站使用的端口。
其中部署网站需要注意以下几点:
1、防火墙是否有做一些限制, 如网站的80端口是否有开启;
2、服务器是否有做一些会阻止外部访问网站的安全策略;
3、域名解析方式是否正确, 是否对网站绑定了相应的域名;
4、相关的网站环境是否配置正确, 网站文件的权限是否设置正确, 可以使用探针进行测试。
3.3. Web端具体实现
首页顶部有登录、注册和搜索框, 然后欢迎登陆个人健康档案管理系统, 紧接着个人健康自测入口, 推荐的医疗健康社区入口, 医用App循环推荐, 内容部分是分为吃食、孕幼、用药、医诊、病患、真相六大块, 点击全部可以进入到各块文章具体的图文列表。
普通用户和普通管理员有个人健康档案, 他们可修改编辑个人账户信息, 查看系统根据个人填写信息的推荐内容及个人医生对自己的建议, 同时拥有以下编辑权限:
1.基本信息, 包含姓名、性别、民族、年龄、联系方式、邮箱;生活调查, 包含遗传病史 (一般为家族) 记录、过敏记录、生活习惯描述 (是否抽烟、喝酒、熬夜等) 、特殊病种记录、疫苗注射记录、全身体检记录;体检报告相关指标;家庭常用备药。
2.就诊记录, 包括就诊时间、就诊医院 (或诊所) 、病因、诊断、用药。
3.用药记录, 包含自己用药或医生开的药方, 具体记录用户用药起始时间、期间所用药物、用药持续时间。
4. 健康日志, 记录个人平时生活中出现的不好的身体状况, 包含时间、身体描述、问题解决、后续观察。
在完善自己的个人信息后, 可以浏览这些基本信息, 同时可查看系统医生专家给出的建议和意见。以BMI、生活习惯、血压、乙肝五项的值数据基础, 系统建议针对用户信息进行判断处理, 提出想应的建议。
以医生角色登陆系统的用户, 除了可以通过查看以经授权的用户的详细健康信息, 可以添加写入自己的建议, 同时系统会根据已有数据进行分析, 生成疾病年龄分布、人数数量、性别对比的折线图和饼状图。以直观的效果给出统计学上的数据, 以便指导对相关疾病的诊断、用药和研究。
4 结论
如今当病人和医生需要完整、科学的医疗信息时, 散而乱的医疗记录让人苦不堪言, 导致医疗不尽如意[5]。早在2004年, 美国制定了“确保绝大多数美国人拥有共享的电子健康记录”的目标。到2011年, 美国政府为了电子健康档案的应用变得更好, 实施了“有意义使用”联邦激励项目, 促使医疗健康提供商必须满足一定的要求。随着我国对人口健康的要求, 需要记录、获取居民的健康信息, 进行科学有效的健康管理, 从而拥有更健康的体魄, 提高居民的整体身体质量。个人健康档案服务云平台系统是以个人问题为导向记录完整健康信息, 提供随地随时获取、记录的极大便捷, 为临时诊断、长期治疗和有针对性保健提供数据基础。个人健康档案建立将不断被认可, 将被广泛应用, 个人记录追踪自身医疗史, 已满足个人健康主动管理需求。
本文按软件工程的开发步骤, 参考国外资源和国内的特色, 初步设计并实现了个人健康档案服务云平台的前端系统, 努力做到大部分档案可以电子信息化, 并从服务角度展示了一个界面较美观、灵活性和交互性良好的个人健康档案服务云平台系统。
参考文献
[1]韦凤伶.个人健康管理系统的设计与实现[D].成都:西南交通大学医学专业, 2011.
[2]斐雪.物联网环境下智慧家居系统的交互行为研究[J].新视觉艺术.2011, 8 (2) :56-58.
[3]佚名.卫生部发布《健康档案基本架构与数据标准 (试行) 》[EB/OL].http://news.hc3i.cn/art/201001/1047.htm, 2010-01-16/2010-05-18.
[4]曾绳涛, 曹志龙.基于物联网的智能移动医疗动态监护系统[J].工业控制计算机, 2014, (6) :26-27.DOI:10.3969/j.issn.1001-182X.2014.06.011.
【Web前端优化】推荐阅读:
一些前端开发优化的经验总结08-19
Web前端10-30
Web前端框架05-16
Web前端开发07-01
Web前端技术08-08
web前端实习周记06-20
web前端应聘自我介绍06-12
web前端开发实习日志09-27
web前端需要学习什么10-03
web前端工程师简历10-05