前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nodejs入门

nodejs入门

作者头像
random_wang
发布2019-09-11 16:27:59
1.3K0
发布2019-09-11 16:27:59
举报
文章被收录于专栏:randomrandom

nodejs

  1. 介绍 2
  2. 常用函数/方法 4
  3. node模块学习 4
  4. 前后数据交互 22
  5. mongodb 25
  6. node连接mongodb 35

(附实例一篇)https://coding.net/u/oTToTT/p... 阅读本文需要js基础 1.介绍 1.1.什么是 node 1.1.1.node 是一个开发平台, 就像 Java 开发平台、.Net 开发平台、一样有对应的编程语言、有语言运行时、有能实现特定功能的 API 1.1.2.使用的编程语言: javascript 语言 1.1.3.node.js 平台是基于 Chrom V8 javascript 引擎构建 (简称: V8 引擎) 1.1.4.可以开发控制台程序(命令行程序)、桌面应用程序(GUI)(借助 node-webkit、electron 等框架实现)、Web 应用程序(网站) 1.2.特点 1.2.1.事件驱动

代码语言:javascript
复制
触发事件执行回调函数

1.2.2.非阻塞I/O

代码语言:javascript
复制
文件读写与网络传输采用异步操作不会阻塞程序执行

1.2.3.单线程 主要目的减少内存开销 1.2.4.拥有开源开发生态系统NPM 1.3.学习资源 1.3.1.CNODE社区 https://cnodejs.org 1.3.2.雪球上的 http://mengxy.net/slides/node... 1.3.3.Node.js包教不包会https://github.com/ppker/node... 2.常用函数/方法 2.1.__dirname 方法 返回服务器的绝对路径 3.node模块学习 3.1.node将功能封装在不同分模块,如果要使用必须引入模块 3.1.1.语法:var fs = require(""fs""); 3.1.2.引入: 引入模块时,变量名最好和模块名一样 3.2.path模块 3.2.1.var path = require('path');用户格式化路径 3.2.2.path.join(__dirname,'./htmls/index.html') 路径拼接 3.3.querystring模块 3.3.1.var querystring = require(‘querystring’) 3.3.2.querystring.parse( str ) 将查询字符串换成对象 3.4.ur模块 3.4.1.var url = require(‘url’) 3.4.2.将uri转换成对象 3.4.3.u语法:url.parse( uri,true ),query 3.5.mime模块 3.5.1.下载依赖包 npm i mime -s 3.5.2.var mime = require(""mime""); 3.5.3.语法:mime.parse( ""./文件名"" ) 根据后缀名返回mime类型 3.6.underscore模块 3.6.1.下载依赖包:npm i underscore -s; 3.6.2.引入文件 var _ = require('underscore'); 3.6.3.使用 3.6.3.1.创建模版函数 var tplFn = _.template( str ); 3.6.3.2.填充数据: tplFn( { 数据对象} ); 模版内识别<%%>语法 可以使用对象的任何属性 3.7.fs(文件读写)模块 3.7.1.引入模块 var fs = require(""fs""); 3.7.2.异步读取文件(推荐) 3.7.2.1.语法:fs.readFile(""路径"",“编码”,function( 错误信息, 数据 ){ }) 3.7.2.2.参数解释 3.7.2.2.1.参数1:文件路径 3.7.2.2.2.参数2: 以什么格式读取出来 如果读取文件时没有指定编码,那么返回的将是原生的二进制数据<Buffer>;如果指定了编码,那么会根据指定的编码返回对应的字符串数据 3.7.2.2.3.参数3:读取完毕后的回调函数 3.7.2.3.回调函数参数 3.7.2.3.1.参数1:错误信息 3.7.2.3.2.参数2:读取到的数据信息 3.7.3.异步写入文件(推荐) 3.7.3.1.语法:fs.writeFile('路径',写入数据,编码,function (err){ } 3.7.3.2.参数解释 3.7.3.2.1.参数1:文件路径 3.7.3.2.2.参数2:要写入的数据(字符串) 3.7.3.2.3.参数3:编码格式(可选) 3.7.3.2.4.参数4:回调函数 3.7.3.3.回调函数参数: 3.7.3.3.1.错误信息 3.7.4.同步读取文件(如非必须不推荐) 3.7.4.1.语法:var data = fs.readFileSync('./data1.txt','utf8'); 3.7.4.2.同步读取文件需接受函数返回值,一般来说用try ...catch()捕获异常 3.7.4.3.参数解释: 3.7.4.3.1.参数1:路径 3.7.4.3.2.参数2:编码格式 3.8.http网络模块 3.8.1.引入模块:var http = require(""http""); 3.8.2.创建服务步骤 3.8.2.1.创建 http 服务 3.8.2.1.1.var server = http.createServer(); 3.8.2.2.注册请求事件 3.8.2.2.1.server.on('request',function (req,res) { } req为请求对象,包含客户端所有请求信息 res是服务器响应对象,所有响应操作都需要通过这个对象 3.8.2.3.监听端口 3.8.2.3.1.server.listen(9000,function () { console.log('服务已经启动,请访问: http://127.0.0.1:9000') }) 3.8.3.请求对象req(请求事件第一个形参) 3.8.3.1.req.url() //请求路径 3.8.3.2..headers 请求头 (对象) 3.8.3.3.req.method 请求方式""GET""||""POST"" 3.8.3.4..httpVersion http 版本 3.8.4.响应对象res(请求事件第二个形参) 3.8.4.1.设置编码:res.setHeader('Content-Type','text/plain ; charset=utf-8') 3.8.4.2.res.write('hello wrold');//返回数据 (注意数据会跟end()数据合并发送) 3.8.4.3..statusCode 设置或者读取 http 状态码 3.8.4.4..statusMessage 设置或读取 http 响应状态消息 3.8.4.5..writeHead(statusCode [, statusMessage]_[, headers]) 设置响应头信息(此法是上面的合写) 3.8.4.6.结束响应并返回数据:res.end(数据[, callback]) 3.9.express模块 3.9.1.创建服务器步骤 3.9.1.1.下载引入模块 npm i express -s var express = require(""express""); 3.9.1.2.初始化:var app = express() 3.9.1.3.注册请求处理事件: 3.9.1.3.1.app.get(‘/index.html’,function(){...} ) 3.9.1.3.2.app.post('路径',处理函数) 3.9.1.3.3.app.use('路径',处理函数 ) post/get严格判断路径。而use则判断以参数开头的路径请求 3.9.1.4.监听端口:app.listen(8080,function(){ ... }) 3.9.2.router中间件使用 3.9.2.1.创建路由对象:var router = express.Router() 3.9.2.2.添加路由方法 3.9.2.2.1.router.get( ""/index.html"",function(){} ) 3.9.2.2.2.app.use('路径',处理函数 ) 3.9.2.3.挂载路由到服务 app.use(""/"",router); 3.9.3.返回数据 3.9.3.1.app.send( ) 基于res.end()的封装 返回数据 参数可以是任意类型,内部自动处理 3.9.3.2.app.sendFile( “路径”,function(err){...} ) 读取文件并返回 3.9.3.3.静态文件返回 router.use(""/静态文件目录"",express.static(""./目录"")); 3.9.4.重定向 res.redirect( ""/"" ); 3.9.5.获取前台传递数据 3.9.5.1.get请求:req.query 返回处理后的对象吧 3.9.5.2.post请求 借助中间件 3.9.5.2.1.下载引入body-parser npm i body-parser -s 3.9.5.2.2.引包 var bodyParser = require(""body-parser"") 3.9.5.2.3.配置:app.use(bodyParser.urlencoded({extended:false})) 参数:false 字符串 、数组 true : 任意 3.9.5.2.4.调用 req.body 返回请求体对象 3.9.6.ejs模版渲染 3.9.6.1.设置步骤 3.9.6.1.1.设置模板文件路径 app.set(""views"",文件夹绝对路径) 3.9.6.1.2.自定义模板:app.engine(""html"",require(""ejs"").renderFile) 参数1:自定义模版名称 参数2: 模版引擎 3.9.6.1.3.指定渲染模版app.set(""view engine"",""html""); 3.9.6.2.在请求事件中调用渲染 3.9.6.2.1.res.render( ""文件名"",“数据” ) 3.10.async模块 3.10.1.第一步 var async = require(""async"") 3.10.2.第二步 async.parallel({函数对象集合},所有函数执行完之后的回调函数(err,result){}) 4.前后数据交互 4.1.获取数据 4.1.1.前数据在requestd对象中,通过操作该对象获取数据 4.1.2.get请求获取 4.1.2.1.通过解析req.url获取 4.1.2.2.方法:url.parse(req.url,true)获取到一个对象 4.1.3.post请求获取 4.1.3.1.需要监听数据传输 4.1.3.2.第一步:注册数据传输事件,并将数据片段存储到数组中 var temp = []; req.on(""data"",function( v ){ temp.push( v ) }) 4.1.3.3.第二步:注册数据传输结束事件,将接受到数据片段数组转换成buffer,并转换成查询字符串 req.on(""end"",function(){ temp = Buffer.concat( temp ).tostring(); }) 4.2.返回数据 4.2.1.通过response对象的end()方法返回 5.mongodb 5.1.介绍 5.1.1.MongoDB是一个跨平台,面向文档的数据库,高性能,高可用性和易于扩展 5.1.2.mongo中的数据库:是一个集合的物理容器,一个单一的MongoDB服务器通常有多个数据库。 5.1.3.mongo中集合是一组MongoDB的文件。简单理解就是一个数组 (集合里面存放 json 对象 collection('one') 5.1.4.文档是一组键值对。(可以认为是 json 格式,但其实是 bson, bson 基于 json 格式) 5.2.连接启动 5.2.1.创建目录 c:datadb 5.2.2.命令行输入 mongod 启动服务(如果是c盘直接启动)其他盘符需要mongod --dbpath 目录 5.2.3.在新的 cmd 窗口 通过 mongo 命令连接数据库服务器 【也可以指定连接的主机名和端口号:`mongo --host 127.0.0.1 --port 27017】 5.3.操作指令 5.3.1.show dbs 查看所有数据库 5.3.2.ues 库名 切换 / 创建数据库 如果创建的数据库为空那么将不会保存创建信息 5.3.3.db 显示当前数据库名 5.3.4.show collections 查看当前数据库中所有的集合 5.3.5.插入数据:如果没有集合创建,存在既添加 db.集合名.insertOne({键:值}) 插入一条 db.集合名.insertMany([{},{}]) 插入多条数据 5.3.6.db.集合.find() //查找集合中的所有数据 db.集合.find({条件对象}) //查找符合条件的数据 db.集合.find({age:{$gte:""18""}})查询age大于等于18的文档 5.3.6.1.$gt 大于 $lt 小于 $e 等于 $ne不等于 5.3.7.db,集合.updata({条件对象},{值对象}) 更新替换符合条件的一条数据 db.集合.updata({条件对象},{$set:{值对象}}) 更新符合条件的一条数据 db.集合.updata({条件对象},{$set:{值对象}},{multi:true}) 更新符合条件的多条数据 5.3.8.db.集合.remove({条件对象}) 删除符合条件的数据 5.3.9.db.集合.drop()删除集合 5.3.10.db.dropDatabase()删除库 6.node连接mongodb 6.1.加载mongodb模块 var mongodb = require('mongodb') 6.2.获取数据库客户端对象 var client = mongodb.MongoClient 6.3.准备连接字符串 var host = ""mongodb://127.0.0.1:27017"" 6.4.连接数据库: client.connect(host,functiont( err,use ){ 通过use形参操作数据库 }); 6.5.将字符串id转换成mongoId mongodb.ObjectId( req.query.id ) 6.6.插入数据 use.db(""数据库名"").collection(""集合名"").insertOne({数据对象}, function(err,info) { //err:错误对象 ;info返回操作信息}); 6.7.findOne( {条件} , callback(err,doc) )查询一条 use.db(""库名"").collection(""集合"").find().toArray(function(err,info){ }) 查询全部 6.8.更新数据

  • 单条: update ( {条件} , { $set: {更新字段 }} , callback )
  • 多条 : update Many ( {条件} , { $set: {更新字段 }} , callback )
  • 替换 : update ( {条件} , {更新字段 } , callback )

6.9.- 删除单条: deleteOne ( {条件} , callback )

  • 删除多条: deleteMany ( {条件} , callback )

6.10.关闭连接 use.close()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档