node.js

作者: 皇甫圣坤 | 来源:发表于2019-04-01 19:20 被阅读0次

一、什么是NodeJS
(1)Node.js 是一个基于 Chrome V8 引擎的 JavaScript 的服务器端运行环境。
(2)Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

二、我们用NodeJS来干什么?
NodeJS可以构建服务器
(1)接收客户端对静态资源的请求,并返回结果
(2)接收客户端对动态资源的请求,进行业务处理后,返回结果

三、NodeJS的基础

  1. 构建服务器 (http模块)
    const http = require("http")
    const server = http.createServer(function(req,res){
    console.log(req.url);

    res.writeHead(200,{"content-type":"text/html;charset=UTF-8"});
    res.write('中文');
    res.end("hello world");
    })
    server.listen(80)

  2. nodeJS的模块

    (1)暴露模块: exports.fun = fun;
    module.exports = {}
    (2) 加载模块: (能够加载进来的其实是exports对象)
    const a = require("*.js")

  3. fs模块 (文件系统)

    (1) fs.readFile("文件地址",function(err,data){
    console.log(data.toString());
    })

    (2) fs.writeFile("文件地址","内容",function(){
    })
    流的概念: stream

    (3) const readerStream = fs.createReadStream("文件地址")
    readerStream.on("data",function(chunk){
    })
    readerStream.on("end",function(){
    })
    readerStream.on('error', function(err){
    console.log(err.stack);
    });

    (4) 可读流和可写流通过管道操作连续执行

    var readStream = fs.createReadStream('./1.txt');
    var writeStream = fs.createWriteStream('output.txt');

    // 管道读写操作
    // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
    readStream.pipe(writeStream);

  1. path模块(对路径进行操作)
    // __dirname 表示当前文件所在的目录
    console.log(__dirname)
    // __filename 表示 当前文件的完整路径
    console.log(__filename)

    path.join()
    path.normalize()
    path.resolve
    path.extname()

四、搭建静态资源服务器
var http = require("http");
var fs = require("fs");
var path = require("path");
var mime = require("mime"); // 自动获取文档类型,用在res.writeHead中

http.createServer(function (req, res) {
if (req.url == "/") {
fs.readFile(__dirname + "/app" + "/index.html", function (err, data) {
res.end(data);
})
}
var path_last = path.extname(req.url); // ".html" ".css"
if (path_last) {
res.writeHead(200, { "Content-type": mime.getType(path_last) });
//favicon.ico文件放在服务器根目录
var url = __dirname + (path_last == ".ico" ? "" : "/app") + req.url;
fs.readFile(url, function (err, data) {
res.end(data);
})
}
}).listen(3000)

五、NodeJS的事件循环

Event Loop(事件循环)是一个程序结构,用于等待和发送消息和事件

  1. Node.js是一个单进程单线程的应用。
  2. 单线程是指用户的代码始终运行在一个线程,即主线程
  3. Node.js还有另一个负责主线程与其他进程(主要是各种I/O操作)通信的线程,被称为"消息线程"(或事件队列)
  4. Event Loop: 当web server接收到请求,就把它关闭然后进行处理(执行I/O操作),然后去服务下一个web请求。
    每当遇到I/O的时候,主线程就让Event Loop线程去通知相应的I/O程序,然后接着往后运行,所以不存在等待时间。等到I/O程序完成操作,Event Loop线程再把结果返回主线程。主线程就调用事先设定的回调函数,完成整个任务,这个执行过程不断循环。

相关文章

  • nodejs安装

    Node.js安装 目录 Node.js简单介绍 windows安装Node.js Linux安装Node.js ...

  • node.js基础

    什么是node.js Node.js特点 node.js优点和缺点

  • Nodejs.2

    参考内容:Node.js EventEmitter 四、Node.js EventEmitter Node.js所...

  • nodejs第一步

    Node.js 是什么?Node.js与JavaScript的区别是什么? Node.js的优点?Node.js的...

  • node 学习笔记.md

    Node.js第一天 1. 初识Node.js 1.1 Node.js是什么 Node.js® is a Java...

  • Node.js学习

    主线:Node.js是什么 --> Node.js的组成 --> Node.js的特点 --> Helloworl...

  • 使用AngularJS搭建前台框架

    Node.js部署: 下载安装包:从Node.js官网下载Node.js安装包。 安装Node.js:打开node...

  • Node.js模块

    Node.js 模块和 Node.js 包介绍。 一、Node.js模块 每一个Node.js都是一个Node.j...

  • 小鹅通视频下载mac 小鹅通课程下载教程

    前两天,Node.js官方发布了Node.js 15的正式版本,Node.js 15 将替代 Node.js 14...

  • node学习笔记

    node.js 介绍 node.js初识 node.js 平台是基于 Chrome V8 JavaScript 引...

网友评论

      本文标题:node.js

      本文链接:https://www.haomeiwen.com/subject/rojbbqtx.html