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. table行随鼠标变色

    table行随鼠标变色 1.设计表格 <body class="html_body"> <div class="body_div"> & ...

  3. Deadlock found when trying to get lock; try restarting transaction

    1.错误描述 [ERROR:]2015-06-09 16:56:19,481 [抄送失败] org.hibernate.exception.LockAcquisitionException: erro ...

  4. GStreamer 简化 Linux 多媒体开发

    Streamer 是 GNOME 桌面环境下用来构建流媒体应用的开源多媒体框架(framework),其目标是要简化音/视频应用程序的开发,目前已经能够被用来处理像 MP3.Ogg.MPEG1.MPE ...

  5. web开发性能优化---UI界面篇

    1.尽量采用div+css布局 DIV+CSS相比较与表格布局的优势: a.代码精简 使用DIV+CSS布局,页面代码精简,这一点对XHTML有所了解的都知道.代码精简所带来的直接好处有两点:一是提高 ...

  6. python version 2. required,which was not found in the registry 解决方案

    不能在注册表中识别python2.7 新建一个register.py 文件 import sys from _winreg import * # tweak as necessary version ...

  7. textarea的不可拉伸和不可编辑

    不可拉伸: textarea { resize: none; } 不可编辑: 第一种方法: <textarea disabled></textarea> 第二种方法: < ...

  8. Eclipse远程debug服务器

    一,找端口号 二,Eclipse配置 三,测试是否成功 四,结束远程debug

  9. Struts2的数据封装

    在很多的实际开发场景中,页面提交请求参数Action ,在Action中接收参数并对接收的数据进行封装.封装到一个JavaBean中,将JavaBean传递给业务层中.Struts2数据封装分为两类: ...

  10. 【BZOJ3669】【Noi2014】魔法森林(Link-Cut Tree)

    [BZOJ3669][Noi2014]魔法森林(Link-Cut Tree) 题面 题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n ...