栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

初学Node

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初学Node

今天我们进行学习Node,Node也算得上是后端了,使我们可以在服务器上得到反馈。也让我们这些前端的人接触到后端,从而做到前端后端全面开发。先看一下我们今天的学习方向

 

一.Node的诞生
浏览器大战和Node有何关系?

话说有个叫Ryan Dahl的歪果仁,他的工作是用C/C++写高性能Web服务。对于高性能,异步IO、事件驱动是基本原则,但是用C/C++写就太痛苦了。于是这位仁兄开始设想用高级语言开发Web服务。他评估了很多种高级语言,发现很多语言虽然同时提供了同步IO和异步IO,但是开发人员一旦用了同步IO,他们就再也懒得写异步IO了,所以,最终,Ryan瞄向了JS。因为JavaScript是单线程执行,根本不能进行同步IO操作,只能使用异步IO。

另一方面,因为V8是开源的高性能JavaScript引擎。Google投资去优化V8,而他只需拿来改造一下。

于是在2009年,Ryan正式推出了基于JavaScript语言和V8引擎的开源Web服务器项目,命名为Node.js。虽然名字很土,但是,Node第一次把JavaScript带入到后端服务器开发,加上世界上已经有无数的JavaScript开发人员,所以Node一下子就火了起来。

二.浏览器端JS和Node端JS的区别


相同点就是都使用了Javascript这门语言来开发。

浏览器端的JS,受制于浏览器提供的接口。比如浏览器提供一个弹对话框的Api,那么JS就能弹出对话框。浏览器为了安全考虑,对文件操作,网络操作,操作系统交互等功能有严格的限制,所以在浏览器端的JS功能无法强大,就像是压在五行山下的孙猴子。

NodeJs完全没有了浏览器端的限制,让Js拥有了文件操作,网络操作,进程操作等功能,和Java,Python,Php等语言已经没有什么区别了。而且由于底层使用性能超高的V8引擎来解析执行,和天然的异步IO机制,让我们编写高性能的Web服务器变得轻而易举。Node端的JS就像是被唐僧解救出来的齐天大圣一样,法力无边。

三.Node的操作 1.文件操作:读文件 fs.readFile()

首先我们先要声明 fs,path,ws这些核心语法,这些都是node中内置的API。

通过  let fs=require('fs')来声明

fs.readFile(__dirname+'./yes.text',(err,data)=>{

if(err) throw err;

console.log(data);

})

这是一个读文件的操作,__dirname表示当前文件的绝对路径,我们在使用Node时,不建议使用相对路径,一般使用绝对路径。在打印的data中,我们会发现数据是一些二进制流,称之为Buffer。我们可以使用data.toString()或者在回调函数加上'utf8',即可看到我们想要的数据

2.写文件 fs.writeFile()

 var text = '哥哥!'

 fs.writeFile('./yes.txt', text, err => {

   if (err) {

        console.log('文件写入失败');

        return; }

     console.log('文件写入成功');

 })

将text写入到  ./yes.txt文件中。注意:如果没有目标文件夹,会自动新建。并且会删除原先的数据,写入新数据。fs.writeFileSync()这也是写入操作,但是是同步执行,我们一般在方法后没有Sync则代表我们使用异步操作

3.追加文件   fs.appendFile()

 fs.appendFile('./ok.txt', text, err => {

     if (err) {

         console.log('文件追加失败');

         return;}

     console.log('文件追加成功');

 })

将text文本添加到./ok.txt中

4.拷贝文件 fs.copyFile()

fs.copyFile('./yes.txt','./ok.txt',err=>{

 if (err) {

         console.log('文件复制失败');

         return;}

     console.log('文件复制成功');

})

将./yes.txt复制到./ok.txt中

五.流操作

流操作一般读取的是大文件

1.读取流

let fs=require(‘fs’);

const rs=fs.createReadStrem('./yes.txt',{encoding:'utf8'})

rs.on('open',()=>{

console.log(''可读流开启)

})

rs.on('data',(chunk)=>{

chunk是一个buffer,当前读取的数据片段,二进制片段流

text+=chunk

})

rs.on('end',()=>{

console.log(''可读流读取结果)

})

rs.on('close',()=>{

console.log(''可读流关闭)

})

2.写入流

写入流与读取流的写法差不多,就在这里不做示例了。

六.Path

path部分直接看图

 先输出的是image.html  basename是文件名+后缀

其次 c://users/86185/Desktop/csdn/canvas  绝对路径

其次.hmtl   后缀

parse是将P解析为一个对象  具体内容为:{
  root: 'c:/',
  dir: 'c://users/86185/Desktop/csdn/canvas',
  base: 'image.html',
  ext: '.html',
  name: 'image'
}

最后是判断是否为绝对路径  true  返回布尔值

join可以识别 ../返回上一级

七.HTTP协议 1.完整的URL路径:协议+ip/域名+端口号+路由+?+参数信息 2.http具体操作

let http=require('http') 导入核心语句  

http.createServer()创建服务  

listen(port)监听端口并开启服务

req请求体  res响应体

req.url路由  res.end()向前端返回内容

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号