【转】 https://shimo.im/s/bd968df5-316e-7852-2cd5-a2a0ad1549c3
本文主要目的是,供新来的开发人员了解我们所使用的主要技术。
并能实际操作,搭建基本的开发环境,并开始开发。
使用语言和基本环境
主要为JavaScript和Node.js。
JavaScript
JavaScript,主要可参考:
Node.js
Node.js是服务器端的JavaScript运行环境。
Node.js环境的安装
开发时使用的Node.js版本,使用最新的Latest Features版本,当前是v6.3.0版本。
在正式运行环境中也尽量使用此最新版本,和开发保持一致。
如果因为兼容问题和长期稳定运行,可考虑在正式运行环境使用LTS版本,当前是v4.4.7LTS。
使用nvm可以很容易的在不同版本见切换。而且安装不需要管理员权限(sudo)。
开发工具
编写最简单的项目
Node.js/JavaScript的优点和问题
开发是一个取舍(trade-off)过程,没有完美的东西。要了解优点和问题,扬长避短,尽量发挥优点。
优点:
- 编程模型,单线程,不会出现并发引起的线程竞争和死锁等情况
- 基于异步模型,适合商业及互联网系统的开发(一般是i/o密集型),可比同步模型的系统支持更大的并发,同时保证响应能力
缺点:
- JavaScript一直比较混乱,只在最近几年开始完善语言标准
- JavaScript以前未考虑当下服务器端的需求,有一些特性缺失,目前还在完善中
- 不适合开发计算密集型的应用,因为,单线程和异步模型,以及JavaScript运行时的性能
- 异步,造成编程在某些场景可能比较复杂,甚至不易于维护
我们使用Node.js作为开发环境,主要考虑:
- 不会出现比如死锁这样的问题(不给初级开发者犯错的机会)
- 比较新的技术,Node.js没有历史包袱,能更多的考虑提高开发效率
Web开发环境介绍
概述
传统的Web开发环境,比如Java/Servlet/Struts,需要服务器端开发者生成Web用户的界面。
我们的Web开发,将之分为2个部分:
- Web前端开发,使用JavaScript,编写Web界面,并通过fetch/ajax从服务器端获取数据(这不属于本文读者的范畴)
- Web后端开发,为前端提供基于Restful的数据服务,即,不再提供界面,而是提供数据
Web后端开发的服务,不只服务于Web前端,同样的接口还用来支持Android/iOS客户端的用户。
使用Restify框架
类似的框架很多,比较著名的有:
- koi,使用JavaScritp新特性较多的Web MVC框架
为什么使用Restify:
- 不支持(至少是不容易)MVC,我们不需要这些,使用Restify可以杜绝基层开发者,尤其是习惯老式MVC开发习惯的开发者,开历史倒车
Restify模版项目
我们的项目,都是以这个项目为模版,在上面做添加或者修改。
对ES6/ES7的态度
Node.js是否能使用JavaScript的新语法,取决于V8 JavaScript引擎是否支持。
目前
V8 JavaScript引擎
在快速的增加对ES6/ES7的支持。
我们通过紧密跟进Node.js版本升级来获得使用JavaScript新语法的能力。
不打算通过Babel的编译来支持当前Node.js不支持的ES6/ES7特性,主要是因为:
- 需要对Babel的学习和使用(虽然我们在客户端JavaScript中使用它)