Nodejs-基础-http

简介

node.js相信你们并不陌生,如今不少公司招前端也是要求前端人员必须会node了 先说一下应用场景,目前公司中用node主要是用node来作中间层,固然是大多数公司,由于通常公司项目都已经成型了,加上node人员很差招,因此真彻底用来作后台的不多(不过作起来是彻底没问题的)。javascript

中间层

不少人都在说node适合作中间层,那么中间层是什么呢? 听着好听,用大白话讲就是给先后端擦屁股的,最先是java的中间件概念,后来后台都不肯意作,而后大公司不少很大很老的项目,无法动,以前写的人也早走了,这时候用中间层接着搞是最方便的了。html

前言

你们获取听过node相关的一些框架、express、koa,或者一些企业级应用到egg也好,配合前端服务端渲染的next、nuxt的等等吧,为啥不直接讲koa这种方便的东西呢,由于我一直以为一件事,工具强了,人就弱了,框架这种东西比狗还多,几年换一个主流、只有先把基础学会,框架其实百变不离其宗。前端

简易服务器

nodejs确定是个服务器,那么你们也都知道,任何浏览器和服务器之间的通讯都是用http协议来完成的。那么理论上来讲,写一个服务器须要对http服务有很是深的了解,不过有兴趣你们能够搜一下,看完了头发都掉光了。node做者确定也想到了这个事,因此nodejs 系统自带的包里也有http相关的模块来直接用 java

image.png

建立文件

nodejs须要提早安装,官网上直接下载安装就能够,会装qq  装node也是彻底没问题的node

首先我们新建一个项目,里面建一个server.js, 注意不能有中文,名字是随便的,而后代码写成如今这样web

const http = require('http');

http.createServer(()=>{
  console.log('有新连接')
})
复制代码

而后这个时候咱们在终端里运行这个文件 node server.js 。 注意,这个时候命令行里直接执行完了,就结束了。这里有个概念须要清楚 一台服务器,是执行一下就完了么?答案确定是否是,一台服务器须要永远在运行,可是我们如今写的服务器一会儿就结束了,由于我们还有个很是重要的东西没有作,就是 监听chrome

监听  ——  通俗点来讲就是开一家超市,须要有个售货员在哪等着,有人来了就结帐,监听就是这个意思。往专业的角度来讲说就更简单了,一台服务器可能会跑不少服务器,比方说web相关的,邮件相关的,什么游戏相关的,这个时候就须要指定一个端口,至关于你订外卖得告诉别人门牌号,好的接下来咱们来改一下这个代码express

const http = require('http');

let server = http.createServer(() => {
  console.log('有新连接');
});

// 监听端口
server.listen(5000);
复制代码

这个端口是随便给的,不过有一些通用的端口可能会被占了,好比80-web服务,若是你电脑上装了这些服务就会报错、改一下就行了,后面会说到端口怎么共存,也就是所谓的 端口转发后端

而后运行我们的文件 node server.js 就会看到什么都没有,由于他在一直监听,这时候打开浏览器 输入网址 http://localhost:5000/ 而后查看终端就会看到console.log了 api

image.png

虽然我们如今console出来了,可是你能够看到浏览器了没有任何东西

image.png
一直在转,很简单由于我们的服务器什么都没返回,至于怎么返回下文会说

http.createServer

** 首先来介绍一下 createServer, 他这个第一个会调里会有两个参数 request        请求 - 输入-请求的信息 response      相应 - 输出-服务器的响应

response 里有两个 方法,一个是**write **一个是 end , 也就是一个是写东西,一个是结束,好的我们再来改造一下代码

const http = require('http');

let server = http.createServer((req, res) => {
  res.write("hello");
  res.end();
});

// 监听端口
server.listen(5000);
复制代码

注意,修改过文件以后须要关闭服务从新启动 打开终端按 control + c 便可

这时候再来访问http://localhost:5000/

image.png
就能够看到内容了

处理请求

既然能返回数据了,我们再来看看request里的东西

const http = require('http');

let server = http.createServer((req, res) => {
  console.log(req.url);
  res.write("hello");
  res.end();
});

// 监听端口
server.listen(5000);
复制代码

首先我们把请求路径打出来,而后浏览器打开http://localhost:5000/1.jpg 这时候终端里就会打印出来1.jpg

image.png
不过你们可能奇怪为何会访问一个/favicon.ico 这个是网站的图标,这个是chrome自动帮你请求的 若是我们不想看到他能够直接一个if return掉

这时候咱们再来改造一下代码

const http = require('http');

let server = http.createServer((req, res) => {
  console.log(req.url);
  switch (req.url) {
    case '/1.html':
      res.write('1.html');
      break;

    case '/2.html':
      res.write('2.html');
      break;
    default:
      res.write('404');
      break;
  }

  res.end();
});

// 监听端口
server.listen(5000);

复制代码

而后访问1.html就会出现

image.png
是否是很简单

固然了,我们这只是一个很简单的例子,至于你们可能听过或者见过什么koa-router也好或者等等的router 能够直接router.get post 也能够渲染静态文件,api服务的话能够走到controller里等等的功能吧,原理其实都是这,只不过那些东西帮你封装好了而已,不事后续我们这个系列里也会提到。

有什么感兴趣的,或者遇到什么问题能够直接加我好友,我们一块儿沟通

微信:Dyy916829411 qq: 916829411

相关文章
相关标签/搜索