深入Node之初识
0前言
陆续的用Node已经一年多了,已经用node写了几个的项目,也该是总结node学习的过程了
1.Node是啥?
Node.js是一使用JavaScript作为开发语言,运行在服务器端的Web服务器,也就是说是 JavaScript的服务端运行环境,这么说其实还不严谨。node除了实现了js的运行环境外,还用C++实现了内置的库
2.与浏览器端的js运行环境的区别
JavaScript是一种解释型脚本语言,需要运行时环境来执行代码,而这个运行时环境就是Google开发的V8引擎。不管是浏览器端的js还是还是node环境的js执行环境,都是基于V8引擎实现的。
下图可以看到node环境和浏览器环境的结构。可以看到,Node中除了不需要页面解析引擎外,与浏览器的区别就在于中间层的实现

3.Node与其他编程语言相比有哪些特点
3.1 单线程
JavaScript在浏览器中运行时,js运行和页面渲染共用同一线程,也就是说js运行和页面渲染是相互阻塞的,这也证明了,在前端实践中需要把js放在最后执行的原因。
单线程编程模型的好处是,不用担心内存状态的同步问题和程序上下文切换时的开销
3.2异步I/O
在浏览器编程中,需要和服务端打交道时,因为网络存在波动无法准确的预知响应时间,所以只能采用事件加回调的方式来实现,如ajax的请求的实现,只有当网络响应时才会执行注册的回调函数。如下图node的文件读取操作

3.3跨平台
node使用libuv库实现了跨平台运行的特性,libuv封装了多平的系统调用,抹平了系统之间的差异,在程序调用成抽象成统一的调用接口,使node程序能够在多平台实现相同的执行效果
4.node适合做什么工作
I/O密集型应用,如常见的Web应用,实时通讯服务器等。由于node使用js的事件+回调的机制来实现IO访问,并且不会阻塞IO调用
中间层应用,作为网关代理层转发、代理、整合已有的服务和资源,快速实现产品上线、版本迭代,实现公司业务的“小步快跑”
深入Node之初识的更多相关文章
- node.js系列笔记之node.js初识《一》
node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...
- Node.JS初识
对Node.JS的认识 1.Node 是一个服务器端 JavaScript 解释器: 2.Node 的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码.处理高 ...
- .NET程序员也学Node.js——初识Node.js
清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...
- Node.js 初识2
原文:https://www.cnblogs.com/zzuIvy/p/nodejs_1.html 测试:node.js部署网站 1.创建js2.js var http = require('http ...
- Node.js 初识1
测试:让Node.js运行脚本 1.创建一个脚本 js1.js console.log('测试'); 2.cmd界面 运行脚本
- python 全栈开发,Day54(node.js初识)
一.什么是Node.js 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事 ...
- node.js初识10
post请求 form.html <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- node.js初识09
1.node_module文件夹 如果你的require中没有写./,那么Node.js将该文件视为node_modules目录下的一个文件. 2.package.json文件 如果使用文件夹来统筹管 ...
- node.js初识08
1.模块的概念,在前端的世界里,jq和js的关系,在后台里就是express和原生node的关系, 2.每一个js里的函数都只在当前文件里起作用,如果你希望在其他js里调用这个函数,这么你需要在这个j ...
随机推荐
- CenOS_用户管理
1.用户的创建 1.1基本创建 useradd <用户名> 如:useradd xm 默认在home目录下 为用户增加/修改密码: passwd <用户名> 如:passwd ...
- 需求分析&用例编写
一.需求分析? 1.什么是需求 软件产品必须完成的是以及必须具备的品质. 功能性需求:产品必须完成的那些事,要求一定的功能和品质. 例子:淘宝的用户名登录. 非功能性需求:产品必须具备的属性和品质.诸 ...
- AMBARI Blueprint 使用文档
Introduction Notable JIRAs API Resources and Syntax Blueprint Usage Overview Step 0: Prepare Ambari ...
- 开启全民窃听风云——C#智能录音录像录屏程序源码放送!
·引子 我这人从小有个坏毛病,就是喜欢偷窥别人隐私.当然,在道德上,我时刻要求自己做一名正人君子,只不过是心理上有这癖好罢了.所以我从小就对窃听.窃视.黑客技术.破解技术等疯狂着迷!实际上这也是我走上 ...
- Jvm启动,关闭及对应钩子
很多时候应用服务启动或关闭会做一些预加载(比如缓存,定时任务启动等)或收尾处理工作(比如程序失败记录等) 1. 首先看下Spring框架服务启动加载操作实现,直接上代码 继承实现接口Applicati ...
- C# 4.0 的 Visual Studio 2010 示例
C# 4.0 的 Visual Studio 2010 示例 我们将 C# 示例分为两种不同的类别: 语言示例 LINQ 示例 语言示例 语言示例帮助您熟悉各种 C# 语言功能.这些示例包含在 Lan ...
- 我是如何拿到蚂蚁金服 offer 的 ?
阅读本文大概需要 5.6 分钟. 作者:翟洪毅 一.梦想和被拒 二.积累 三.结语 首先介绍一下投稿作者 翟洪毅,16年华理计算机本科毕业.在年前拿到了蚂蚁金服Java开发的offer,P6. 工 ...
- mysql安装问题(一)
mysql安装问题 mysql安装一直未响应 问题: 原因: 解决方案: 登录mysql时提示密码错误 问题: 解决方案: mysql安装问题 Author:母虎忠 日期:April 26, 2019 ...
- python的进程与线程(三)
线程的锁 1.几个概念 讲起线程的锁,先要了解几个概念:什么是并行?什么是并发?什么是同步?什么是异步? 并发:是指系统具有处理多个任务(动作)的能力 并行:是指系 ...
- android学习笔记--检测是否为wifi环境
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // 获取 ...