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 也能完美地驱动 ...
随机推荐
- Java中的java.math.BigInteger
Java中的java.math.BigInteger /** * */ package com.you.model; /** * @author YouHaidong * */ public clas ...
- Asp.net的sessionState四种模式配置方案
sessionState节点的配置 web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer ...
- Openstack_O版(otaka)部署_认证服务keystone部署
安装和配置服务 1. 建keystone库建用户 在控制节点执行 mysql -uroot -p123456 CREATE DATABASE keystone; GRANT ALL PRIVILEGE ...
- ACM1008
题目:Haab日历和Tzolkin日历的转换. Maya一共有两种日历,第一种日历名为Haab,将一年分为365天,一共有19个月.其中前18个月,分别命名为pop.nozip.zotz.tzec.x ...
- java 的几种引用
从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 1.强引用 本章前文介绍的引用实际上都是强引用, ...
- luogu【P3387】【模板】缩点
原题入口 PS:这个题数据是由Hany01大大出出来的 %%% 这个题显然是一道强联通+DAGdp的题 (题目背景有= =) 缩点的原因就是:不缩会一直在一个地方绕圈圈 而且不能进行后面的DAPdp ...
- 【BZOJ3238】差异(后缀自动机)
[BZOJ3238]差异(后缀自动机) 题面 BZOJ 题解 前面的东西直接暴力算就行了 其实没必要算的正正好 为了方便的后面的计算 我们不考虑\(i,j\)的顺序问题 也就是先求出\(\sum_{i ...
- UOJ207:共价大爷游长沙
题面 UOJ Sol 神题 给每个点对随机一个权值,把这两个点的权值异或上这个随机的值 用\(LCT\)维护子树信息,若子树异或和为所有点对的异或和那么就是答案 大常数代码 # include < ...
- k60引脚图
/*! 枚举管脚编号 */ typedef enum { /* PTA端口 */ //0~31 PTA0, PTA1, PTA2, PTA3, PTA4, PTA5, PTA6, PTA7, PTA8 ...
- 封装Jquery 合并table中任何同列数据
封装代码: jQuery.fn.rowspan = function (colIdx) { //封装JQuery同列值相同合并小插件 return this.each(function () { va ...