web前端课程技术总结Node.js 使用方法及相关方法分析

Node.js 使用方法及相关方法分析

首先我们要了解什么是node.js?

官方解释是:node.js是一个基于Chrome v8引擎的javascript 运行环境。Node.js使用了一个事件驱动、非阻塞式 I/O的模型,使其轻量又高效。他是由c++编写的 所以速度很快

简单来说 就是一个js 的运行环境,所以他开发用的语言是js语言 ,通过node去编译你的js文件

node.js 的安装

1)npm i -g 全局(电脑只需安装一次)

2)npm i --save -dev /-D/(局部项目依赖)

3)制定版本 npm i [email protected] (@后面跟版本号 如@3表示安装的是@后方跟的数字的最大的版本)

Node的特点:是比较块 因为是由c++编写的 但是的话有一个缺点就是内耗比较多。据网上一个百万级并发测试, 未优化的情况下1M的链接消耗了16G内存 !这点就很惊人了,但是他的一些有点也是有目共睹的。 他不单单可以辅助前端开发 同时也可以代替后台开发。

但是虽然优点这么多 但是由于node 是一种小型的后端语言 ,比较新 所以相对的会的人也比较少。

服务器的搭建

建立一个服务器的话 首先你要导入node.js提供的内置模块,然后定义一个主机名,之后再给个端口号。建立情况如下


const http=require('http') //导入node.js提供的内置模块(原生模块)

const hostname = '127.0.0.1';//定义一个主机名

const port = 3000; //给个端口

http.createServer((req,res) =>{

//头部信息

res.setHeader(''content-type,'text/html;charset=utf-8')

//状态码

res.statusCode = 200;

//过滤队ico的请求

if(req.url !='/favicon.ico'){

res.write('hello nodejs'); //node里面写入的类型都是字符串类型 直接解析字符串类型的数据

//结束响应标示

res.end();//只是作为一个响应关闭的标示 一般不写数据 写的话 可以通过res.write来写

}

//监听 listen 有三个参数 端口号 主机名 还有一个回调函数 回调函数里面 你可以写上你想要在页面里面展示的东西

}).listen(port,hostname,()=>{

console.log('服务已经启动:http://${hostname}:${port}')

})


上面的方法是比较详细的情况,当然我们也可以通过一些更简洁的方法也建立服务器,主机名这里是默认的 可以省略。 端口号 在下面监听的时候可以直接写出来 所以开始的时候也是不需要写出来的

然后就是头部部分 头部部分我们可以直接吧端口号 以及他的格式全部写出来 不过这个时候 要用res.writeHead(200,{'content-type':'text/html;charset=utf-8'})

当然如果仅仅是这样写 等你运行的时候 还是会报错的 那就是跨域问题 这时候你需要把跨域出现的这种情况

里面的Access-Control-Allow-Origin 给添加到我们的头部信息里面如下

这样就可以解决我们的跨域问题了!

那么现在引申一个问题。什么情况下 才会触发跨域问题呢?

协议、域名、端口号 有任何一个问题 都会出现跨域问题!

数据的发送

举个例子,我们建立一个html 建立一个输入框 一个发送按钮 然后给这个添加一个点击事件 如下:

我们先绑定一个点击事件,然后用ajax发送输入框里面的信息给后端服务器,在这里post为发送 路径不变 要带上协议地址, 然后把发送的内容以对象的形式发送过去。然后是后端的书写 如下:

接收数据时,要用请求对象接收过来,也就是req,请求对象有个on方法,on方法里面要绑定一个data事件。来接收我们的事件。 然后第二个参数是一个回调函数,这个参数就使我们接收过来的数据 然后打印出来。 但是的话 打印出来之后出现的并不是我们想要的信息,如下:

这是Buffer数据,我们可以用 tostring()给他强制转换成字符串 如下:

好了。 我们得到了我们想要得到的信息,现在我们所有的数据都接收过来 这些做完了之后,你会发现 在你做的过程中,每次更改代码,你都需要重新重启一下服务器,才可以正常进行你的工作。 所以下面交大家一个小小的方法 也就是自动监听node supervisor 这样就可以不用执行node 自动监听。

上面是node.js 的一些简单的学习。学海无涯,且学且珍惜!

猜你喜欢

转载自blog.51cto.com/14071672/2327685
今日推荐