Node.js 简单搭建web服务 前后端技术历史简介

315 阅读5分钟

本文已参与[新人创作礼]活动, 一起开启掘金创作之路。 image.png

前言

回顾过往历史,前端经常被叫做页面切图仔,api接口调用仔。

1.0时代 “卑微的辅助——切图仔”:

image.png

在很久以前,前后端还未分离的时期,例如常见的JavaWeb,ASP.NET,PHP.....这个时期,我们前端(切图仔)只是负责把美工的图片,切一切 用HTML、CSS、JS这些技术将图片换原成静态网页,然后丢给Java程序员去搞。

如果学过JavaWeb,就会知道像:JSP、Servlet、什么MVC、视图层、控制层、业务层......这个时候的Java程序员真的是又当爹又当妈,会前端又要会后端。这个时候,咱前端还只是个卑微的辅助切图仔,属于可有可无的存在,毕竟你会的,人家Java程序员也会。

2.0时代 “平分江山——硬气的api调用仔”

image.png

随着时代的发展,业务的日益复杂,要知道以前那种JavaWeb、ASP.NET.....但凡你点击一个按钮,都会引起整个页面的刷新,因为你所看到的页面,一整个都是服务器那边处理好给你的。如此一来,就会带来计算机性能以及网络负载的浪费。

后端程序员把数据库+应用服务+消息队列+缓存+用户上传的文件+日志+等等都扔在一台服务器上,你也不用玩什么服务治理,也不用做什么性能监控,什么报警机制等等,就乱成一锅粥好了。将鸡蛋放在同一篮子里,隐患极大。

这个时候,AJAX技术出现了,使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作,于是后端程序员以前啥都干的地位直接被削成了只有接口开发。

同时谷歌V8引擎得到了史诗级强化,Angular、Vue、React,一个个框架如雨后春笋一半冒了出来。

前端开发彻底硬气了起来,发现bug,可以快速定位是谁的问题,不会出现互相踢皮球的现象。页面逻辑,跳转错误,浏览器兼容性问题,脚本错误,页面样式等问题,全部由前端工程师来负责。接口数据出错,数据没有提交成功,应答超时等问题,全部由后端工程师来解决。双方互不干扰,前端与后端是相亲相爱的一家人。

3.0时代 “踢掉初级Java饭碗——全干攻城狮”

没错,Node.js的出现,让前端程序员一套JavaScript打通了前后端,并且得益于金色传说级别的史诗V8引擎,性能杠杠的。

不少大公司都采用Node做后台:2013年,PayPal决定从Java迁移到Node.js。这使得页面响应时间缩短了200ms,每秒可以处理的请求数量增加了一倍。

而小公司使用node其实更有优势,虽然PHP可以快速低成本的实现业务后端,但是一但业务走上正轨,还得用Java或者C++重建一套。

Node的优势就在于:招聘几个有经验的JS工程师,用Vue+node 或者 React+node。即可快速实现前后端业务,js程序员搞定一切,性能还不差,多好。

image.png

使用Node.js搭建Web服务器

什么是Web服务器

[从百度百科可以了解到](WEB服务器_百度百科 (baidu.com))

image.png

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL,与客户端的网络浏览器配合。

大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。

目前最主流的三个Web服务器是Apache、Nginx、IIS。

Node搭建web服务器

像上述的三个web服务器是需要下载软件进行安装的,而我们的node就不用安装什么,一套代码直接打通。

接下来就让我们体验一下吧,首先是日常基操导包

// Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端
var http = require('http')

如何开始书写代码

// Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端
var http = require('http')

// 创建服务器
http.createServer( function (req, res) {  
    // 解析请求,包括文件名
    var ReqPath = req.url;
    console.log(ReqPath);
    // 编写响应头(不写浏览器不识别)
    res.writeHead(200, {'Content-Type': 'text/html'});
    // 发送响应数据
    res.end("<h1>欢迎使用node.js搭建服务</h1>"); 
 }).listen(8888);
  
 // 控制台会输出以下信息
 console.log('您的http服务启动在  http://127.0.0.1:8888/');

在命令行node我们的代码文件打开

node ./DemoHttp.js

然后在命令行使用快捷键: Ctrl+鼠标左键 快速在浏览器打开

image.png

服务成功的跑了起来,但是乱码了

image.png

很简单的小问题,我们只要在响应头设置好编码格式就行 那就顺便改一下代码,用箭头函数让代码更加美观

// Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端
var http = require('http')

// 创建服务器
http.createServer( (req, res) =>{  
    // 解析请求,包括文件名
    var ReqPath = req.url;
    console.log(ReqPath);
    // 编写响应头(不写浏览器不识别)
    res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
    // 发送响应数据
    res.end("<h1>欢迎使用node.js搭建服务</h1>"); 
 }).listen(8888);
  
 // 控制台会输出以下信息
 console.log('您的http服务启动在  http://127.0.0.1:8888/');

再控制器启动一下

image.png

嗯~···~·~非常成功,非常的优雅 image.png