什么是Nodejs

简单的说 Node.js 就是运行在服务端的 JavaScrip(编写高性能网络服务器的JavaScript工具包(用js开发服务端程序))t。

JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。

例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象。而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了fs、http等内置对象。

特点:快,耗内存 ,异步耗内存测试:网上一个百万级并发测试,未优化的情况下1M的连接,消耗了16G的内存

使用Node.js开发的优点

性能高(机制问题,支持异步开发)

开发效率高(开发过程中代码量跟其他语言差不多,但是在优化上能省不少的事)

应用范围广(可以开发桌面系统,electron框架)

Node.js的劣势和解决方案

默认不支持多核,但用cluster可以解决

默认不支持服务器集群node-http-proxy可以解决

使用Nginx做负载均衡,静态的由nginx处理,动态的由node.js处理

forever或node-cluster实现灾难恢复

框架的选择

Express:完善、稳定、文档比较全、社区大

Sails:在express的基础之上

Koa:超前

Hapi:复杂(一个简单的hello world都要做很多切磋)适合复杂的大型项目

Nodejs发展史

2009年2月,Ryan Dahl在博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库。

2009年5月,Ryan Dahl在GitHub上发布了最初版本的部分Node.js包,随后几个月里,有人开始使用Node.js开发应用。

2009年11月和2010年4月,两届JSConf大会都安排了Node.js的讲座。

2010年年底,Node.js获得云计算服务商Joyent资助,创始人Ryan Dahl加入Joyent全职负责Node.js的发展。

2011年7月,Node.js在微软的支持下发布Windows版本

下载Node.js

下载地址:https://nodejs.org/en/download/

Windows系统下,选择和系统版本匹配的.msi后缀的安装文件。

Mac OS X系统,选择.pkg后缀的安装文件。 里面包含了npm,所以安装了node也就安装了npm

安装node.js

下载完后直接点击安装,一直下一步即可

打开命令行——输入node,看到下面的东西表示安装没问题

想要退出的话,按两次Ctrl+C即可

查看node.js的版本

Nodejs示例(Hello World)

创建一个名为hello.js的文件

从命令行执行这个文件

每次这样运行会很麻烦,可以先进入文件所在的文件夹,然后在运行

NodeJs和JavaScript的异同

相同点:在ECMAScript部分node和js其实是一样的,比如数据类型的定义,语法结构,内置对象和方法

不同点

从用途中区分JavaScript的主要功能是DOM(操作页面节点的一些方法)和BOM(操作浏览器的一些方法)

Node.js的主要功能是os(系统操作)、file(文件操作)、net(网络操作)、database(数据库操作)

在js中的顶层对象是window,其实在js中也有global对象,只是不对外访问而已。 在node中的顶层对象是global。注意:在node中也没有window对象

我们通过 var 申明的变量并非全局而是该模块作用域下的

node基础—概述与安装的更多相关文章

  1. OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务

    OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务   1.  OpenVAS基础知识 OpenVAS(Open Vulnerability Assessment Sys ...

  2. Windows下Node.js+Express+WebSocket 安装配置

    Linux参考: Linux安装Node.js 使用Express搭建Web服务器 Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V ...

  3. 【MySQL】MySQL无基础学习和入门之一:数据库基础概述和实验环境搭建

    数据库基础概述  大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以 ...

  4. C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节

    C++框架_之Qt的开始部分_概述_安装_创建项目_快捷键等一系列注意细节 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C++图形用户界面应用程序框架.它为应用程序开发者提供建立艺术级图形界面 ...

  5. Linux基础三(软件安装管理)

    目录: 一.Linux 中软件包的分类 1.源码包 2.二进制包 3.源码包 4.软件安装的选择 二.软件安装之 RPM 1.背景知识 2.准备知识 3.安装升级与卸载 4.查询校验与提取 三.软件安 ...

  6. ElasticSearch入坑指南之概述及安装

    ---恢复内容开始--- ElasticSearch入坑指南之概述及安装 了解ElasticSearch ElasticSearch(简称ES)基于Lucene的分布式全文检索引擎.使用ES可以实现近 ...

  7. Flask 学习(一)概述及安装

    Flask 概述及安装 Flask 简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 官方网址 ...

  8. light,node.js,webStorm 安装项目搭建

    light,是一个移动应用开发平台,旨在降低H5.APP的开发门槛.运维成本.提升移动应用产品的持续交付能力. 用light可以做什么 快速组织移动H5应用的协作开发.调试.应用发布,发布的应用可直接 ...

  9. Node.js 概述

    JavaScript 标准参考教程(alpha) 草稿二:Node.js Node.js 概述 GitHub TOP Node.js 概述 来自<JavaScript 标准参考教程(alpha) ...

随机推荐

  1. SET NOCOUNT { ON | OFF }

    当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数) SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数. 当 SET NOC ...

  2. openssl基本原理 + 生成证书 + 使用实例

    前期准备 : 安装xampp:打开文件E:\xampp\apache\bin\openssl.exe  右键 以管理员身份运行 ------转载自 https://blog.csdn.net/oldm ...

  3. C#对接----韵达开发平台--取电子面单

    引子 最近根据业务的一些需求,所以放弃从快递鸟对接去电子面单,转而直接对接韵达开发平台:http://open.yundasys.com/ ,中间踩了一些坑,借此做了一个小案例给大伙,瞅瞅,若有需改进 ...

  4. [android] 安卓进程优先级&为什么使用服务

    应用程序:一组组件(activity service provider receiver)的集合 一般情况下,一个应用程序对应一个进程 一般情况下,关闭掉应用,关闭掉所有界面,应用程序的进程还在后台运 ...

  5. 【Java每日一题】20170316

    20170315问题解析请点击今日问题下方的“[Java每日一题]20170316”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...

  6. IE6不兼容问题

    IE6不兼容问题 一.选择器兼容问题          1.交集选择器从IE7以上兼容(div.special): 2.儿子选择器(>):IE7开始兼容,IE6不兼容. 3.序选择器(first ...

  7. layui layer select 选择被遮挡

    在编程的时候, layer弹窗中的select 经常会遇到被遮挡的情况: 解决方法:在页面里面找到对应div的class 给overflow新的属性visible即可(默认值.内容不会被修剪,会呈现在 ...

  8. CSS单位【记录】

    1.长度 2.角度 3.时间 4.分辨率 5.颜色 6.函数 7.生成内容 8.图像 9.数字 1.长度 <length>:数字和单位之间没有空格,0之后的长度单位是可选的 相对长度单位 ...

  9. 洛谷P2860 [USACO06JAN]冗余路径Redundant Paths(tarjan求边双联通分量)

    题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1. ...

  10. clipboard.js -- js实现将文本复制到剪贴板的方法

    资源 推荐使用:clipboard.js 官方教程地址:https://clipboardjs.com/#example-text 官方github地址:https://github.com/zeno ...