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实现更新根节点中第i个节点的名称

    zTree实现更新根节点中第i个节点的名称 1.实现源码 <!DOCTYPE html> <html> <head> <title>zTree实现基本树 ...

  2. C# 通过smtp服务器进行邮件发送 MailHelper

    C# 通过smtp服务器进行邮件发送 MailHelper.cs using System; using System.Data; using System.Configuration; using ...

  3. javaWeb之邮箱发送(邮箱客户端配置)

    这里使用的是本机的邮箱服务器  , 代码执行条件: 1.·邮箱服务器  , 下载地址   密码   s4xn 邮箱服务器配置: 1):安装 2):打开服务器 红色部分是默认账号,不用处理 3)系统设置 ...

  4. <训练赛> 垃圾陷阱

    垃圾陷阱 时间限制: 1 Sec  内存限制: 128 MB提交: 78  解决: 38[提交][状态][讨论版] 题目描述 卡门--农夫约翰极其珍视的一条Holsteins奶牛--已经落了到&quo ...

  5. C#图解教程 第二十四章 反射和特性

    反射和特性 元数据和反射Type 类获取Type对象什么是特性应用特性预定义的保留的特性 Obsolete(废弃)特性Conditional特性调用者信息特性DebuggerStepThrough 特 ...

  6. RobotFramework自动化测试框架的基础关键字(一)

    1.1.1        如何搜索RobotFramework的关键字 有两种方式可以快速的打开RIDE的关键字搜索对话框 1.选择菜单栏Tools->Search Keywords,然后会出现 ...

  7. Xcode 9.0 新增功能大全

    Xcode是用于为Apple TV,Apple Watch,iPad,iPhone和Mac创建应用程序的完整开发人员工具集.Xcode开发环境采用tvOS SDK,watchOS SDK,iOS SD ...

  8. [JSOI2008]球形空间产生器sphere

    Sol 设一个dis,就有n+1个方程,消掉dis,就只有n个方程,组成一个方程组,高斯消元就好(建议建立方程时推一下,很简单) # include <bits/stdc++.h> # d ...

  9. angular中$q.all用法

    $q.all是用于执行多个异步任务进行回调,它可以接受一个promise的数组,或是promise的hash(object).任何一个promise失败,都会导致整个任务的失败. 例1:接受一个pro ...

  10. ValueError: Cannot feed value of shape ..

    这里x_,y_是两个数字,当我运行时 with tf.Session() as sess: #定义session对象生成器 for step in range(201) : sess.run(trai ...