1.nodejs中fs文件系統模塊學習css
主要了解node對文件的操做,咱們能夠大概總結針對文件系統的大體操做有什麼?html
1.文件打開node
2.文件關閉web
3.文件讀取app
4.文件寫入異步
5.刪除文件學習
6.移動文件測試
7複製文件ui
7.建立目錄編碼
8.刪除目錄
......
等等吧!確定還好不少,咱們知道node是異步非阻塞處理,這些操做除了咱們概念中同步方式確定還會有異步方式,也就是同一個處理會有2個方法共選擇。
fs模塊手冊地址:http://nodejs.cn/doc/nodejs/fs.html 裏面介紹了全部處理,咱們在項目下作測試操做。
不少都是對文件的操做,而咱們的項目是web形式,除了讀取能夠把讀取的數據顯示出來,其餘的結果狀況咱們須要到目錄去查看。
==咱們加入路由,get的「/fs」處理,咱們的引擎頁面fs.html,咱們把fs的處理放在路由下,只要訪問地址,就會執行咱們的fs操做,對應查看就好了。
fs.html
<!DOCTYPE html> <html> <head> <title>fs</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1>fs</h1> </body> </html>
路由index.js加入:
app.get('/fs', function(req, res){ res.render('fs'); });
訪問時,裏面要寫入fs的操做,咱們運行,地址轉到「http://localhost:1234/fs」,會看到「fs」。
我麼先在app.js同級建立文件夾「fs」,裏面放入1.txt,2.txt,3.txt,1爲空,二、3隨便寫一些數據,提供文件處理操做。
1..路由修改:
app.get('/fs', function(req, res){ res.render('fs'); fs.appendFile('./fs/1.txt', 'data to append', 'utf8', function(){}); });
往1.txt寫數據,編碼utf8,咱們重啓運行,而後查看1.txt內容:
結論:fs.appendFile(file, data[, options], callback),參數1要寫入那個文件,2寫入數據內容,可指定編碼,默認utf-8,3回調處理。
咱們要根據測試目錄修改file位置,咱們是方法fs目錄下。
同步不演示了,和異步同理。
2.路由修改
fs.chmod(path, mode, callback) 文件權限修改,
3.路由修改
app.get('/fs', function(req, res){ fs.exists("./fs", function(exists){ res.render('fs', { res:exists }); }); });
判斷路徑是否存在,咱們把結果輸出到頁面,fs.html:
<!DOCTYPE html> <html> <head> <title>fs</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1>fs</h1> <h1><%= res %></h1> </body> </html>
重啓,運行,
改爲不存在的路徑,測試會輸出false。
app.get('/fs', function(req, res){ fs.exists("./ff", function(exists){ res.render('fs', { res:exists }); }); });
fs.exists(path, callback) 路徑是否存在判斷,回調會返回true或者false
4.路由修改
app.get('/fs', function(req, res){ fs.mkdir("./fs/me", function(){ res.render('fs', { res:exists }); }) });
測試,結果建立目錄
fs.mkdir(path[, mode], callback) 會判斷建立目錄是否存在,咱們是在fs下建立me目錄
5.路由修改
app.get('/fs', function(req, res){ fs.readFile('./fs/2.txt', 'utf8', function(err, data){ if (err) throw err; res.render('fs', { res:data }); }); });
咱們測試,運行
中文亂碼,好吧,以爲中文會出問題,咱們把2.txt打開,改成utf-8保存,測試運行:
會發現,中文正常顯示了。
fs.readFile(file[, options], callback) 回調會返回讀取的結果。
6.路由修改
app.get('/fs', function(req, res){ fs.rename("./fs/1.txt", "./fs/me/11.txt", function(){}) });
移動方法能夠修更名稱,測試運行。
所在目錄和名稱都被修改了,這個是異步處理,同步的同樣。
fs.rename(oldPath, newPath, callback) 參數1指定要移動文件路徑,2執行移動到的位置和新名字。
7.路由修改
app.get('/fs', function(req, res){ fs.rmdir("./fs/te", function(){}) });
咱們在fs下建立te文件夾
運行後發現被刪除,當咱們要刪除me目錄,發現是不可行的,由於me下存在文件,說明刪除目錄只能刪除空目錄。
fs.rmdir(path, callback) 刪除目錄方法,不過只能刪除空目錄。
8.路由修改
app.get('/fs', function(req, res){ fs.unlink("./fs/2.txt", function(){}) });
運行,咱們會發現2.txt被刪除,文件刪除方法。
fs.unlink(path, callback) 參數1,刪除文件路徑。
9.路由修改
app.get('/fs', function(req, res){ fs.writeFile('./fs/me/1.txt', 'read me','utf8', function (err) { if (err) throw err; }); });
寫入內容,不存在會新建文件,而且寫入,
咱們運行,會發現me下建立了1.txt而且寫入了內容,
fs.writeFile(file, data[, options], callback)
除了這些還有不少操做,能夠百度文件打開結合讀取或者寫入的處理。不過咱們經常使用的就是:
1.移動文件(上傳表單)
2.刪除文件(刪除信息刪除圖片)
3.文件和目錄是否存在(防止錯誤發生)
4.建立目錄(針對每一個用戶建立單一目錄保存內容)2.nodejs中crypto加密模塊學習
2.nodejs中crypto加密模塊學習
crypto模塊做爲加密模塊,針對web開發,主要就是密碼的加密處理。
crypto手冊地址:http://nodejs.cn/doc/nodejs/crypto.html
index.js路由文件先引入crypto,與引入fs模塊同理
var crypto = require('crypto');
路由加入:
app.get('/crypto', function(req, res){ res.render('crypto', { res:"crypto" }); });
crypto.html:
<!DOCTYPE html> <html> <head> <title>crypto</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1><%= res %></h1> </body> </html>
地址:http://localhost:1234/crypto 會看見crypto幾個大字。
咱們引用加密和使用md5加密:
app.get('/crypto', function(req, res){ var pass="admin"; var md5 = crypto.createHash('md5'); var mpass=md5.update(pass).digest('hex'); var rmpass=mpass.substring(2); res.render('crypto', { res:pass,resm:mpass,resrm:rmpass }); });
crypto.html,顯示三種結果:
<!DOCTYPE html> <html> <head> <title>crypto</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1><%= res %></h1> <h1><%= resm %></h1> <h1><%= resrm %></h1> </body> </html>
咱們運行查看結果:
1是爲加密內容
2是加密的內容
3是加密後進行裁剪的內容
咱們在加密後在作裁剪是不固定操做的,咱們從第3位開始,一樣也能夠從其餘位置,更難猜出密碼。
3.nodejs中全局對象的學習
手冊地址:http://nodejs.cn/doc/nodejs/globals.html
咱們加入路由
app.get('/globals', function(req, res){ res.render('crypto', { res:"globals" }); });
globals.html:
<!DOCTYPE html> <html> <head> <title>globals</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1><%= res %></h1> </body> </html>
運行:http://localhost:1234/globals,看見globals幾個大字。
咱們輸出幾個全局對象內容,看看結果,修改路由文件:
app.get('/globals', function(req, res){ res.render('globals', { res:__dirname+":"+__filename }); });
結果:
index.js所在的目錄和目錄+名稱。