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之初识的更多相关文章

  1. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  2. Node.JS初识

    对Node.JS的认识 1.Node 是一个服务器端 JavaScript 解释器: 2.Node 的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码.处理高 ...

  3. .NET程序员也学Node.js——初识Node.js

    清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...

  4. Node.js 初识2

    原文:https://www.cnblogs.com/zzuIvy/p/nodejs_1.html 测试:node.js部署网站 1.创建js2.js var http = require('http ...

  5. Node.js 初识1

    测试:让Node.js运行脚本 1.创建一个脚本 js1.js console.log('测试'); 2.cmd界面 运行脚本

  6. python 全栈开发,Day54(node.js初识)

    一.什么是Node.js 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事 ...

  7. node.js初识10

    post请求 form.html <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  8. node.js初识09

    1.node_module文件夹 如果你的require中没有写./,那么Node.js将该文件视为node_modules目录下的一个文件. 2.package.json文件 如果使用文件夹来统筹管 ...

  9. node.js初识08

    1.模块的概念,在前端的世界里,jq和js的关系,在后台里就是express和原生node的关系, 2.每一个js里的函数都只在当前文件里起作用,如果你希望在其他js里调用这个函数,这么你需要在这个j ...

随机推荐

  1. SpringBoot当中如何整合mybatis和注入

    [学习笔记] 6.整合mybatis和注入: 马克-to-win@马克java社区: 根据第3部分的helloworld例子,用那个项目做底子.pom.xml只需要加入mybatis和mysql的部分 ...

  2. 使用OSG创建一个简单的地形

    目录 1.解决方案 1) 使用TIF格式的DEM 2) 描述HeightField 2.存在问题 3.参考文档 1.解决方案 在网上参考了一些资料,使用OSG创建地形最简单的办法就是使用OSG::He ...

  3. iOS----------时间戳与NSDate

    1:时间戳转NSDate NSString *timeStamp =@"1545965436"; NSDate *date = [NSDate dateWithTimeInterv ...

  4. LOJ #6052. 「雅礼集训 2017 Day11」DIV

    完了我是数学姿势越来越弱了,感觉这种CXRdalao秒掉的题我都要做好久 一些前置推导 首先我们很容易得出\((a+bi)(c+di)=k \Leftrightarrow ac-bd=k,ad+bc= ...

  5. 使用 .NET Core 开发 BT Tracker 服务器

    一.什么是 BT Tracker ? 在 BT 下载过程当中,我们如果拿到一个种子文件,在其内部会包含一组 BT Tracker 服务器信息.在开始进行下载的时候,BT 下载工具会根据种子内的唯一 H ...

  6. Spring Boot中通过CORS解决跨域问题

    今天和小伙伴们来聊一聊通过CORS解决跨域问题. 同源策略 很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的,说到跨域,就不得不说说浏览器的同源策略. 同源策略是由Netscap ...

  7. 用Python教你微信防撤回(文本、图片、语音、视频、名片等...)

    大家在使用微信过程中,有时候消息还没看到,就被撤回了.毕竟好奇心大家都有,明知到消息被撤回了,就更想去看一下是什么内容心里想着万一是女神给我表白了呢.. 今天就用Python来做个微信防撤回的小功能. ...

  8. Python3+unitest自动化测试初探(中篇)

    目录 6.生成测试报告 7.编写邮件发送工具 8.发送邮件 发布 0 86 编辑 删除 Python3+unitest自动化测试初探(中篇)(2019-04-18 01:41) 发布 3 245 编辑 ...

  9. Data Warehouse

    Knowledge Discovery Process OLTP & OLAP 联机事务处理(OLTP, online transactional processing)系统:涵盖组织机构大部 ...

  10. lib和dll文件的初了解

    lib,dll这两样东西在许多编程书中都很少出现,但实际工程中,这两样东西的作用确实非常重要,我觉得c++程序员都有必要了解这两样东西. 首先总共有 动态链接 和 静态链接 这两种链接方式 |静态链接 ...