Node学习 -- 入门简介

Node的特点

1、异步I/O

例如,在Node中读取文件,与前端的Ajax调用方式非常类似:

var fs = require('fs');
fs.readFile('/path', function (err, file) { c
    onsole.log('读取文件完成')
}); 
console.log('发起读取文件');

2、事件与回调函数

在JS中,函数是一等公民,回调函数无处不在。回调函数是Node中最好的接受异步调用返回数据的方式。

下面这个栗子,展示的是Ajax异步提交的服务器端处理过程。

var http = require('http');
var querystring = require('querystring');
//侦听服务器的request事件 
http.createServer(function (req, res) {
    var postData = ''; 
    req.setEncoding('utf8');
    //侦听请求的data事件 
    req.on('data', function (trunk) {
        postData += trunk; 
    });
    //侦听请求的end事件 
    req.on('end', function () {
        res.end(postData); 
    });
}).listen(8080);
console.log('服务器启动完成');

3、单线程

Node保持了单线程的特点。单线程最大的好处是不用像多线程那样处处在意状态同步的问题,没有死锁问题,也没有线程上下文交换所带来的性能上的开销。

但是,单线程也有弱点:
1. 无法利用多核CPU
2. 错误会引起整个应用退出,因此应用的健壮性值得考验
3. 大量计算占用CPU导致无法继续调用异步I/O
积极面对这些弱点,可以避免潜在的问题,使其得以更高效的利用。

对于第三条的解决方案:
HTML5定制了Web Workers的标准,它能够创建工作线程来进行计算,以解决JS大计算阻塞UI渲染的问题。工作线程为了不阻塞住线程,通过消息传递的方式来传递运行结果,这也使得工作线程不能访问到主线程的UI。

Node使用了与WebWorkers相同的思路来解决单线程中大计算量的问题:child_process

子进程的出现,意味着Node可以从容的应对单线程在健壮性和无法利用多核CPU方面的问题。通过将计算分发到各个子进程,可以将大量的计算分解掉,然后再通过进程之间的消息来传递结果,这可以很好的保持应用模型的简单和低依赖。通过Master-Worker的管理方式,也可以很好的管理各个工作进程,以达到更高的健壮性。

4、跨平台

Node的应用场景

1、I/O密集
2、CPU密集
3、和遗留的系统和平共处
4、分布式应用

你好!关于学习使用 Node-RED,我可以给你一些指导。Node-RED 是一个基于流程图的编程工具,用于连接硬件设备、API、服务和在线服务。它使用节点来表示不同的功能模块,并通过连接线将它们串联起来以构建应用程序或自动化流程。 以下是一些学习 Node-RED 的步骤和资源: 1. 安装 Node-RED:首先,你需要安装 Node.js。然后,在终端或命令提示符中运行 `npm install -g node-red` 命令安装 Node-RED。安装完成后,运行 `node-red` 命令启动 Node-RED。 2. 探索 Node-RED 编辑器:在浏览器中打开 `http://localhost:1880`,这是 Node-RED 的编辑器界面。你可以在这里创建、编辑和保存流程。 3. 学习节点和流程:Node-RED 的编辑器界面左侧是节点面板,包含了许多内置的节点。你可以从中选择并拖放节点到主编辑区域,并使用连接线将它们连接起来。了解不同节点的功能和用法是学习 Node-RED 的关键。 4. 连接硬件设备和服务:Node-RED 支持许多节点扩展,用于连接各种硬件设备和服务。查找并安装适合你项目需求的节点扩展,然后使用它们来构建应用程序或自动化流程。 5. 学习流程控制和逻辑:Node-RED 提供了一些节点用于控制流程、实现条件判断和循环等逻辑操作。了解这些节点的使用方法,可以帮助你更好地构建复杂的流程。 6. 调试和测试:在开发过程中,你可能需要进行调试和测试。Node-RED 提供了一些调试工具和节点,帮助你查看流程的运行状态、输出结果和错误信息。 除了上述步骤,你还可以参考以下资源来学习更多关于 Node-RED 的知识: - 官方文档:Node-RED 官方网站提供了完整的文档和教程,包括入门指南、节点库和示例等。你可以访问官方网站来获取这些资源。 - 社区支持:Node-RED 有一个活跃的社区,你可以加入官方论坛或其他社交媒体群组,与其他用户交流和寻求帮助。 - 在线教程和视频课程:有很多在线教程和视频课程可以帮助你学习 Node-RED。你可以在网络上搜索并选择适合自己的资源。 希望这些信息对你有帮助!如果你有任何更具体的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值