nodejs的基本介绍与用法

一 、node.js的基本介绍

node.js是什么?

  1. nodejs是为开发高性能而诞生的一种技术
  2. 简单的说,nodejs是运行在服务端的JavaScript,基于v8引擎运行;
  3. Node.js 使用了一个事件驱动、非阻塞式 I/O (异步)的模型,速度非常快,性能非常好;

node.js有什么用?

  1. 它可以创建服务器,构建后端接口
  2. node可以用来操作系统底层操作硬件等

前端学node.js的好处

  1. 开发沟通:开发时更容易理解后端实现,降低交流成本
  2. 后端开发:想写一些自己感兴趣的项目时,可以自己独立完成,即使没有后端支持,且成本特别低。
  3. 中间层开发:为了进一步的前后端分离,提高性能,使用nodejs做中间层是一个非常好的实践(由于nodejs具有异步io的特点)
  4. 面试求职:找工作时,有优势,会加分
  5. 未来发展:Nodejs是称为一个资深的高级前端工程师必然要掌握的

三、Node.js之File模块的使用

文件夹的操作

1. 创建文件夹—fs.mkdir

语法格式:fs.mkdir(path,[ options], callback)

参数使用说明如下:

参数类型说明
pathString要创建文件夹的路径
[options]Object可选参数:recursive - 是否以递归的方式创建目录,默认为 false。mode - 设置目录权限,默认为 0777。
callbackObject文件夹创建完成后的回调函数,创建成功是没有参数的,如果创建失败会有个错误对象作为参数

实例:

var fs = require("fs");
//创建文件夹test
fs.mkdir("./test", function (err) {
    if (err) {
        return console.error("创建失败:", err);
    }
    console.log("文件夹创建成功。");
});
/* 
注意:
  对于这种创建方式,如果你要创建的路径是: ./t1/t2
  但是你又没有t1这个文件夹,那么你就可以加上可选参数recursive:true,如下:
  fs.mkdir('./t1/t2', { recursive: true },  function (err) {...});
  这样的话,不管你有没有t1这个文件夹,都可以创建t2
*/
2. 读取文件夹—fs.readdir

语法格式:fs.readdir(path, callback)
参数使用说明如下:

参数类型说明
pathString要读取文件夹的路径
callbackObject回调函数带有两个参数err, files, err 为错误信息,files 为 读取文件成功的数组列表。

实例:

var fs = require("fs");
//读取当前目录下的test文件夹内容
fs.readdir("./test",function(err, files){
   if (err) {
       return console.error("文件夹读取失败:",err);
   }
   files.forEach( function (file){
       console.log( file );
   });
});

3. 删除文件夹—fs.rmdir

语法格式:fs.rmdir(path, callback)

参数使用说明如下:

参数类型说明
pathString要创建文件夹的路径
callbackObject文件夹删除完成后的回调函数,删除成功是没有参数的,如果删除失败会有个错误对象作为参数err

实例:

var fs = require("fs");

fs.rmdir("./test",function(err){
   if (err) {
       return console.error("删除失败:",err);
   }
   console.log("删除成功");
});

文件的操作

1. 写入(创建)文件----fs.writeFile

语法格式:fs.writeFile(filename,data,callback)

参数使用说明如下:

参数类型说明
filenameString要写入的文件名
dataString要写入文件的内容。
callbackfn回调函数中有个写入失败的参数err

实例:


var fs = require("fs");
fs.writeFile("./t1.txt","我是要写入的内容。。。",function(err){
   if (err) {
       return console.error("文件内容写入失败",err);
   }
   console.log("文件内容写入成功"); 
});
2 .读取文件----fs.readFile

语法格式:fs.readFile(path,callback )

参数使用说明如下:

参数类型说明
filenameString要读取文件的路径
callbackObject文件读取后的回调函数;有两个参数 err和data
var fs = require("fs");
fs.readFile("./t1.txt",function(err,data){
   if (err) {
       return console.error("读取失败:",err);
   }
   console.log(data.toString());  //显示内容时需要使用toString把内容转换为字符串进行显示
});
3. 向文件中追加内容—fs.appendFile

语法格式:fs.appendFile(path,data,callback )

参数使用说明如下:

参数类型说明
filenameString要写入的文件名
dataString要追加文件的内容。
callbackObject回调函数中有个写入失败的参数err
var fs = require("fs");
fs.appendFile("./t1.txt","我是要追加的内容。。。",function(err){
   if (err) {
       return console.error("文件内容追加失败",err);
   }
   console.log("文件内容追加成功"); 
});
4. 删除文件夹----fs.unlinkFile

语法格式:fs.unlinkFile(path,callback )

参数使用说明如下:

参数类型说明
pathString要删除文件的路径
callbackObject删除文件后的回调函数,有个错误参数err
var fs = require("fs");

fs.unlink("./test/3.doc", function (err) {
    if (err) {
        return console.error("文件删除失败:", err);
    }

四、Node.js之HTTP模块

HTTP模块是用来构建服务器的核心模块

下面我们来用HTTP模块创建一个最简单的服务器

创建流程:

  1. 导入http模块
  2. 使用http模块创建一个服务器
  3. 给服务器添加请求处理函数fn–>绑定端口
var http = require('http'); //导入一个处理http请求的模块
http.createServer(fn).listen(8888);//使用http模块的createServer方法创建一个http服务器,监听8888端口
function fn (request, response) {
    response.writeHead(200, { 'Content-Type': 'text/plain;charset=utf-8' });// 发送 HTTP 头部 , HTTP 状态值: 200 : OK, 内容类型: text/plain
    response.end('hello, 我是用node创建的一个服务器');// 发送响应数据 "Hello World"
}
console.log('服务器地址: http://127.0.0.1:8888/');// 提示用户服务器相关信息

五、File+HTTP模块创建静态webserver

创建流程:

  1. 导入需要的模块 如:fs模块、HTTP模块等
  2. 使用http模块创建一个服务器
  3. 获取前端要访问的文件路径
  4. 读取文件返回到前端
  5. 监听端口
var http = require("http"), // 引入需要的模块
  fs = require("fs"), //引入文件读取模块
  cp = require("child_process"), // 可自动打开浏览器模块
  url = require("url"); //在引入url模块来处理前端发来的请求
// 使用http模块创建一个服务器
http.createServer(function (req, res) {
  var pathname = url.parse(req.url).pathname; // 获取请求路径名
  var fileName = ""; //要发送到前端的文件名
  if (pathname == "/" || pathname == "") {
    fileName = "index.html";
  } else {
    fileName = pathname.slice(1); //去掉第一个/,然后通过他们去寻找对应的路径
  }
  console.info(pathname);
  //读取文件返回到前端
  fs.readFile(fileName, function (err, data) {
    if (err) {
      res.end("打开" + fileName + "失败!");
      return;
    }
    res.end(data);
  });
})
  .listen(8889, "127.0.0.1"); // 监听端口
cp.exec("start http://127.0.0.1:8889/"); // 自动打开默认浏览器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值