总的指导原则是前后端分离。后端同事提供在线API数据查询接口或websocket接口,前端同事负责处理获取到的数据,编写和展示页面,实现用户交互;前端和后端都要考虑web开发的安全问题,比如在提交表单到数据库之前对用户输入进行转义,登录避免密码明文传输等,前后端都要注意安全SQL注入攻击、跨站脚本攻击、跨站请求伪造、开放重定向等问题。最近在看《大型JavaScript应用最佳指南》,作者说大型web应用其实相当于一系列组件之间的通信,包括组件之间的组合和通信。在设计组件时,不仅要从架构的可扩展性角度考虑,还要从功能完整性的角度考虑。有两种构建组件的方法。首先,你可以扩展现有的库和框架,通过不断扩展逐步实现特定的功能。其次,通过将配置参数传递给组件来告诉组件如何工作。如果我们要设计灵活的组件,就需要将业务行为传递到组件中,而不是直接写在组件中,这样不同的组件就可以使用相同的无状态业务逻辑功能。开发过vuejs、reactjs、angularjs等技术框架;以及一些脚手架,比如vue-cli;还有一些全家桶,比如vue2.0全家桶(vue+vue-router+vuex+axios+es6+sass)。静态资源的管理工具,包括合并、压缩、优化、自动替换css/js/图片等文件。grunt/gulp是一个任务管理器,可以引入watch模块实现页面的热更新;webpack通过loader处理静态文件。webpack-dev-server可以实现热更新。API数据管理,后端提供完整的API文档,使用postman提供测试数据接口,最关键的是判断成功或失败返回的数据结构。在后端还没有开发或者没有测试数据的时候,前端可以模拟API,推荐一个工具:mockjax;一些家庭水桶也配备了这样的工具。前端要构建相应的通知系统,如服务器错误、连接超时、参数无效、退出等,前端要能够优雅的报错,尽量减少单点错误对整体的影响系统,并引导用户尝试恢复正常,如刷新、重新登录等,前端也需要记录日志,以便工程师快速调试。关于跨域的问题,这是暂时的todo,等我有足够的实战经验再补充。目前我使用的是chrome的CORS插件,因为上线后没有跨域问题;如果前端需要调用第三方接口,就会出现跨域问题,我现在的做法是找后台调用我要的第三方接口,然后在后台给我提供一个新的接口,这样就不会出现跨域的问题,但是如果前后端都分开了,第三方接口会有跨域问题。是不是也应该由前端来解决?如果前后端分离,可以自己启动一个node中间层服务器,然后本地服务器可以支持代理其他域API的功能,也就是proxy,突破了前端的限制-发出ajax请求时结束同源策略。前端团队多人同时写代码,所有文档规范都是必须的,否则可能会出现命名冲突、css样式覆盖、函数重写、z-index对比等问题。js方面,建议采用闭包形式编写,或者根据技术选型采用组件方式开发;因为我们项目中有封装工具,开发者可以使用ES5或者ES6,ES6更像是一种编程语言,适合我们养成面向对象编程的习惯。在css方面,也是因为我们项目中有打包工具,纯CSS/LESS/SASS来写是可以接受的。这取决于开发人员的决定。还需要CSS代码库管理和CSS样式命名管理,防止无意义的命名。推荐阅读bootstrap.css。前端还需要构建自动化测试,包括独立的单元测试和端到端(E2E)测试自动化,当然还有手动测试。使用的工具是Jasmine和Selemium。追求开发完成后在测试中发现0个bug的目标是我们一直追求的目标。毕竟,没有人愿意每天被测试邮件轰炸,尤其是像我这样不喜欢和测试说话的人。测试找到了我,系统没有提示我有bug。这是最酷的事情。
