開始nodejs+express的學習+實踐(4)

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所在的目錄和目錄+名稱。

相關文章
相關標籤/搜索