首先介绍下node.js
[object Object]
Node.js是一个开源、跨平台的,基于 Chrome V8 引擎的 JavaScript 运行环境。
JavaScript 我们应该很熟悉,各大浏览器都支持JavaScript ,我们能在网页中进行各种交互都依赖于JavaScript 语言。
而Node是把把JavaScript带入到后端服务器开发。在Node上运行的JavaScript相比其他后端开发语言最大的优势是借助JavaScript天生的事件驱动机制加V8高性能引擎,使编写高性能Web服务轻而易举。

借助Node.js我们能开发哪些有意思、有价值的应用?
比如1. 智能家居中控系统
通过 Web / 小程序远程控制灯光、继电器、空调、窗帘;联动温湿度 / 光照传感器自动调节;
2.多传感器数据采集与边缘分析
采集温度、湿度、气压、PM2.5、气体浓度等传感器数据;本地实时分析(如阈值报警、趋势统计);通过 MQTT 上传至云平台
3.运动控制与视觉导航
控制电机、舵机实现移动底盘运动;结合摄像头与计算机视觉实现目标跟踪、避障、手势控制;支持多传感器融合
4.本地媒体服务器与家庭娱乐中心
搭建流媒体服务器,支持视频 / 音频转码与远程播放;控制智能家居设备联动娱乐场景
5.安防监控与入侵检测系统
摄像头实时监控;人体 / 移动目标检测;异常情况触发声光报警、录像并推送通知至手机。
BeagleBoneBlack具备丰富的软硬件资源和生态,非常适合构建基于Node.js的应用。
下面说干就干,首先安装Node.js并搭建一个建议的网页服务器吧!

然而,很遗憾,目前node.js官方网站不再支持ARMv7架构的linux(BeagleBoneBlack)
使用sudo apt install nodejs build-essential -y 会报错。

但也有办法。
使用以下指令,直接下载编译好的安装包,支持BeagleBoneBlack ARMv7l架构
wget https://nodejs.org/download/release/v20.18.0/node-v20.18.0-linux-armv7l.tar.xz sudo tar -xvf node-v20.18.0-linux-armv7l.tar.xz -C /usr/local --strip-components=1
以上两步骤就可以了。
然后验证下是否安装完成
beagle@BeagleBone:~$ node -v v20.18.0 beagle@BeagleBone:~$ npm -v 10.8.2
说明已安装完成。
接下来我们搭建一个建议的网页服务器,用它来抓取今天的头条新闻(联合早报https://www.zaobao.com),并可以在局域网内使用手机访问。
new6.js
const http = require('http');
const https = require('https');
// 创建网页服务器
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
// 抓取联合早报
const reqNews = https.get('https://www.zaobao.com/', {
headers: {
'User-Agent': 'Mozilla/5.0 (Linux armv7l) Node.js'
}
}, (resp) => {
let html = '';
resp.on('data', (chunk) => html += chunk);
resp.on('end', () => {
// 原生正则抓取头条
const regex = /<a[^>]+href="([^"]+)"[^>]*>([^<]+)<\/a>/g;
let match;
let news = [];
while ((match = regex.exec(html)) !== null) {
const url = match[1].startsWith('http') ? match[1] : 'https://www.zaobao.com' + match[1];
const title = match[2].trim().replace(/\s+/g, ' ');
if (title.length > 6 && title.length < 50) {
news.push({ title, url });
}
}
// 去重
const unique = Array.from(new Set(news.map(n => n.title)))
.map(t => news.find(n => n.title === t));
// 输出网页
let page = `
<html>
<head><meta charset="utf-8"><title>联合早报头条</title></head>
<body style="padding:20px; background:#f5f5f5;">
<h1 style="color:red">使用以下指令运行即可。
beagle@BeagleBone:~$ sudo node news6.js 服务器运行中:http://本机IP:8080
在电脑浏览器输入:
运行结果如下:

跟联合早报网站对比,还真是那么回事哈。

本次分享就到这里。
我要赚赏金
