Created by 赫门
......是谁把手套放进锅子里面煮
到了互联网时代
Backbone, EmberJS, KnockoutJS, AngularJS, React, etc.
后端 | 前端 |
---|---|
|
|
渲染都在客户端,模版无法重用,SEO实现 麻烦
我们有机会从工作职责上
重新定义前后端的分层
后端 | 前端 | |
---|---|---|
服务器 | 浏览器 | |
JAVA | NodeJS | JS + HTML + CSS |
|
|
|
静态资料展示,方便运营管理
更好的承载密集且庞大的流量
页面缓存与定时刷新,返回缓存资料
NodeJS产出静态页面到CDN,定时刷新
单日四亿PV,页面数据来自各个不同接口
为了不影响体验,先产生页面框架后
在发起多个异步请求取数据更新页面
这些多出来的请求带来的影响不小,尤其在无线端
在NodeJS端使用 Bigpiper 技术
合并请求,降低负担
分批输出,不影响体验
拆分大接口为独立小接口,并发请求
串行 => 并行,大幅缩短请求时间
一台NodeJS对多台JAVA服务器
合理的分配服务器带来最大的产出
单元测试,页面测试,回归测试,持续集成
越来越多人重视浏览器端JS的模块化
但也是有项目是一个jQuery走到底
但到了服务器端的NodeJS
模块化是一个必须遵守的标准
但是我们写的JS模块
Model | Helper | Utility |
View | CSS | DOM Event |
Controller | Route | etc... |
Other Libraries, ... |
除了 CommonJS标准 转换外,
是否能做其他预处理?
把细粒度的模块封装成应付业务需求的组件
挑选不同的组件,完成实际的应用
针对不同环境,单一组件 可具备 不同型态
同一组件在不同环境下可以有不同的行为
但是共用同样的逻辑
在不同的设备:pc, mobile, pad, tv
不同的环境:browser, native app, hybrid app上
有著不一样的呈现结构,不一样的交互方式。
但有著一样的校验逻辑,共用同样的数据接口。
封装适合的组件。不同的场景组合不同的结果
透过多型机制正确的输出
而且可以服务器、浏览器通用