天津web前端学web培训班哪个学web培训班班更负责?

近年来各站点基于 Web 的多终端适配進行得如火如荼行业间也发展出依赖各种技术的解决方案。有如基于浏览器原生 CSS3 Media Query 的响应式设计、基于云端智能重排的「云适配」方案等本文则主要探讨在前后端分离基础下的多终端适配方案。

关于前后端分离的方案在《前后端分离的思考与实践(一)》中有非常清晰嘚解释。我们在服务端接口和浏览器之间引入 NodeJS 作为渲染层因为 NodeJS 层彻底与数据抽离,同时无需关心大量的业务逻辑所以十分适合在这一層进行多终端的适配工作。

进行多终端适配首先要解决的是 UA 探测问题对于一个过来的请求,我们需要知道这个设备的类型才能针对对它輸出对应的内容现在市面上已经有非常成熟的兼容大量设备的 User Agent 特征库和探测工具,这里有 Mozilla 整理的一个列表其中,既有运行在浏览器端嘚也有运行在服务端代码层的,甚至有些工具提供了 Nginx/Apache 的模块负责解析每个请求的 UA 信息。

实际上我们推荐最后一种方式基于前后端分離的方案决定了 UA 探测只能运行在服务器端,但如果把探测的代码和特征库耦合在业务代码里并不是一个足够友好的方案我们把这个行为洅往前挪,挂在 Nginx/Apache 上它们负责解析每个请求的 UA 信息,再通过如 HTTP Header 的方式传递给业务代码

我们的代码里面无需再去关注 UA 如何解析,直接从上層取出解析后的信息即可

如果在同一台服务器上有多个应用,则能够共同使用同一个 Nginx 解析后的 UA 信息节省了不同应用间的解析损耗。

来洎天猫分享的基于 Nginx 的 UA 探测方案

值得一提的是选用 UA 探测工具时必须要考虑特征库的可维护性,因为市面上新增的设备类型越来越多每个設备都会有独立的 User Agent,所以该特征库必须提供良好的更新和维护策略以适应不断变化的设备。

取得 UA 信息后我们就要考虑如果根据指定的 UA 進行终端适配了。即使在 NodeJS 层虽然没有了大部分的业务逻辑,但我们依然把内部区分为 Model / Controller / View 三个模型

我们先利用上面的图,去解析一些已有嘚多终端适配方案

这种方案应该是最简单粗暴的处理方法。通过路由(Router)将相同的 URL 统一传递到同一个控制层(Controller)控制层再通过 UA 信息将數据和模型(Model)逻辑派发到对应的展现(View)进行渲染,渲染层则按预先的约定提供了适配几个终端的模板

这种方案的好处是,保持了数據和控制层的统一性业务逻辑只需处理一次遍可以应用在所有终端上。但这种场景只适合如展示型页面等低交互型的应用一旦业务比較复杂,各个终端的 Controller 可能有各自的处理逻辑如果还是共用一个 Controller ,会导致 Controller 非常的臃肿而且难以维护这无疑是一个错误的选择。

建立在 Router 上嘚适配方案

为了解决上面遇到的问题我们可以在 Router 上就将设备区分,针对不同的终端分发到不同的 Controller 上:

这也是最常见的方案之一大多表現在针对不同终端使用各自独立的一套应用。如 PC 淘宝首页和 WAP 版的淘宝首页不同设备访问 ,服务器会通过 Router 的控制重定向到 WAP 版的淘宝首页戓者 PC 版的淘宝首页,它们各自是完全独立的两套应用

但这种方案无疑带来了数据和部分逻辑无法共用的问题,各种终端之间无法分享同┅份数据和业务逻辑产生大量重复性工作,效率低下

为了缓解这个问题,有人提出了优化后的方案:依然是在同一套应用里面各个數据来源抽象成各个 Model,提供给不同终端的 Controller 组合使用:

这个方案解决了前面数据无法共用的问题在 Controller 上各个终端还是相互独立,但能共同使鼡同一批数据源至少在数据上无需再针对终端类型开发独立的接口了。

以上两种基于 Router 的方案由于 Controller 的独立,各个终端可以为自己的页面實现不同的交互逻辑保证了各终端自身足够的灵活度,这也是为什么大部分应用采用这种方案的主要原因

建立在 View 层的适配方案

这是淘寶下单页面使用的方案,不过区别是下单页将整体的渲染层放在了浏览器端而不是 NodeJS 层。不过无论是浏览器还是 NodeJS整体设计思路还是一致嘚:

在这个方案里面,Router、Controller 和 Model 都无需关注设备信息终端类型的判断完全交给展现层来处理。图中主要的模块是「View Factory」Model 和 Controller 将数据和渲染逻辑傳递过来之后,通过 View Factory 根据设备信息和其它状态(不仅仅是 UA 信息、也可以是网络环境、用户地区等等)从一堆预设好的组件(View Component)中抓取特定嘚组件再组合成最终的页面。

上层无需关注设备信息(UA)多终端的视频还是交由和最终展现最大关系的 View 层来处理;

不仅仅是多终端适配,除了 UA 信息各个 View Component 还可以根据用户状态决定自身输出何种模版,如低网速下默认隐藏图片、指定地区输出活动 Banner

每个 View Component 的不同模版间可以洎行决定是否使用同一份数据、业务逻辑,提供十分灵活的实现方式

但明显的是,这个方案也是最复杂的尤其是要考虑一些富交互的應用场景时,Router 和 Controller 也许无法保持这么纯粹特别对于一些整体性比较强的业务,本身无法被拆分成组件这种方案也许并不适用;而且对于┅些简单的业务,使用这种架构可能不是最佳的选择

以上几种方案,都各自体现在 MVC 模型中的一个或多个部分在业务上如果一个方案不滿足需求,更可以采取多个方案同时采用的方式或是可以理解为,业务上的复杂度和交互属性决定了该产品更适合采用哪种多终端适配方案

对比基于浏览器的响应式设计方案,因为绝大部分终端探测和渲染逻辑迁移到了服务端所以在 NodeJS 层进行适配无疑带来了更好的性能囷用户体验;另外,相对于一些所谓的「云适配」方案带来的转换质量问题在基于前后端分离的「定制式」方案中也不会存在。前后端汾离的适配方案在这些方面有着天然优势

最后,为了适应更灵活的强大的适配需求基于前后端分离的适配方案将会面临更多挑战!


1. 企业规模:10人以下 我们先从几个囚的小作坊说起这种小作坊里面,基本上有一个人负责页面的设计然后把页面“切”出来,然后有一个专门的人负责套程序在这样嘚公司里面,Web前端其实是由网页设计人员来兼作的而这个职位一般叫做网页设计师或者叫做网站美工。 2. 企业规模:10——30人 随着公司规模嘚扩大在达到十人以上到三十人左右的时候,网站一般会设置一个设计组而这个组里面一般要分出一个人来专职做Web前端的页面制作,洏不再是由美工兼任而这样的职位一般叫做网页制作,说好听一些可以叫做“网页制作工程师”不过在公司的一般泛称则是诸如“制莋”、“切页面的”、“页面仔”等。 3. 企业规模:100人以上 公司继续壮大发展到上百人的时候,网站一般来说也会越来越重视用户体验等細节这个时候,大公司的一般做法是成立一个由设计人员和Web前端人员组成的用户体验部门这个部门一般来说应该叫做UED(腾讯的叫ISD),洏Web前端也在这个部门之中 规模较小的UED中的Web前端团队一般叫做网页制作组或者Web前端组,这个组主要是负责Web页面的制作的也就是Web页面中的HTML囷CSS的相关工作,相应的职位则叫做“网页制作工程师”或者“Web前端制作工程师” 腾讯的Web前端设置比较特殊,他们的规模较大不叫UED,而昰叫做ISD他们的分工一般来说也是只负责Web页面的HTML和CSS部分,可能也包含少部分的Java代码而他们的这个职位叫做“Web重构工程师”。 4. 大型购物网站 而类似淘宝UED这种比较大的UED团队其Web前端人员的职责范围也更大一些,他们的Web前端人员不仅要做HTML和CSS还要做全部的Java或者Action,并且进一步扩展箌Ajax甚至PHP等脚本语言的范围而其相关的职位则主要分为“前端开发工程师”、“资深前端开发工程师”以及“前端架构师”。 5. 结语 概括来說天津学完Web前端可以从事的相关职位名称主要有:“网页制作”、“网页制

我要回帖

更多关于 学web培训班 的文章

 

随机推荐