node 基础精简
Node
创建node应用
- 引入require模块 var http = require("http");
- 创建服务器 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单线程单进程,但支持回调和并发。
- 引入event模块 var events = require(‘event’);
- 创建eventEmitter模块 var eventEmitter = events. EventEmitter()
- 绑定事件处理程序 eventEmitter.on(‘eventName’,eventHandler)
- 触发事件 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’)
- 创建可读流:fs.createReadStream()
- 设置编码: .setEncoding()
- 处理事件流: data、on、error
写入流:
var fs = require(‘fs’);
- 创建可写流: fs.createWriteStream()
- 写入数据: .write(data,’UTF-8’)
- 标记末尾: .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 基础精简的更多相关文章
- BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js
BAT 前端开发面经 —— 吐血总结 目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...
- node基础篇二:模块、路由、全局变量课堂(持续)
今天继续更新node基础篇,今天主要内容是模块.路由和全局变量. 模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例 ...
- node基础-文件系统-文件写操作
文件操作频率最高的就是读跟写.nodejs的文件的读取API在<node基础-文件系统-读取文件>里已经简单介绍过,本文就简单介绍下nodejs的文件写API. nodejs的文件操作均提 ...
- node基础知识
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个可以让 JavaScript 运行在服务器端的平台 Node.js 使用了一个事件驱动.非阻塞式 I/O ...
- Node基础篇(文件操作)
文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...
- node基础01:简要介绍
1.node vs php 优点 性能高(机制问题) 开发效率高(省了不少优化的事) 应用范围广(可以开发桌面系统,electron框架) 缺点 新,人少 中间件少 IDE不完善 2.node的劣势和 ...
- Node基础:域名解析DNS(ok)
写在前面 Nodejs学习手册,基础总结之DNS模块.对从事web开发的同学来说,DNS解析再熟悉不过,在nodejs中也有一个模块可以完成dns解析的工作,使用非常简单.直接进入主题. 域名解析:d ...
- node基础 --全局
全局对象: global:永远使用var 定义变量以避免引入全局变量; process:所有全局执行上下文的内容都在process对象中: 模块和包: 模块:一个Node.js 文件就是一个模块,这个 ...
- Vue.js 运行环境搭建详解(基于windows的手把手安装教学)及vue、node基础知识普及
Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架——只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...
随机推荐
- MyEclipse弹出提示窗口
MyEclipse弹出提示窗口 1.弹窗如下
- freemarker写select组件报错总结(一)
1.具体错误如下 六月 25, 2014 11:26:29 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template pr ...
- java.lang.ArrayIndexOutOfBoundsException
1.错误描述 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at com.you.m ...
- Android破解学习之路(七)—— 乐秀视频编辑 内购破解 专业版 价值25元的破解
按照之前的支付宝破解,搜索9000的十六进制,之后... 但是,这样测试的时候,没有破解成功,便是继续研究 搜索关键字支付失败,之后找到了指定的smali文件,观察了许久,发现里面有个switch跳转 ...
- 【HAOI2015】树上操作(树链剖分)
题面 Description 有一棵点数为N的树,以点1为根,且树点有边权.然后有M个操作,分为三种: 操作1:把某个节点x的点权增加a. 操作2:把某个节点x为根的子树中所有点的点权都增加a. 操作 ...
- Luogu3092:[USACO13NOV]No Change
题面 传送门 Sol 状压一下\(k\),\(f[S]\)表示用过的硬币集合为\(S\)能买到的物品个数 # include <bits/stdc++.h> # define RG reg ...
- css系统学习网站
最近系统学习一下css样式,找到一个不错的网站.http://css.doyoe.com/
- Java中的代理模式--静态代理和动态代理本质理解
代理模式定义:为其他对象提供了一种代理以控制对这个对象的访问. 代理模式的三种角色: Subject抽象主题角色:抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求. Real ...
- WCF服务寄宿到IIS
一.WCF简介: Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台.整合了原有的wind ...
- Java设计模式(六)Adapter适配器模式
一.场景描述 “仪器数据采集器”包含采集数据以及发送数据给服务器两行为,则可定义“仪器数据采集器”接口,定义两方法“采集数据capture”和“发送数据sendData”. “PDF文件数据采集器”实 ...