node.js相信你们并不陌生,如今不少公司招前端也是要求前端人员必须会node了 先说一下应用场景,目前公司中用node主要是用node来作中间层,固然是大多数公司,由于通常公司项目都已经成型了,加上node人员很差招,因此真彻底用来作后台的不多(不过作起来是彻底没问题的)。javascript
不少人都在说node适合作中间层,那么中间层是什么呢? 听着好听,用大白话讲就是给先后端擦屁股的,最先是java的中间件概念,后来后台都不肯意作,而后大公司不少很大很老的项目,无法动,以前写的人也早走了,这时候用中间层接着搞是最方便的了。html
你们获取听过node相关的一些框架、express、koa,或者一些企业级应用到egg也好,配合前端服务端渲染的next、nuxt的等等吧,为啥不直接讲koa这种方便的东西呢,由于我一直以为一件事,工具强了,人就弱了,框架这种东西比狗还多,几年换一个主流、只有先把基础学会,框架其实百变不离其宗。前端
nodejs确定是个服务器,那么你们也都知道,任何浏览器和服务器之间的通讯都是用http协议来完成的。那么理论上来讲,写一个服务器须要对http服务有很是深的了解,不过有兴趣你们能够搜一下,看完了头发都掉光了。node做者确定也想到了这个事,因此nodejs 系统自带的包里也有http相关的模块来直接用 java
nodejs须要提早安装,官网上直接下载安装就能够,会装qq 装node也是彻底没问题的node
首先我们新建一个项目,里面建一个server.js, 注意不能有中文,名字是随便的,而后代码写成如今这样nginx
const http = require('http');
http.createServer(()=>{
console.log('有新连接')
})
复制代码
而后这个时候咱们在终端里运行这个文件 node server.js
。 注意,这个时候命令行里直接执行完了,就结束了。这里有个概念须要清楚 一台服务器,是执行一下就完了么?答案确定是否是,一台服务器须要永远在运行,可是我们如今写的服务器一会儿就结束了,由于我们还有个很是重要的东西没有作,就是 监听 web
监听 —— 通俗点来讲就是开一家超市,须要有个售货员在哪等着,有人来了就结帐,监听就是这个意思。往专业的角度来讲说就更简单了,一台服务器可能会跑不少服务器,比方说web相关的,邮件相关的,什么游戏相关的,这个时候就须要指定一个端口,至关于你订外卖得告诉别人门牌号,好的接下来咱们来改一下这个代码chrome
const http = require('http');
let server = http.createServer(() => {
console.log('有新连接');
});
// 监听端口
server.listen(5000);
复制代码
这个端口是随便给的,不过有一些通用的端口可能会被占了,好比80-web服务,若是你电脑上装了这些服务就会报错、改一下就行了,后面会说到端口怎么共存,也就是所谓的 端口转发 数据库
而后运行我们的文件 node server.js
就会看到什么都没有,由于他在一直监听,这时候打开浏览器 输入网址 http://localhost:5000/ 而后查看终端就会看到console.log了 express
虽然我们如今console出来了,可是你能够看到浏览器了没有任何东西 一直在转,很简单由于我们的服务器什么都没返回,至于怎么返回下文会说
** 首先来介绍一下 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/ 就能够看到内容了
既然能返回数据了,我们再来看看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 不过你们可能奇怪为何会访问一个/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就会出现 是否是很简单
固然了,我们这只是一个很简单的例子,至于你们可能听过或者见过什么koa-router也好或者等等的router 能够直接router.get post 也能够渲染静态文件,api服务的话能够走到controller里等等的功能吧,原理其实都是这,只不过那些东西帮你封装好了而已,不事后续我们这个系列里也会提到。
有什么感兴趣的,或者遇到什么问题能够直接加我好友,我们一块儿沟通
看到有小伙伴反应说不够深刻,这里说明一下,这个是nodeJS从零到精通系列,若是全放在一篇那就太长了,上文说过的转发之类的会在以后的nginx篇里。以后涉及到的东西有不少,包括node进程,日志处理,数据处理,配合页面埋点数据写入,分析, 封装框架、数据库等等,有兴趣的小伙伴能够关注下
本篇以后是fs篇,node文件操做是很重要的哦 文章连接—— juejin.cn/post/684490…
搭完简单的服务器以后kennel你们更好奇的 的是怎么处理请求,本身提交get、post数据本身处理
Nodejs-基础-http-处理请求 juejin.cn/post/684490…
关注不迷路哦~~~~~~~
微信:Dyy916829411
qq: 916829411