Node.js之路【第一篇】初识Node.js

什么是Node.js

1、Node.js就是运行在服务端的JavaScrip。

2、Node.js是一个基于Chrome JavaScrip运行时简历的一个平台。

3、Node.js是一个非阻塞I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快。

看下官网的介绍:

Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast,
scalable network applications. Node.js uses an event-driven, non-blocking I/O model
that makes it lightweight and efficient, perfect for data-intensive real-time
applications that run across distributed devices.

Node.js的使用场景

在看他的使用场景之前先了解下Node js 的优缺点吧

一、Node js特点

1、他是一个JavaScript运行环境

2、依赖于Chrome V8引擎进行代码解析

3、事件驱动非阻塞I/O

4、轻量、可伸缩、适用于实时数据交互应用

5、单进程,单线程

什么是事件驱动?什么是非阻塞I/O可以参考我的文章,这里面详细的介绍了异步IO模型,可以过去他去了解Node js的事件驱动和非阻塞I/O带来的好处。

http://www.cnblogs.com/luotianshuai/p/5098408.html

二、Node js优、缺点

优点:

1、并发高是选择Node js重要的优点

2、适合I/O密集型应用

缺点

1、不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;

解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起。

2、因为是单进程单线程的只能使用一个CPU,不能充分使用CPU导致资源的浪费

3、可靠性低、一呆代码某个环节崩溃,整个系统都将会崩溃

原因:他是单线程、但单进程的

解决方法:

3.1、Nginx反向代理负载均衡开多个进程,绑定多个端口

3.2、开多个进程监听同一个端口,使用cluster模块

4、开源组件库质量参差不齐,更新快,向下不兼容

5、Debug不方便,错误没有stack trace

三、适合Node js的场景

1、Restful API

这是NodeJS最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。

2、统一Web应用的UI层

目前MVC的架构,在某种意义上来说,Web开发有两个UI层,一个是在浏览器里面我们最终看到的,另一个在server端,负责生成和拼接页面。

不讨论这种架构是好是坏,但是有另外一种实践,面向服务的架构,更好的做前后端的依赖分离。如果所有的关键业务逻辑都封装成REST调用,就意味着在上层只需要考虑如何用这些REST接口构建具体的应用。那些后端程序员们根本不操心具体数据是如何从一个页面传递到另一个页面的,他们也不用管用户数据更新是通过Ajax异步获取的还是通过刷新页面。

3、大量的Ajax请求

例如个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,或者弹幕系统大量的用户同时通过评论,NodeJS能响应大量的并发请求。  总而言之,NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景。

注:Node js非常不错它可以实现很多应用,当我们要使用它完成某个应用的时候,需要考虑的是适不适合用它来做。

Node js安装配置

1、下载源码 更多版本:https://nodejs.org/en/download/

cd /work/app/
wget http://nodejs.org/dist/v0.10.24/node-v0.10.24.tar.gz

2、解压源码

tar -zxvf node-v0.10.24.tar.gz

3、编译安装

cd node-v0.10.24
./configure --prefix=/work/app
make
make install

4、配置NODE_HOME,进入profile编辑环境变量

vim /etc/profile

设置nodejs环境变量,在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容

export NODE_HOME=/work/app/node/0.10.24
export PATH=$NODE_HOME/bin:$PATH

:wq保存并退出,编译/etc/profile 使配置生效

source /etc/profile

验证是否安装配置成功

node -v

输出 v0.10.24 表示配置成功

npm模块安装路径

/work/app/node/0.10.24/lib/node_modules

MAC 安装Node js

服务器上安装了Node js之后为了快速的开发Node js所以在MAC上安装Node js并使用pycharm进行开发

一、安装Node js

https://nodejs.org/en/download/

下载并安装Node js  它将在你的机器上安装 Node.js 和 npm (node package manager).

Node js 第一个应用

如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi。

从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要 PHP 来处理。

不过对 Node.js 来说,概念完全不一样了。使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器。事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。有点类似我大Django和Tornado

在我们创建 Node.js 第一个 "Hello, World!" 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的:
required 模块:我们可以使用 require 指令来载入 Node.js 模块。
创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
接收请求与响应请求 :服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

1、导入Node js模块【和python中的import一个概念】

时间: 2024-08-06 10:30:33

Node.js之路【第一篇】初识Node.js的相关文章

深入理解javascript对象系列第一篇——初识对象

× 目录 [1]定义 [2]创建 [3]组成[4]引用 前面的话 javascript中的难点是函数.对象和继承,前面已经介绍过函数系列.从本系列开始介绍对象部分,本文是该系列的第一篇——初识对象 对象定义 javascript的基本数据类型包括undefined.null.boolean.string.number和object.对象和其他基本类型值不同的是,对象是一种复合值:它将许多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值 于是,对象也可看做是属性的无序集合,每个属性都是一个

Node.js基础:第一篇

目录 第一章:Node.js概述 1.1-前端为什么要学习Node.js 1.2-后端开发要做什么 1.3-前端为什么选择Node.js 1.4-Node.js是什么 第二章:Node.js环境搭建 2.1-下载安装 2.2-安装常见问题 2.3-PATH环境变量 第三章:Node.js快速入门 3.1-Node.js组成 3.2-Node.js牛试小刀 3.3-Node.js全局对象global 第一章:Node.js概述 1.1-前端为什么要学习Node.js 能够和后端程序员更加紧密的配合

我们一起学习WCF 第一篇初识WCF(附源码供对照学习)

前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wcf所遇到的困难以及解决方案一点点记下来,可能还有很多不足之处那我们一起共同学习.在学习之前我们有必要初步的看下百度百科对wcf的解释,让我们心中有这一个概念,然后建立项目,然后再次看概念,然后在去更深层的建立项目,然后再去理解这样反复的去做我相信可以做好wcf.那么下面我就会从初识wcf,wcf消息

Angular JS 基础应用--第一篇

  前  言          Android应用开发中,有一些功能虽然能够使用原生JS来实现,但是会比较的复杂,因此一些相应的框架应运而生了.框架相对于原生JS而言,从主观上来说,最大的改变就是代码大幅度的减少了.在使用上,也比较方便易懂.因此,框架一经诞生就广受欢迎. 在本章,就将详细介绍其中一种框架的使用----Angular JS. AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML. angularJS表达式   1.angularJS使用双大括号{

vue+mongoose+node.js项目总结第一篇_图片文件上传

一.前言 项目演示:每个新用户登录之后会有个默认的头像,用户可以根据自己选择自己的头像图片进行更改. 二.主要内容 1.需求实现的思路分析. 第一步:用户点击按钮选择图片其实是间接触发input图片选择 第二步:input表单被监听change事件 第三步:选择图片,然后将图片用canvas画在预览框处 第四步:点击“确定按钮”,请求后端接口配合云存储,将图片上传到云存储上 第五步:利用云存储器中生成的图片url地址替换掉原来的地址 2.具体实现      2.1总体思路  2.2前台实现部分

Node.js入门教程 第一篇 (环境配置及概念原理)

Node.js 概念 Node.js本质上是使用Google的V8引擎制作出来的服务框架.V8本身是Google为了解决Chrome浏览器的性能问题而制作的前端引擎(开源).本身依托于浏览器引擎,这也是为什么Node.js使用的是前端的JavaScript语言编程. V8的诞生是Google为了解决JavaScript的性能问题,用了内联缓存和隐藏类技术实现的前端引擎.V8使用C++编写,也因此V8可以在C++项目中完美兼容使用. V8被Google使用在大多数产品中,如Chrome浏览器,安卓

Python成长之路第一篇(2)-初识列表和元组

可以将列表和元组当成普通的"数组",他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括,元素的个数和值可以改变,而元组用({})包括,不能更改.元组可以看成是只读的列表 一.初识列表 1.下面是一个正常的列表 >>> lis = ['xiaoyuan',25] 在序列中,可以包含其他的序列,也就是列表可以包含列表元组等 >>> lis =

Python成长之路第一篇(1)__字符串初识

在很多编程的书中都会以print  "Hello,world!"这样的而一个程序为开始,那么hello,world是什么呢?这就是本章讲解的字符串(也即是一串字符) 一.单引号,双引号和转义引号 (1)在一般的时候 'Hello,world!'和"Hello,world!"是没有什么区别的,那么为什么会两个都可以用呢?是因为在某些情况下,他们会排上用处 1 >>> "Hellow,world" 2 'Hellow,world' 

Python成长之路第一篇(4)_if,for,while条件语句

有了以上的基本基础,已经上面写的几个小练习,大家肯定有很多的不满,比如查询为什么查询一次就退出了呢?下面我们来学习条件语句 一.万恶的加号 以前我们在print的时候如果要加上变量都有是使用+来作为连接,但是这样做是不好的 因为在使用加号的时候,会在内存中开辟新的内存地址来存放新的内容这样做的坏处就是增加了内存的消耗 那么我们该怎么办呢? (1)字符串格式化 ①内置占位符 Python 支持格式化字符串的输出 .尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符

【python游戏编程之旅】第一篇---初识pygame

本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 参考书籍:<python游戏编程入门> 一.pygame简介 Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发.允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块可以支持多个操作系统.用它来开发小游戏非常适合. 可以去http://www.pygame.org/hifi.html 下载并安装使用pygame. 二