nodejs 的基本使用

全局对象

// 全局对象的宿主,类似于 window 对象
global 

process

// 是命令行参数数组
process.argv



global.process

// =========
// 输出到控制台中
process.stdout.write('hello');

// 将当前控制台中的文件清空
process.stdout.write('\033[2J');
process.stdout.write('\033[0f');

process.exit();

// =========
// 清空终端
process.stdin.resume();
process.stdin.on('data', (input) => {

  // console.log(i++);
  // 要在此处知道到底input是啥?

  input = input.toString().trim();
});


// =========
// 下一个事件循环时间处理
process.nextTick(callback);


// 尽量不要采用如下的方式来写
// // 不断的循环阻塞了代码的执行
// setTimeout(() => {
//   for (var i = 0; i < 1000000000; i++) {}
//   console.log('循环完了');
// }, 0);


事件发射器

var events = require("events");

var emitter = new events.EventEmitter();

// 指定事件监听方法
emitter.on("SomeEvent", function(argv1, argv2) {
    console.log("listener1", argv1, argv2);
});


emitter.on("SomeEvent", function(argv1, argv2) {
    console.log("listener2", argv1, argv2);
});


// 发射事件,多个事件监听方法都会被调用
emitter.emit("SomeEvent", "info", 1991);

文件

// 读文件

var fs = require('fs');

// 读取文件,第二个参数可以是回调函数,可以是文件的编码
fs.readFile('./1.png', function(error, data) {

  if (error) {
    console.log(error.stack);

    return ;
  }

  console.log(data.toString('base64'));

});


// 同步的方式来读取文件
var content = fs.readFileSync(`./frames/${i}.txt`, 'utf8');

fs.readFile('./1.png', (error, data) => {

  console.log(data.toString('base64'));

});



// =========
// ---------
// 写文件
const fs = require('fs');

fs.writeFile('./a.txt','he111llo');

HTTP服务器与客户端

获取GET参数

var url = require('url');
var util = require('util');

util.inspect(url.parse(req.url, true));

POST参数

var http = require('http');
var querystring = require('querystring');
var util = require('util');

http.createServer(function(req, res) {
        var post = '';
        req.on('data', function(chunk) {
        post += chunk;
    });

    req.on('end', function() {
        post = querystring.parse(post);
        res.end(util.inspect(post));
    });
}).listen(3000);

在 end 事件触发后,通过 querystring.parse 将 post 解析为真正的 POST 请求格式,然后向客户端返回。

【注意】 不要在真正的生产应用中使用上面这种简单的方法来获取 POST 请求,因为它有严重的效率问题和安全问题,这只是一个帮助你理解的示例。

返回数据

http.ServerResponse 是返回给客户端的信息,决定了用户最终能看到的结果。

http.ServerResponse 有三个重要的成员函数,用于返回响应头、响应内容以及结束请求。

response.writeHead(statusCode, [headers]):向请求的客户端发送响应头。
statusCode 是 HTTP 状态码,如 200 (请求成功)、404 (未找到)等。headers
是一个类似关联数组的对象,表示响应头的每个属性。该函数在一个请求内最多只
能调用一次,如果不调用,则会自动生成一个响应头。

response.write(data, [encoding]):向请求的客户端发送响应内容。data 是
一个 Buffer 或字符串,表示要发送的内容。如果 data 是字符串,那么需要指定
encoding 来说明它的编码方式,默认是 utf-8。在 response.end 调用之前,
response.write 可以被多次调用。

response.end([data], [encoding]):结束响应,告知客户端所有发送已经完
成。当所有要返回的内容发送完毕的时候,该函数 必须 被调用一次。它接受两个可
选参数,意义和 response.write 相同。如果不调用该函数,客户端将永远处于
等待状态。
http.createServer(function(req, res) {
    // HTTP 协议响应头
    res.writeHead(200, {'Content-Type': 'text/html'});

    // 服务器返回的数据
    res.write('<h1>nodejs</h1>');

    // 数据发送结束
    res.end();

http客户端

修改端口号:

GET 方式获取数据
var http = require('http');
http.get({host: 'www.baidu.com'}, function(res) {
    res.setEncoding('utf8');
    res.on('data', function (data) {
        console.log(data);
    });
});
POST的快捷方式
require的方式
port: 8080,

var options = {
    host: 'www.baidu.com',
    port: 8080,
    path: '/,
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length' : contents.length
    }
};

var req = http.request(options, function(res) {
    res.setEncoding('utf8');
    res.on('data', function (data) {
        console.log(data);
    });
});
req.write(contents);
req.end();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值