nodejs入門

nodejsjavascript

  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.事件驅動html

觸發事件執行回調函數

1.2.2.非阻塞I/Ojava

文件讀寫與網絡傳輸採用異步操做不會阻塞程序執行

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.更新數據node

  • 單條: update ( {條件} , { $set: {更新字段 }} , callback )
  • 多條 : update Many ( {條件} , { $set: {更新字段 }} , callback )
  • 替換 : update ( {條件} , {更新字段 } , callback )

6.9.- 刪除單條: deleteOne ( {條件} , callback )git

  • 刪除多條: deleteMany ( {條件} , callback )

6.10.關閉鏈接 use.close()github

相關文章
相關標籤/搜索