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. zTree实现多选树

    zTree实现多选树 1.实现源码 <!DOCTYPE html> <html> <head> <title>多选树</title> < ...

  2. 使用NPOI导入导出标准Excel

    尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...

  3. JDBC连接池-自定义连接池

    JDBC连接池 java JDBC连接中用到Connection   在每次对数据进行增删查改 都要 开启  .关闭  ,在实例开发项目中 ,浪费了很大的资源 ,以下是之前连接JDBC的案例 pack ...

  4. windows打开和关闭默认共享方法汇总

    Windows启动时都会默认打开admin$ ipc$ 和每个盘符的共享,对于不必要的默认共享,一般都会把它取消掉,可当又需要打开此默认共享时,又该从哪里设置呢.经过自己的验证,汇总出一下方法. 一: ...

  5. [SDOI2015]星际战争

    水题啦 网络流+二分 误差才10^-3,乱搞直接开longlong暴力每个都乘1000,输出时除一下就好了 # include <bits/stdc++.h> # define IL in ...

  6. Java的深拷贝和浅拷贝

    关于Java的深拷贝和浅拷贝,简单来说就是创建一个和已知对象一模一样的对象.可能日常编码过程中用的不多,但是这是一个面试经常会问的问题,而且了解深拷贝和浅拷贝的原理,对于Java中的所谓值传递或者引用 ...

  7. 【learning】[待完善]关于辛普森公式的一点想法

    [吐槽] 嗯一开始接触到这个东西其实是因为某道凸包的题目好像可以用这个奇妙的方法来算 但其实了解也不是很深,只是觉得这个东西十分有意思, 所以先稍微写一下自己的想法,了解更多之后慢慢完善 [正题] 首 ...

  8. 使用JSONP实现跨域

    什么是跨域? 简单的来说,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即"同源策略".而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通 ...

  9. 32.Django form组件

    Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 创建Form类时,主要涉及到 [ ...

  10. char码值对应列表大全

    Char("0") 为0的字符Char("1") Char("2") Char("3") Char("4&qu ...