<html><head><meta charset="utf-8"><title>文档笔记----nodejs菜鸟教程</title><meta name="keyword" content="文档笔记----nodejs菜鸟教程"><meta name="discription" content="文档笔记----nodejs菜鸟教程">
</head><body><script>文档笔记-- --nodejs菜鸟教程第一章 创建第一个应用如果我们使用PHP来编写后端代码是时, 需要Apache或者Nginx服务器, 并且配上mod_php5模块和php_cgi.使用nodejs时, 我们不仅仅在实现一个应用, 同时还实现了整个HTTP服务器.事实上, 我们的Web应用以及对应的web服务器基本是一样的1 引入require模块: 用来载入node.js模块var http = require("http");2 创建服务器: 服务器可以监听客户端的需求, 类似Apache / Nginx等HTTP服务器3 接受请求与响应请求 拂去其端可以使用浏览器或者终端发送HTTP请求, 服务器接受请求后返回相应数据.http.createServer(function(request, response) {//内容类型response.writeHead(200, { "Content-Type": "text/plain" });//发送响应式请求response.end("Hello World\n");}).listen(8888);第二章 NPM使用NPM是随同Nodejs一起安装的包管理工具, 能解决Nodejs代码部署上的很多问题, 常见的使用场景有以下几种:1 允许用户从NPM服务器下载被别人编写的三方包到本地使用2 允许用户从NPM服务器下载并安装别人编写的命令程序到本地使用3 允许用户将自己编写的包或者命令程序上传到NPM服务器供别人使用查看版本npm - v全局安装npmnpm install npm - g安装express到本地npm install express卸载expressnpm uninstall express查看安装路径npm ls更新express模块npm update express创建模块npm init第三章 Node.js REPL(交互式解释器)Node自带交互式解释器, 可以至此那个一下任务:1 读取 - 读取用户输入, 解析输入的javascript数据结构并且存储在内存中2 执行 - 执行输入的数据结构3 打印 - 输出结构4 循环 - 循环操作以上步骤直到用户量词按下ctrl + c按钮退出下划线(_) 变量-- > 获取表达式运算结果ctrl + c 退出当前终端ctrl + c按两次 退出Node REPLctrl + d退出Node REPL向上 / 向下方向键 - 查看历史命令tab键 列出当前命令help 列出使用命令clear 退出多行表达式save filename 保存当前的Node REPL 会话到指定文件load filename 载入当前Node REPL会话的文件内容第四章 Node.js 回调函数Node.js异步编程的直接提现说就是回调函数异步编程依托于回调函数, 但不能说使用了回调函数就能是异步编程阻塞代码实例:var fs = require("file");var data = fs.readFileSync("input.txt");console.log(data.toString());console.log("程序执行结束");非阻塞代码实例:var fs = require("file");fs.readFile("input.txt", function(err, data) {if (err) {return console.error(err);} else {console.log(data.toStrign());}})console.log("程序执行结束");第五章 Node.js EventEmitterNode.js所有的异步I / O操作在完成是都会发送到事件队列events只提供了events.EventEmitter 这一个对象核心就是事件触发与事件监听功能的封装//引入events模块var events = require("event");//创建eventsEmitter对象var eventEmitter = new events.EventEmitter();//绑定事件event.on("some_event", function() {console.log("some_event触发");})//触发事件event.emit("some_event");第六章 Buffer(缓冲区)javascript语言自身只有字符串数据类型, 没用二进制数据类型但在处理像TCP流或者文件流时, 必须使用到二进制数据.因此在Node.js中, 定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区一个Buffer类似一个整数数组, 但他对应于V8堆内存之外的一块原始内容var buf = new Buffer(10) //按长度创建var buf = new Buffer([10, 20, 30, 40, 50]) //按给定的数组创建var buf = new Buffer("www.runob.com", "utf-8"); //通过一个字符串创建写入缓冲区buf.write() //返回字节数从缓冲区读数据buf.toString() //返回数据字符串转为JSON对象buf.toJSON();合并缓冲区buffer.concat(buf1, buf2, ..); //缓冲区比较buf1.compare(buf2); //缓冲区裁剪buf.slice();缓冲区长度buf.length第七章 Node.js Stream(流)Stram是一个抽象接口, Node中有很多对象实现了这个接口.例如, 对http服务器发起的request对象就是一个Stream, 还有stdout(标准输出)分类:1 readable 可读操作2 writable 可写操作3 duplex 可读可写操作4 transform 操作别写入数据, 然后读出结果所有的Stream对象都是EventEmitter对象data: 当有数据可读时触发end: 没有更多的数据可读时触发error: 在接收和写入过程中发生错误时触发finish: 所有数据已被写入到底层系统时触发从流中读取数据var fs = require("file");var data = '';//创建可读流var readerStream = fs.createReadStream("input.txt");//设置编码readerStream.setEncoding("UTF8");//处理流事件readerStream.on("data", function(chunk) {data += chunk;})readerStream.on("end"function() {console.log(data);})readerStream.on("error", function(err) {console.log(err.stack);})console.log("程序执行完毕");写入流var fs = require("file");var data = "324324324";var writerStream = fs.createWriteStream("output.txt");writerStream.write(data, "UTF8");writerStream.end();writerStream.on("finish", function() {console.log("写入完成");})writerStream.on("error", function(err) {console.log(err.stack);})console.log("程序执行完毕");第八章 Node.js函数匿名函数: 我们可以把一个函数作为变量传递.但是我们不一定要绕这个 "先定义,再传递"的圈子,我们可以直接在另一个函数的括号中定义和传递这个函数execute(function(word) {console.log(word);})第九章 Node.js模块系统为了让Node.js的文件可以相互调用, Node.js提供了一个简单的模块系统.模块是Node.js应用程序的基本组成部分, 文件和模块是一一对应的.换言之, 一个Node.js文件就是一个模块//func.jsexperts.func = function() {}module.experts = function() {}var f = require("func");//引入的时候前者 f.func();后者 f();模块加载优先级开始require - > 是否在文件模块缓存区中 - > 否 - > 是否原生模块 - > 否 - > 查找文件模块 - > 根据扩展名载入文件模块 - > 返回experts是 - > 返回experts ->是 - > 是否在原生模块缓存区中 - > 否 - > 加载原生模块 - > 缓存原生模块 - > 返回experts第十章 GET / POSTGET:var url = require("url");POST:var querystring = require("querystring");第十二章 Node.js常用工具util是一个Node.js核心模块, 提供常用函数的集合, 用于弥补核心javascript的功能过于精简的不足util.inherits() 是一个实现对象间原型继承的函数.var util = require("util");function Base() {}Base.prototype.showName = function() {}util.inherits(Sub, Base);var sub = new Sub();//Sub仅仅继承了Base在原型中定义的函数,而构造函数内部的属性和函数都咩有被Sub继承util.inspect();//将任意对象转为字符串的方法util.isArray()//判断传入对象是否为数组util.isRegExp()//判断传入参数是否为正则util.isDate()//判断传入参数是否为日期util.isError();//判断是否为一个错误的对象第十三章 Node.js工具模块OS模块Path模块Net模块DNS模块Domain模块第十四章 Node.js路由路由可以通过请求的URL路径来区别不同请求, 这是通过路由讲请求以url路径为基准映射到处理程序上第十五章 Node.js全局对象javacript中有一个特殊的对象, 它及其所有属性都可以在程序的任何地方访问最外层定义的变量全局随想的属性隐式定义的变量__filename__dirnamesetTimeout();clearTimeout();serInterval();clearInterval();consoleprocess//用于描述当前Node.js进程状态对象,提供了一个与操作系统的简单接口第十六章 Node.js文件系统//异步读取文件readFile(); //异步//同步读取文件readFileSync(); //同步建议使用异步, 比起同步, 异步方法性能更高, 而且没有阻塞var fs = require("fs");fs.readFile("input.txt", function(err, data) {if (err) {console.error(err.stack);} else {console.log(data.toString());}})var data = fs.readFileSync("input.txt");console.log(data.toString());fs.open("input.txt", function(err, fd) {})fs.read(fd, buf, 0, buf.length, 0, function(err, bytes) {})stats//异步写入文件fs.writeFile("input.txt", "xiruneirong", function(err) {})//关闭文件fs.close();//截取文件fsftruncate(fd, 10, function(err) {})//删除文件fs.unlink("input.txt", function(err) {})//创建目录fs.mkdir("dir", function(err) {})//读取目录fs.readdir(dir, function(err, files) {if (err) {return console.error(err);}files.forEach(function(file) {console.log(file);})})//删除目录fs.rmdir(dir, function() {})第十七章 Nodejs Express 框架快速打算建一个完整的网站Express框架核心特点:1 可以设置中间件来响应http请求2 定义了路由变用于执行不同的HTTP请求3 可以通过向模板传递参数来动态渲染HTML页面var express = require("express");var app = express();app.get("/", function(req, res) {res.send();})app.post('/', function(req, res) {console.log("主页 POST 请求");res.send('Hello POST');}) // /del_user 页面响应var server app.listen(8888, function() {})Request 对象 - request 对象表示 HTTP 请求, 包含了请求查询字符串, 参数, 内容, HTTP 头部等属性。 常见属性有:req.app: //当callback为外部文件时, 用req.app访问express的实例req.baseUrl: 获取路由当前安装的URL路径req.body / req.cookies: 获得「 请求主体」 / Cookiesreq.fresh / req.stale: 判断请求是否还「 新鲜」req.hostname / req.ip: 获取主机名和IP地址req.originalUrl: 获取原始请求URLreq.params: 获取路由的parametersreq.path: 获取请求路径req.protocol: 获取协议类型req.query: 获取URL的查询参数串req.route: 获取当前匹配的路由req.subdomains: 获取子域名req.accepts(): 检查可接受的请求的文档类型req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages: 返回指定字符集的第一个可接受字符编码req.get(): 获取指定的HTTP请求头req.is(): 判断请求头Content - Type的MIME类型Response 对象 - response 对象表示 HTTP 响应, 即在接收到请求时向客户端发送的 HTTP 响应数据。 常见属性有:res.app: 同req.app一样res.append(): 追加指定HTTP头res.set() 在res.append() 后将重置之前设置的头res.cookie(name, value[,option]): 设置Cookieopition: domain / expires / httpOnly / maxAge / path / secure / signedres.clearCookie(): 清除Cookieres.download(): 传送指定路径的文件res.get(): 返回指定的HTTP头res.json(): 传送JSON响应res.jsonp(): 传送JSONP响应res.location(): 只设置响应的Location HTTP头, 不设置状态码或者close responseres.redirect(): 设置响应的Location HTTP头, 并且设置状态码302res.send(): 传送HTTP响应res.sendFile(path[,options][,fn]): 传送指定路径的文件 - 会自动根据文件extension设定Content - Typeres.set(): 设置HTTP头, 传入object可以一次设置多个头res.status(): 设置HTTP状态码res.type(): 设置Content - Type的MIME类型第十八章 RESFUL API表述性状态传递第十二章 多进程nodejs是单线程的模式运行, 事件驱动处理并发,这样有助于我们在多核cpu的系统上创建多个子进程, 从而提高性能const fs = require("fs");const child_process = require("child_process");for (var i = 0; i < 3; i++) {var worker_process = child_process.fork("support.js".[i]);worker_process.on("close", function(code) {})第二十一章 mysqlvar mysql = require("mysql");var connection = mysql.createConnection({host: "127.0.0.1",user: "root",password: "",database: "test"})connection.query("select....", function(err, res, fields) {})}第二十二章 MongoDBvar MongoClient = require('mongodb').MongoClient;var DB_CONN_STR = 'mongodb://127.0.0:27017/test';var insertData = function(db, callback) { //连接到表 site var collection = db.collection('site'); //插入数据 var data = [{ "name": "1221", "url": "www.hao123.com" },{ "name": "32132", "url": "c.baidu.com" }];collection.insert(data, function(err, result) {if (err) {console.log('Error:' + err);return;}callback(result);});}MongoClient.connect(DB_CONN_STR, function(err, db) {console.log("连接成功!");insertData(db, function(result) {console.log(result);db.close();});});</script>
</body></html>

  

转载于:https://www.cnblogs.com/SunlikeLWL/p/8681623.html

文档笔记----nodejs菜鸟教程相关推荐

  1. html5教学文档笔记,4.HTML 教程- (HTML5 基础)

    HTML 教程- (HTML5 基础) 1.HTML 标题 HTML 标题(Heading)是通过 - 标签来定义的. 2.HTML 段落 HTML 段落是通过标签 来定义的. 3.HTML 链接 H ...

  2. 计算机word文档无法工作,win10所有word文档都打不开如何解决_win10电脑所有word文档无法打开解决教程...

    word是我们经常会用到的文档编辑工具,用户们都会在电脑中安装使用,不过使用的时候难免遇到一些问题,比如有win10 ghost 纯净版系统用户要打开word文档的时候发现电脑中所有word文档都打不 ...

  3. Vue官网2文档笔记

    文章目录 $event $on Class 与 Style 绑定 对象语法 列表渲染 v-for 中使用对象 事件处理 事件修饰符 插槽 具名插槽 解构插槽 prop 动态组件&异步组件 访问 ...

  4. 推荐有关Qt书籍、Qt中文参考文档(网上在线教程)、QTCN开发网和Qt入门视频

    Qt有关书籍 Qt5开发及实例(极力推荐) Qt及Qt Quick开发实战精解 嵌入式Qt开发项目教程 Qt Creator快速入门 第2版 Qt中文参考文档(网上在线教程) http://www.k ...

  5. PyQt5随笔:PyQt5 官方网站文档、一些基础教程网站和书籍推荐

    PyQt5随笔:PyQt5 官方网站文档.一些基础教程网站和书籍推荐 文章目录 PyQt5随笔:PyQt5 官方网站文档.一些基础教程网站和书籍推荐 1. 官方网站文档 2.基础教程网站(点击标题即可 ...

  6. NE40E华为产品文档-----笔记(2022.9.28)

    ** NE40E华为产品文档-----笔记(2022.9.28) ** P34开始 全连接full Mesh 中文解释:全网状 英文来历:Full Mesh表示网络的一种连接形式,即所有结点之间都直接 ...

  7. HOOMD Blue 文档笔记

    HOOMD Blue文档笔记 基于hoomd 1.0.2 userdoc http://codeblue.umich.edu/hoomd-blue/doc/index.html 3. 快速开始 例程: ...

  8. 这几款文档笔记工具,你习惯用哪个?

    前言 俗话说的好:"好记性不如烂笔头",平时工作记录笔记的确是一个良好的习惯,做文档笔记可以在我们遗忘时进行回看,方便查找,代替人的大脑.有时程序写多了,很不愿意去强制记忆一些东西 ...

  9. python入门教程jupyter_python数据分析师快速入门1Jupyter文档笔记工具

    简介 Jupyter Notebook是一个Web应用程序,允许您创建和共享包含实时代码,方程式,可视化和说明文本的文档. Jupyter Notebook类似于画布或环境,它允许您使用编程语言来执行 ...

最新文章

  1. [分享]五种提高 SQL 性能的方法
  2. php7和python3性能对比-ava、Python和PHP三者的区别
  3. 如何面对边缘计算10个痛点?
  4. js如何往div里写div
  5. python为什么虚部是j不是i_Python基础02 基本数据类型
  6. java获取response数据_Java中实现Http请求并获取响应数据
  7. 用友功能传送错误功能加密服务器组件加密服务器错误拒绝访问,用友U8v8.72单机版,登录时系统提示:不能登录到加密服务器。-用友U8...
  8. JS 操作 HTML 和 AJAX 请求后台数据
  9. 微信小程序python人工智能回复_用python itchat写一个微信机器人自动回复
  10. 雷达导论PART-III.8 雷达接收机与数字化
  11. 短信中心号码iphone_如何在iPhone上阻止来自特定号码的呼叫
  12. html 跑步比赛小游戏,趣味跑步比赛游戏
  13. 【数学建模】(五):MATLAB程序设计与积分
  14. 使用 matplotlib处理彩色图像
  15. 欢迎新同事入职演讲稿
  16. c语言程序设计对角矩阵,从键盘输入一个4*4矩阵,并求这个4*4矩阵主对角线元素之和,并输出.球C语言程式设计...
  17. html+css主页页眉实现
  18. (附源码)spring boot学生社团管理系统的设计与实现 毕业设计 151109
  19. 层次状态机-HSM应用解析
  20. 系统集成项目管理工程师案例分析考点汇总(沟通/干系人、风险、合同等)

热门文章

  1. 【全球数字化转型企业实录】“70后”星巴克,零售餐饮业数字化“先驱”
  2. 会议记录错别字太多?记住四个会议记录校对的高效方法
  3. 别人能在家开网店赚钱,为什么你不能?
  4. 寄人篱下,却也不卑不亢,为了自己心中的那点情愫付出无数痴心
  5. ACL访问控制列表实验报告
  6. 数据解读 | 想要与北上争雄,深圳还有哪些课要补?
  7. 利用哈夫曼树实现英文短文的压缩与解压
  8. 分享 :统计学概论和医疗临床大数据分析(附PPT下载)
  9. 制作一个amp页面-谷歌移动加速器AMP网页制作方法
  10. 【父亲节】各种语言的父亲节祝福