Node.js中如何获取客户端IP地址

示例代码:

var http = require('http')

http.createServer(function(req, res) {
    let ip = req.headers['x-forwarded-for'] ||
        req.connection.remoteAddress ||
        req.socket.remoteAddress ||
        req.connection.socket.remoteAddress;

    console.log("ip:",ip);
}).listen(3000)

node.js 如何读取json文件内容

最简单的方式:

const config = require('./config.json')
console.log("name",config.name)
console.log("age",config.age)

require方法的缺点:
– 内容会被缓存,不适合动态变更的json文件
– 仅支持后缀为json的文件

稍微复杂的方法:

const fs = require('fs');

try {

    const data = fs.readFileSync('./config.json', 'utf8');

    // parse JSON string to JSON object
    const config = JSON.parse(data);

    console.log("name",config.name)
    console.log("age",config.age)

} catch (err) {
    console.log(`Error reading file from disk: ${err}`);
}

cheerio html方法中文被编码问题

如下代码:

const cheerio = require('cheerio')
const $ = cheerio.load('<html><head><title></title><meta charset="utf-8"/></head><body></body></html>')

$('body').append('<div class="content">我是内容</div>')

console.log($.html());

输出内容为:

会发现中文被编码,如果不想被编码,则在load方法中增加decodeEntities参数即可,如下:

const $ = cheerio.load('<html><head><title></title><meta charset="utf-8"/></head><body></body></html>',{decodeEntities:false})

输出内容就会变为:

<html><head><title></title><meta charset="utf-8"></head><body><div class="content">我是内容</div></body></html>

Node.js中操作dom – cheerio

cheerio 可以简单理解为node.js服务器端的jquery

官网:https://cheerio.js.org

安装:

npm i cheerio

使用示例:

const cheerio = require('cheerio')
const $ = cheerio.load('<html><head><title></title></head><body></body></html>')

//设置页面标题
$("title").text('new title')

//新增节点
$('body').append('<div class="content"></div>')
//添加class
$('.content').addClass('main')
//设置style样式
$('.content').css('color','red')

console.log($.html());

输出结果为:

<html><head><title>new title</title></head><body><div class="content main" style="color: red;"></div></body></html>

Node.js中操作DOM – jsdom

注意:jsdom 依赖 Node.js 10.x以上版本

jsdom is a pure-JavaScript implementation of many web standards, notably the WHATWG DOM and HTML Standards, for use with Node.js.

官网:https://github.com/jsdom/jsdom

安装:

npm i jsdom

使用示例:

const jsdom = require("jsdom");
const {
    JSDOM
} = jsdom;

const dom = new JSDOM(`<html><head></head><body></body></html>`);

const document = dom.window.document;

// 创建一个新的 div 元素
let newDiv = document.createElement("div");
// 给它一些内容
let newContent = document.createTextNode("设置 Text 文本!");
// 添加文本节点 到这个新的 div 元素
newDiv.appendChild(newContent);

//设置属性
newDiv.setAttribute("class","uni-list");
newDiv.setAttribute("style","color: red;");

//插入节点
document.querySelector('body').appendChild(newDiv)

console.log(document.querySelector("html").outerHTML);