大型Web应用,相对于传统网站。用户逻辑需要更多的在客户端(Browser)处理,同时用户对交互性能更加注重。(这里也讨论WebAPP)
1、首先是架构问题
架构上可以根据需要选择后端和数据库,java,nodeJS,python都可以,也可以用全栈解决的meteor等,这里研究不深,就不展开讨论。而前端的架构,根据不一样的应用,可能也有不一样的选择,但对一般的工作业务型应用,个人感觉会是MVVM模式的,即在前端有一个ViewModel层负责处理前端数据。
2、其次是使用的框架
对于大型应用而言,jQuery等直接操作DOM的做法会使项目维护性不高,特别到了后期或者项目转手了,就容易看着页面,然而并不知道怎么被操作的情况发生。这时候,舍弃易用易学的jQuery,backbone而选用前端分层的angularJS会比较适合。angular要求的分层,以及推崇的指令模式,而不是直接操作DOM,可以让我们从DOM中直观的了解元素在哪里被操作。就易于维护项目。当然,对于一些第三方库,则需要有取舍的选用了,例如一些富文本编辑器、UI库等
3、还有就是语言、框架的趋势
语言的趋势,像typeScript和ECMA2015的语言都是趋向开发大型应用的,因此块级作用域、类、Generate等特性都出现了,而不仅仅是以前的作用域和闭包原型。甚至因为前端处理数据的要求变高,所以也出现了一些标准的新数据结构:Map,Set,WeakMap,WeakSet
4、优化问题
特别是WebAPP,首屏问题,以及缓存问题
有了缓存后,更像是本地软件应用了。
5、安全问题
然而前端越多东西,就越容易被解析以及攻击。如CSRF,XSS。这时候使用SSL的token机制,后端的时间戳以及前端的转义,限制跨域就需要考虑到了。
6、测试及自动化问题
君不见我现在还是使用开发工具+Angular的scope。自动化工具使用的是codeKit。
但进一步可以使用yeoman、grunt、gulp等工具
以下为个人见解
尽管WebAPP也是一个可以研究的方向,但是在追求用户交互的现在,单纯的为了开发成本降低而舍弃原生APP的爽快交互绝对是不对的。君不见SPA的最大优势就是交互好。因此个人感觉最好的HybridAPP方式应该是原生为主,在交互上使用原生。而在页面渲染,或者是一些控件制作交给网页。发挥网页开发控件的成本低、跨平台特点。
而WebAPP个人感觉可以运用在一些诸如微信浏览器上,作为单纯的浏览性或者对交互要求不是很高的应用上。
虽然webapp(包括混合和全webde)和web应用都可以属于大型web应用开发。但个人觉得现代SPA和大型应用开发最好的领域依然是在web领域。
一是因为网速普遍较快,可以对加载没有那么高的要求。(网速和性能)
二是浏览器毕竟是主场,调用浏览器的API(BOM操作)和调用android、IOS的API的调试工作简直不是同一个等级的。(API)
三是浏览器使用鼠标交互,而APP我们使用的是’模仿’的触摸屏操作,因此先天上webapp开发就是被阉割了一部分操作特性。(交互)