服务器端技术概述

来源:互联网 发布:linux grub引导 stage 编辑:程序博客网 时间:2024/06/05 10:22
【转】 https://shimo.im/s/bd968df5-316e-7852-2cd5-a2a0ad1549c3
本文主要目的是,供新来的开发人员了解我们所使用的主要技术。
并能实际操作,搭建基本的开发环境,并开始开发。

使用语言和基本环境
主要为JavaScript和Node.js。

JavaScript
JavaScript,主要可参考:
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript 这是比较权威的文档,Mozilla是JavaScript的鼻祖
  • http://es6-features.org/ 我们尽量使用ES6,是比较新的JavaScript语法,不一定被Node.js支持,Node.js在逐步支持新的ES6
  • http://www.ecmascript.org/  JavaScript标准的文档,JavaScript各个公司都在实现(方言),大家共同讨论投票并遵守的标准,即ECMAScript

Node.js
Node.js是服务器端的JavaScript运行环境。

使用的JavaScript引擎是Google Chrome使用的V8,网址在:https://nodejs.org

开发环境的搭建

Node.js环境的安装

使用nvm安装Node.js,见:https://github.com/creationix/nvm,安装方式,见官方文档。
开发时使用的Node.js版本,使用最新的Latest Features版本,当前是v6.3.0版本。
在正式运行环境中也尽量使用此最新版本,和开发保持一致。
如果因为兼容问题和长期稳定运行,可考虑在正式运行环境使用LTS版本,当前是v4.4.7LTS。
使用nvm可以很容易的在不同版本见切换。而且安装不需要管理员权限(sudo)。

可参考:http://yoember.com/nodejs/the-best-way-to-install-node-js/

开发工具

开发工具,使用Atom,见:https://atom.io/,由GitHub出品的开源免费编辑器。
安装和使用,可参考我的日志:http://marshal.ohtly.com/2016/05/23/using-atom/
另外,还可安装Script插件,在Atom编辑器中运行Node.js程序。见:https://atom.io/packages/script

编写最简单的项目

可以阅读下这篇文章:https://blog.risingstack.com/node-hero-tutorial-getting-started-with-node-js/,编写hello world代码的同时,对整个开发过程有个基本了解。

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框架

我们使用的是基于Node.js的Restify框架,见:http://restify.com/

类似的框架很多,比较著名的有:
  • Express,老牌的Web MVC框架
  • koi,使用JavaScritp新特性较多的Web MVC框架

为什么使用Restify:
  • 功能简单,让开发者聚焦在数据的处理上
  • 不支持(至少是不容易)MVC,我们不需要这些,使用Restify可以杜绝基层开发者,尤其是习惯老式MVC开发习惯的开发者,开历史倒车
  • 简洁,熟练的开发者基本1天能看完它的主要代码

Restify模版项目

见这里:https://github.com/MarshalW/restify-boilerplate

我们的项目,都是以这个项目为模版,在上面做添加或者修改。

对ES6/ES7的态度

Node.js是否能使用JavaScript的新语法,取决于V8 JavaScript引擎是否支持。

目前V8 JavaScript引擎在快速的增加对ES6/ES7的支持。

我们通过紧密跟进Node.js版本升级来获得使用JavaScript新语法的能力。

不打算通过Babel的编译来支持当前Node.js不支持的ES6/ES7特性,主要是因为:
  • 需要编译,造成服务器端部署比较繁琐
  • 需要对Babel的学习和使用(虽然我们在客户端JavaScript中使用它)
0 0