Node学习系列(一)----认识Node.js

服务端开发和前端开发的区别

服务稳定性

server端可能会遭受各种恶意攻击和误操作,后果相对比前端更严重
单个客户端可以意外挂掉,但服务端不行
需要进程守护,避免服务挂掉

考虑内存和CPU(优化、扩展)

客户端独占一个浏览器,内存和CPU消耗资源低
server端要承载更多请求,CPU和内存都是稀缺资源

日志记录

前端只是日志的发起方,不关系后续
server需要记录日志、存储日志、分析日志

安全

server需要接受各种恶意攻击(越权操作、数据库攻击),前端则较少(主要是xss)

集群和服务拆分

流量增加,需要扩展机器和服务器拆分来承载更大流量

ECMAScript、JavaScript、Node之间的联系

ECMAScript
定义语法,写javascript和node都必须遵守
变量定义,循环、判断、函数
原型和原型链、作用域和闭包、异步

JavaScript
使用了ECMAScript规范,外加Web API, 缺一不可
DOM操作、BOM操作、事件绑定、AJAX等

Node
使用ECMAScript规,外加node.js API
处理http请求,文件处理

NodeJS的特点

1.它是一个JavaScript运行环境
2.依赖于Chrome V8引擎进行代码解析
3.事件驱动
所谓事件驱动,是指在持续事务管理过程中,进行决策的一种策略,即跟随当前时间点上出现的事件,调动可用资源,执行相关任务,使不断出现的问题得以解决,防止事务堆积。
4.异步、非阻塞I/O
异步的机制是当我么执行请求的时候,立即执行后面的代码而不需要等待,请求结果放在回调函数当中,提高了效率。当I/O操作执行完毕之后会以事件的形式通知执行I/O操作的线程
5.轻量、可伸缩,适于实时数据交互应用
6.单线程
7.跨平台
起初,Node只可以在Linux平台上进行,后台投入了一个团队对Windows进行兼容。通过对Node架构层面的改动,建立了一层平台层架构,即libuv。通过良好的架构,Node的第三方C++模块可以借助libuv实现跨平台。

基于以上的特点,我们知道Node可以应用于I/O密集型的场景,能够有效地组织起更多的硬件资源,从而提供更好的服务。而I/O密集型的处理能力主要得益于Node利用事件循环的处理能力,而不是启动一个线程为每一个请求服务。

简单的事例

const http = require('http')
http.createServer((req,res) => {
  // 发送http请求头
  res.writeHead(200, { 'Content-Type': 'text/plain' })
  // 发送响应数据
  res.end('hello world!')
}).listen(3000)

// 终端打印如下信息
console.log('server running at http://127.0.0.:3000')

接着控制台运行该程序在浏览器打开会看到输出内容
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值