我们不用类库或框架就可以实现这种MVC架构模式。关键是要将MVC的每部分按照职责进行划分,将代码清晰地分割为若干部分,并保持良好的解耦。这样可以对每个部分进行独立开发、测试和维护。
如:Backbone, EmberJS, KnockoutJS, AngularJS等框架。
但这样的方式仍旧存在问题:
各层职责重叠
Client-side Model 是 Server-side Model 的加工
Client-side View 跟 Server-side是 不同层次的东西
Client-side的Controller 跟 Sever-side的Controller 各搞各的
Client-side的Route 但是 Server-side 可能没有
性能问题
渲染,取值都在客户端进行,有性能的问题
需要等待资源到齐才能进行,会有短暂白屏与闪动
在移动设备低速网路的体验奇差无比
重用问题
模版无法重用,造成维护上的麻烦与不一致
逻辑无法重用,前端的校验后端仍须在做一次
路由无法重用,前端的路由在后端未必存在
跨终端问题
业务太靠前,导致不同端重复实现
逻辑太靠前,造成维护上的不易
渲染都在客户端,模版无法重用,SEO实现 麻烦
NodeJS作为中间层的全栈开发方案
有了NodeJS之后,前端可以更加专注于视图层,而让更多的数据逻辑放在Node层处理。
我们使用Node层:
转发数据,串接服务
路由设计,控制逻辑
渲染页面,体验优化
中间层带来的性能问题,在异步ajax转成同步渲染过程中得到平衡
更多的可能
其实更为重要的是,对于前端来说,NodeJS的学习成本是相当低的:我们无需学习一门新的语言,就能做到以前开发帮我们做的事情,一切都显得那么自然。
技术在不断变化中,唯有跟上技术革新的浪潮,才能不被时代所淘汰,不管是人还是企业。