返回

Node.js 的奇妙之处:轻松完成业务以外的任务

前端

输入
如果不用 Node.js 写业务

输出

Node.js 不仅是构建运行时,更可轻松应对文件读取、数据解析等需求,帮助解决持续集成难题。同时,它还可轻松创建脚本、CLI工具、网络爬虫、图像处理程序和机器学习项目,帮助开发者解放双手,提高效率。

最近整理博客,发现很久没有介绍语言相关的小用法了,正巧休息的时候把代码仓库归置了一遍,用几个简短的例子,聊聊 Node.js 除了写业务脚本、做构建运行时,它还能做些什么有趣的事情吧。

1. 持续集成:轻松搞定文件解析

在做持续集成中,偶尔会遇到需要解析 API 结果,或者读取文件,获取文件指定数据的需求,当使用 Node.js 时,这些问题都可以轻松搞定。

// 读取文件内容
const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf-8');

// 解析 JSON 字符串
const json = JSON.parse(data);

// 获取指定数据
const value = json.key;

2. 创建脚本:快速完成自动化任务

Node.js 可以轻松创建脚本,帮助我们快速完成一些自动化任务,如生成文件、发送电子邮件、打包代码等。

// 生成文件
const fs = require('fs');
fs.writeFileSync('file.txt', 'Hello World!');

// 发送电子邮件
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport(...);
transporter.sendMail({
  from: 'sender@example.com',
  to: 'receiver@example.com',
  subject: 'Hello',
  text: 'Hello World!'
});

// 打包代码
const { exec } = require('child_process');
exec('npm run build', (err, stdout, stderr) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(stdout);
});

3. 构建 CLI 工具:轻松操作命令行

Node.js 可以轻松构建 CLI 工具,帮助我们轻松操作命令行,如创建项目、运行测试、部署代码等。

// 构建 CLI 工具
const { program } = require('commander');

program
  .command('create <project-name>')
  .description('Create a new project')
  .action((projectName) => {
    // 创建项目代码
  });

program
  .command('test')
  .description('Run the tests')
  .action(() => {
    // 运行测试代码
  });

program
  .command('deploy')
  .description('Deploy the code')
  .action(() => {
    // 部署代码
  });

program.parse(process.argv);

4. 开发网络爬虫:轻松获取网络数据

Node.js 可以轻松开发网络爬虫,帮助我们轻松获取网络数据,如爬取新闻、商品信息、股票数据等。

// 开发网络爬虫
const request = require('request');
const cheerio = require('cheerio');

// 爬取新闻
request('https://example.com/news', (err, res, body) => {
  if (err) {
    console.error(err);
    return;
  }

  const $ = cheerio.load(body);

  $('.news-item').each((i, element) => {
    const title = $(element).find('.title').text();
    const content = $(element).find('.content').text();

    // 保存新闻数据
  });
});

// 爬取商品信息
request('https://example.com/product', (err, res, body) => {
  if (err) {
    console.error(err);
    return;
  }

  const $ = cheerio.load(body);

  $('.product-item').each((i, element) => {
    const name = $(element).find('.name').text();
    const price = $(element).find('.price').text();

    // 保存商品信息
  });
});

// 爬取股票数据
request('https://example.com/stock', (err, res, body) => {
  if (err) {
    console.error(err);
    return;
  }

  const $ = cheerio.load(body);

  $('.stock-item').each((i, element) => {
    const name = $(element).find('.name').text();
    const price = $(element).find('.price').text();

    // 保存股票数据
  });
});

5. 创建图像处理程序:轻松处理图像

Node.js 可以轻松创建图像处理程序,帮助我们轻松处理图像,如裁剪、旋转、添加水印等。

// 创建图像处理程序
const sharp = require('sharp');

// 裁剪图像
sharp('input.jpg')
  .resize(200, 200)
  .toFile('output.jpg');

// 旋转图像
sharp('input.jpg')
  .rotate(90)
  .toFile('output.jpg');

// 添加水印
sharp('input.jpg')
  .composite([
    {
      input: 'watermark.png',
      gravity: 'southeast'
    }
  ])
  .toFile('output.jpg');

6. 构建机器学习项目:轻松实现机器学习

Node.js 可以轻松构建机器学习项目,帮助我们轻松实现机器学习,如图像识别、自然语言处理、语音识别等。

// 构建机器学习项目
const tensorflow = require('@tensorflow/tfjs-node');

// 图像识别
const model = await tensorflow.loadGraphModel('model.json');
const input = tensorflow.tensor2d([
  [1, 2, 3],
  [4, 5, 6]
]);
const output = await model.predict(input);
console.log(output.dataSync());

// 自然语言处理
const model = await tensorflow.loadGraphModel('model.json');
const input = 'Hello World!';
const output = await model.predict(input);
console.log(output.dataSync());

// 语音识别
const model = await tensorflow.loadGraphModel('model.json');
const input = 'Hello World!';
const output = await model.predict(input);
console.log(output.dataSync());

当然,除了这些,Node.js 还可以做更多有趣的事情,如构建游戏、开发物联网应用、创建区块链项目等。希望这些例子能激发你的灵感,让你发现 Node.js 的更多可能性。