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. freemarker中的split字符串分割(十六)

    1.简易说明 split分割:用来根据另外一个字符串的出现将原字符串分割成字符串序列 2.举例说明 <#--freemarker中的split字符串分割--> <#list &quo ...

  2. JavaScript设计模式(9)-享元模式

    享元模式 1. 介绍 一种优化模式 适合解决因创建大量类似对象而累积性能问题 javaScript 代码可能很快就用光浏览器的内容,通过把大量独立对象转化为少量共享对象,可以降低运行 Web 应用所需 ...

  3. 利用shell脚本实现对mysql数据库的备份

    #!/bin/bash #保存备份个数 number=3 #备份保存路径 backup_dir=/root/mysqlbackup #日期 dd=`date +%Y%m%d` #备份工具 tool=m ...

  4. UML类图10分钟快速入门

    虚线箭头指向依赖: 实线箭头指向关联: 虚线三角指向接口: 实线三角指向父类: 空心菱形能分离而独立存在,是聚合: 实心菱形精密关联不可分,是组合: 原文作者:圣杰 原文地址:http://www.j ...

  5. redis和spring整合使用

    第一步,在项目中加入redis的pom代码: <dependency> <groupId>redis.clients</groupId> <artifactI ...

  6. Luogu Dynamic Ranking (带修改的主席树)

    题目大意: 网址:https://www.luogu.org/problemnew/show/2617 给定一个序列a[1].a[2].....a[N],完成M个操作,操作有两种: [1]Q i j ...

  7. 【BZOJ2599】Race(点分治)

    [BZOJ2599]Race(点分治) 题面 BZOJ权限题,洛谷 题解 好久没写过点分治了... 在ppl的帮助下终于想起来了 orz ppl 首先回忆一下怎么求有没有正好是\(K\)的路径 维护一 ...

  8. THUWC2018滚粗记

    THUWC2018滚粗记 前言 又是一篇滚粗记, 不过可能还要写过很多很多篇滚粗记, 才会有一篇不是滚粗记的东西啦 总而言之,我现在还是太菜了 还要过一大段时间我才会变强啦 Day -inf 联赛考完 ...

  9. Python中的栈溢出及解决办法

    1.递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示, ...

  10. 实战绕过某医院的waf

    最近遇到一个注入,我们直接来看吧.还是常规的单引号: 是一个很常规的注入.我们来尝试下获取一些信息: 然后发现是有防火墙的,安全狗.安全狗有很多针对php+mysql的绕过方法,比如这样:/*!uni ...