nodejs嵌入式应用

Posted dong1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs嵌入式应用相关的知识,希望对你有一定的参考价值。

1)从nodejs v4版本开始已经发布了适用于嵌入式的运行环境,我的板子是cortex a5, armv7体系结构的,用最新版node-v9.9.0-linux-armv7l.tar.gz

node-v9.9.0-linux-arm64.tar.gz                     21-Mar-2018 20:05            17909317
node-v9.9.0-linux-arm64.tar.xz                     21-Mar-2018 20:07            10789576
node-v9.9.0-linux-armv6l.tar.gz                    21-Mar-2018 15:19            17149093
node-v9.9.0-linux-armv6l.tar.xz                    21-Mar-2018 15:37            10302588
node-v9.9.0-linux-armv7l.tar.gz                    21-Mar-2018 11:40            17190798
node-v9.9.0-linux-armv7l.tar.xz   

官网https://nodejs.org/download/release

文档手册https://nodejs.org/api/

中文社区https://cnodejs.org/

 

2) 安装
cp node-v4.9.1-linux-armv7l.tar.gz /usr/local/
cd /usr/local/
tar xvf node-v4.9.1-linux-armv7l.tar.gz

3)也可以自己编译源码
./configure --prefix=/home/dong/nodejs --dest-cpu=arm --without-snapshot --without-ssl
make
make install

4)添加环境变量
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/node-v4.9.1-linux-armv7l/bin"
export LD_LIBRARY_PATH=/usr/local/node-v4.9.1-linux-armv7l/lib:$LD_LIBRARY_PATH

5)测试实例 http_server_test.js
var http = require("http");
http.createServer(function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
}).listen(8888);
console.log("nodejs start listen 8888 port!");

6)top 资源监控
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND

v4.9.1
581 root      20   0   82616  18660  11968 S  0.0  7.4   0:03.52 node

v4.2.6
420 root      20   0   82760  18636  12476 S  0.0  7.4   0:02.09 node

v4.4.5
463 root      20   0   82880  18992  12792 S  0.0  7.6   0:02.08 node

v6.14.1
518 root      20   0   69668  20888  15188 S  0.0  8.3   0:02.55 node

v9.9.1
518 root      20   0   71240  25456  18840 S  0.0  10.2   0:02.55 node

 

PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
966   783 root     S    81288 32.0   0  0.0 node http_server.test.js

ulimit -s 512
980   783 root     S    50568 19.9   0  0.0 node http_server.test.js

 但是使用ulimit的一个后果就是它会影响到同一环境(同一shell或者终端)下后续启动的所有程序,如果修改成启动时设置的话就会影响到整个系统,这显然不是想要的。有两个方法可以能消除这个影响:

1)为需要修改栈大小的程序单独编写一个shell脚本,在程序启动前调用ulimit -s。因为子shell的环境不会影响到父shell,所以设置不会改变外部环境。
2)在程序运行前执行ulimit -s修改需要的栈大小,在程序运行后再次执行ulimit -s修改回原来的栈大小。

 

还是用v4.9.1划算,长期支持版,占资源少,也不影响功能实现。

 

以上是关于nodejs嵌入式应用的主要内容,如果未能解决你的问题,请参考以下文章

与nodejs一起使用的SQLite

我们可以在Node JS应用程序中使用socket.io和ejs(嵌入式javascript)而不是html页面吗?

15个Nodejs应用场景

使用Express应用程序生成器的Webpack

OpenAPI(Swagger Code Generator)注入式漏洞

利用nodemcu和mqtt协议让嵌入式设备接入互联网(二.nodejs的安装和配置)