Node

创建node应用

  1. 引入require模块   var http = require("http");
  2. 创建服务器   http.createServer()

绑定端口: .listen()

request, response 参数来接收和响应数据

至此完成了一个可以工作的服务器

REPL(交互式解释器)

表示一个电脑环境,类似window和Linux;可以进行运算,_用来获取上一次的结果;

常用命令:

Ctrl + c 退出当前终端

Ctrl + c 两次 or  Ctrl + d 退出repl

Tab 列出当前命令

.help 列出使用命令

.break or .clear退出多行表达式

.save filename - 保存当前的 Node REPL 会话到指定文件

.load filename - 载入当前 Node REPL 会话的文件内容。

回调函数

Node的异步变成的直接体现就是回调

Eg:文件的同步读取与异步读取

异步读取(readFile)文件的时候由操作系统在后台进行读取,不会阻碍下面的代码执行。

同步读取(readFileSync)的时候会阻碍下面的代码执行;

事件循环

Node单线程单进程,但支持回调和并发。

  1. 引入event模块  var  events = require(‘event’);
  2. 创建eventEmitter模块  var eventEmitter = events. EventEmitter()
  3. 绑定事件处理程序  eventEmitter.on(‘eventName’,eventHandler)
  4. 触发事件  eventEmitter.emit(‘eventName’)

EventEmitter

异步 I/O 操作在完成时都会发送一个事件到事件队列;

在使用的时候在对象中继承它,原因有:

1.首先,具有某个实体功能的对象实现事件符合语义,事件的监听和发生应该是一个对象的方法。

2.其次 JavaScript 的对象机制是基于原型的,支持 部分多重继承,继承 EventEmitter 不会打乱对象原有的继承关系。

Buffer

专门存放二进制数据的缓存区

创建buffer类:

1.Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0

2.Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据

3.Buffer.allocUnsafeSlow(size)

4.Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)

5.Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。

6.Buffer.from(buffer): 复制传入Buffer 实例的数据,并返回一个新的 Buffer 实例

7.Buffer.from(string[, encoding]):返回一个被 string 的值初始化的新的 Buffer 实例

还有许多读取写入长度和JSON方法就不一一列举了

Stream

所有的 Stream 对象都是 EventEmitter 的实例.

从流中读取数据:

var  fs = require(‘fs’)

  1. 创建可读流:fs.createReadStream()
  2. 设置编码:  .setEncoding()
  3. 处理事件流: data、on、error

写入流:

var  fs = require(‘fs’);

  1. 创建可写流: fs.createWriteStream()
  2. 写入数据:  .write(data,’UTF-8’)
  3. 标记末尾:  .end()

管道流:

1.创建可读流

2.创建可写流

3.read.pipe(write)

链式流:

通过连接输出流到另外一个流并创建多个流操作链的机制

模块系统

把一个对象封装在模块中     module.export = function(){ }

函数

与JS的函数差不多

全局对象

Node的全局对象时global,所有全局变量都是它的属性;

全局变量:

在最外层定义的变量;

全局对象的属性;

隐式定义的变量(未定义直接赋值的变量)。

一些具体的全局变量和方法在使用的时候积累

常用工具

util 常用的函数集合

util.inspect()----将任意对象转化为字符串

文件系统(fs)

异步和同步

异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息。

打开文件   .open()

获取文件信息   .stat()

写入文件  .writeFile()

== 对于文件的操作

GET / POST请求

GET请求:

请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分

url.parse()解析URL中的参数

POST请求:

内容全部的都在请求体中

Express框架

Express官网: http://expressjs.com/

Express4.x API 中文版: Express4.x API Chinese

Express4.x API:http://expressjs.com/zh-cn/4x/api.html

node 基础精简的更多相关文章

  1. BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js

    BAT 前端开发面经 —— 吐血总结   目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...

  2. node基础篇二:模块、路由、全局变量课堂(持续)

    今天继续更新node基础篇,今天主要内容是模块.路由和全局变量. 模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例 ...

  3. node基础-文件系统-文件写操作

    文件操作频率最高的就是读跟写.nodejs的文件的读取API在<node基础-文件系统-读取文件>里已经简单介绍过,本文就简单介绍下nodejs的文件写API. nodejs的文件操作均提 ...

  4. node基础知识

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个可以让 JavaScript 运行在服务器端的平台 Node.js 使用了一个事件驱动.非阻塞式 I/O ...

  5. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  6. node基础01:简要介绍

    1.node vs php 优点 性能高(机制问题) 开发效率高(省了不少优化的事) 应用范围广(可以开发桌面系统,electron框架) 缺点 新,人少 中间件少 IDE不完善 2.node的劣势和 ...

  7. Node基础:域名解析DNS(ok)

    写在前面 Nodejs学习手册,基础总结之DNS模块.对从事web开发的同学来说,DNS解析再熟悉不过,在nodejs中也有一个模块可以完成dns解析的工作,使用非常简单.直接进入主题. 域名解析:d ...

  8. node基础 --全局

    全局对象: global:永远使用var 定义变量以避免引入全局变量; process:所有全局执行上下文的内容都在process对象中: 模块和包: 模块:一个Node.js 文件就是一个模块,这个 ...

  9. Vue.js 运行环境搭建详解(基于windows的手把手安装教学)及vue、node基础知识普及

    Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架——只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...

随机推荐

  1. MyEclipse弹出提示窗口

    MyEclipse弹出提示窗口 1.弹窗如下

  2. freemarker写select组件报错总结(一)

    1.具体错误如下 六月 25, 2014 11:26:29 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template pr ...

  3. java.lang.ArrayIndexOutOfBoundsException

    1.错误描述 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at com.you.m ...

  4. Android破解学习之路(七)—— 乐秀视频编辑 内购破解 专业版 价值25元的破解

    按照之前的支付宝破解,搜索9000的十六进制,之后... 但是,这样测试的时候,没有破解成功,便是继续研究 搜索关键字支付失败,之后找到了指定的smali文件,观察了许久,发现里面有个switch跳转 ...

  5. 【HAOI2015】树上操作(树链剖分)

    题面 Description 有一棵点数为N的树,以点1为根,且树点有边权.然后有M个操作,分为三种: 操作1:把某个节点x的点权增加a. 操作2:把某个节点x为根的子树中所有点的点权都增加a. 操作 ...

  6. Luogu3092:[USACO13NOV]No Change

    题面 传送门 Sol 状压一下\(k\),\(f[S]\)表示用过的硬币集合为\(S\)能买到的物品个数 # include <bits/stdc++.h> # define RG reg ...

  7. css系统学习网站

    最近系统学习一下css样式,找到一个不错的网站.http://css.doyoe.com/

  8. Java中的代理模式--静态代理和动态代理本质理解

    代理模式定义:为其他对象提供了一种代理以控制对这个对象的访问. 代理模式的三种角色: Subject抽象主题角色:抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求. Real ...

  9. WCF服务寄宿到IIS

    一.WCF简介: Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台.整合了原有的wind ...

  10. Java设计模式(六)Adapter适配器模式

    一.场景描述 “仪器数据采集器”包含采集数据以及发送数据给服务器两行为,则可定义“仪器数据采集器”接口,定义两方法“采集数据capture”和“发送数据sendData”. “PDF文件数据采集器”实 ...