相关介绍

1、Node.js或者Node,是一个可以让javascript运行在服务器端的平台。

2、Node.js是一个为实时Web应用开发而诞生的语言,它从诞生之初就充分考虑了再实时响应、超大规模数据要求下的可扩展性。这使得它摒弃了传统平台依靠多线程来实现高并发的设计思路,而是采用了单线程、异步式IO、事件驱动式的程序设计模型。

3、Node.js采用现在应用于chrome的Javascript引擎V8。V8号称目前世界上最快的Javascript引擎。

4、Node.js遵循CommonJs规范,但是也并不完全遵循。

Hello World

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');

Node包管理器(npm)

npm是一个由Node.js官方提供的第三方包管理工具,就像PHP的Pear、Python的PyPI一样。npm是一个完全由javascript实现的命令行工具,通过Node.js执行,因此严格来说它并属于Node.js的一部分。

一些概念

1、REPL

在命令行使用node不加参数则会进入node的REPL(read-eval-print loop:输入-求值-输出循环)模式,就像chrome的console,你可以在其中输入javascript代码,然后立即求值

2、使用supervisor

supervisor可以帮助你件事对代码的改动,然后重新启动Node.js,在开发中调试时很方便

npm install -g supervisor

3、模块和包

模块的包的概念是参照了CommonJs的标准,Node.js中一个文件就是一个模块,可以使用require接口获取一个模块,并且是单次加载

4、模块的类型

模块分为两大类型,即核心模块和文件模块,核心模块就是Node官方提供的API模块,已经编译成了二进制文件,可以使用require直接调用,而文件模块就是存储为文件的模块,可以是js,json或者C++文件。

文件模块的加载有两种方式,一种是require的参数以"/","./","../"开头的路径形式,则使用按路径加载,按照参数值使用绝对或相对路径方式找到对应文件并加载。另外一种是通过查找node_moudles文件加载,如果require的参数并非路径的形式,那么包管理器会从当前目录的node_modules目录开始查找,找不到则查找上一级目录

5、本地模式和全局模式

使用npm安装包的时候会有本地模式和全局模式两种情况。
a)默认的npm install就是本地模式,即把包安装到当前目录的node_modules子目录下面。在使用require加载模块是会尝试搜索node_modules子目录,因此本地模式安装的包可以被直接引用
b)全局模式:在安装包时使用参数-g就是采用的全局模式

npm install -g package_name

使用全局模式安装时会注册PATH环境变量,可以在命令行中调用,因此使用全局模式安装包是为了在命令行中调用相关功能

6、包的发布

npm有一套以CommonJs为基础的包规范(这里是指对目录结构标准的定义),在目录中使用npm init,然后填写一些交互式问题就可以产生一个符合标准的package.json,然后再使用npm publish就可以将包发布到官网了

核心模块

1、全局对象

global是Node.js中的全局对象(即宿主对象),类似于浏览器中的window

2、全局变量

全局对象的属性,其一在所有包中直接调用(如process、console)

3、几个重要模块

a)常用工具util

xxx

b)事件驱动events

events是node中最重要的模块,因为node的架构就是基于事件的,events模块不仅用于用户代码与Node下层事件循环的交互,还几乎被所有的模块依赖。
events模块只提供一个对象events.EventEmitter,核心就是事件发射与事件监听功能的封装,例如:

var events = require("events");
var emitter = new events.EventEmitter();
//添加事件监听
emitter.on("someEvent",function(arg1,arg2){
console.log("xxx");
});
//触发事件
imitter.emit("someEvent","arg1","arg2");

c)文件系统fs

提供对操作系统文件的读取、写入、改名、删除、遍历目录等功能的封装。并且fs模块中的操作都提供了同步和一部两个版本

fs.readFile
fs.open
fs.read

d)HTTP服务器

Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的客户端。http.Server是http模块中的HTTP服务器对象,node的所有基于HTTP协议的系统都是基于它来实现的,Hello World中就实现了一个简易的服务器。

Node不适用的场景

1、计算密集型的程序

2、单用户多任务型应用

3、逻辑十分复杂的事务

Node.js更善于处理那些逻辑简单但访问频繁的任务。

Node.js学习笔记的更多相关文章

  1. 一点感悟:《Node.js学习笔记》star数突破1000+

    写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...

  2. Node.js学习笔记(3):NPM简明教程

    Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...

  3. 系列文章--Node.js学习笔记系列

    Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...

  4. Node.js学习笔记(2):基本模块

    Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...

  5. Node.js学习笔记(1):Node.js快速开始

    Node.js学习笔记(1):Node.js快速开始 Node.js的安装 下载 官方网址:https://nodejs.org/en/ 说明: 在Windows上安装时务必选择全部组件,包括勾选Ad ...

  6. Node.js学习笔记(4):Yarn简明教程

    Node.js学习笔记(4):Yarn简明教程. 引入Yarn NPM是常用的包管理工具,现在我们引入是新一代的包管理工具Yarn.其具有快速.安全.可靠的特点. 安装方式 使用npm工具安装yarn ...

  7. Node.js学习笔记(一)

    1.回调函数 node是一个异步事件驱动的平台,所以在代码中我们经常需要使用回调函数. 例: setTimeout(function(){ console.log('callback is calle ...

  8. Node.js学习笔记(一):快速开始

    最近接了一个node项目,虽然最后顺利完成了,但是由于第一次实战,整个过程是赶出来的,许多地方一知半解.现在项目结束了,就静下心来系统地学一学,理一理,读书不忘拿笔,既然读书了,当然就要记点东西.一方 ...

  9. Node.js学习笔记(一)基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  10. node.js学习笔记(三)——事件循环

    要理解事件循环,首先要理解事件驱动编程(Event Driven Programming).它出现在1960年.如今,事件驱动编程在UI编程中大量使用.JavaScript的一个主要用途是与DOM交互 ...

随机推荐

  1. 更换项目jdk版本

    现在开发用的都是1.7版本,但是以前老的服务器上可能是1.6jdk,这时候就需要我们将项目重新用1.6编译; 修改三个文件(三个地方)即可; 第一步,右键单击项目,选择properties,修改1:J ...

  2. Jetpack 由 WordPress.com 出品

    官网:https://jetpack.com/ Jetpack 由 WordPress.com 出品. Jetpack 通过为您提供访客统计数据和安全服务.加速图像传输以及帮您获得更多浏览量,可以简化 ...

  3. viewgager

    CycleRotationView:自定义控件,主要功能是实现类似与各种商城首页的广告轮播图.其实像这种比较常见的自定义控件早就满大街了,虽然说"不要重复发明轮子",但是不代表不用 ...

  4. linux进程通信

    e14: 进程间通信(进程之间发送/接收字符串/结构体): 传统的通信方式: 管道(有名管道 fifo,无名管道 pipe) 信号 signal System V(基于IPC的对象):         ...

  5. MIT 6.828 JOS学习笔记11 Exercise 1.8

    Exercise 1.8       我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练 ...

  6. Redis集群搭建1

    wget .168.0.201:6379 192.168.0.201:6380 192.168.0.201:6381 192.168.0.202:16379 192.168.0.202:16380 1 ...

  7. JAVA集合类型详解

    一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...

  8. 图论 - Travel

    Travel The country frog lives in has nn towns which are conveniently numbered by 1,2,…,n. Among n(n− ...

  9. 《HTTP权威指南》大块儿头

    看到这样的一本书,胡乱翻开看看里面的内容,我觉得我又浮躁了.真厚啊!能学多少就学多少吧. 看看提要,这本书主要想讲的是HTTP和相关Web技术的.关于这方面的内容,知道的不多.

  10. Mac系统中配置Tomcat环境

    第一步:下载Tomcat 下载地址:http://tomcat.apache.org/download-80.cgi 直接下载如图选中的即可 第二步: 下载完成后,解压,随意放入目录.如我就把它放在/ ...