2016-08-09學(xué)習(xí)筆記

nodejs靜態(tài)資源服務(wù)器

1. touch 一般是在創(chuàng)建一個空的日志文件的時候才會使用
2. xshell 使用open命令來打開一個文件
3. http是nodejs的服務(wù)模塊
4. url是url路由模塊
5. fs是文件服務(wù)器模塊

nodejs實(shí)例

打開xshell 打開ubuntu 用xshell鏈接ubuntu

1. nodejs服務(wù)器的創(chuàng)建:

const http=require('http');
const ip = '本機(jī)IP地址';
const port = 3000;
http.createServer((req,res)=>{
    res.writeHead(200,{'Content-type':'text/html'});
    res.write('hello');
    res.end();
}).listen(port,ip,()=>{
      console.log('server start');
});
//主機(jī)IP
const ip = '192.168.0.110';
//端口號
const port = 3000;
//引入的組建模塊  http懂牧、url山上、fs
const http = require('http');
const url = require('url');
const fs = require('fs');

//創(chuàng)建一個服務(wù)
var server = http.createServer(function(req,res){
    res.writeHead(200,{'Content-Type':'text/plain'});
     res.write('my nodejs');
    res.end();
});
//監(jiān)聽一個端口
server.listen(port,ip,function(){
    console.log('server start');
});
//封裝成函數(shù)調(diào)用實(shí)例
const http=require('http');
const ip = '本機(jī)IP地址';
const port = 3000;
var f = function(req,res){
  res.writeHead(200,{'Content-type':'text/html'});
  res.write('hello');
  res.end();
}
http.createServer(f).listen(port,ip,()=>{
  console.log('server start');
});

2. 抽象方法及獲取URL部分塊的內(nèi)容 url

const ip = '192.168.0.110';//主機(jī)IP
const port = 3000;//端口號
//引入的組建模塊  http娶眷、url、fs
const http = require('http');
const url = require('url');
const fs = require('fs');

//創(chuàng)建服務(wù)的回掉函數(shù)
var funSer = function(req,res){
    //獲取url地址塊的內(nèi)容  如:/path/show
    var parth = url.parse(req.url).pathname;
res.write(parth);
res.end();
}

//監(jiān)聽端口的回掉
var fun = function(){
console.log('server start');
}

var server = http.createServer(funSer).listen(port,ip,fun);
const http=require('http');
const url = require('url');
const ip = '本機(jī)IP地址';
const port = 3000;
var f = function(req,res){
  var pathname = url.parse(req.url).pathname;
  res.write(pathname);
  res.end();
}
var f2 = function(){
  console.log('server start');
}
http.createServer(f).listen(port,ip,f2);

3. 讀取文件的內(nèi)容 File System

const http=require('http');
const fs = require('fs');
const url = require('url');
const ip = '本機(jī)IP地址';
const port = 3000;

var pathname = url.parse(req.url).pathname;
var userurl = url.parse(pathname);

switch(userurl){
  case '' || '/':
      fs.readFile('./index.html',func(err,content){
        if(err){
          console.log(err);
        }
        else{
          res.writeHead(200,{'Content-type':'text/html'});
        }
      });
}
const ip = '192.168.0.110';//主機(jī)IP
const port = 3000;//端口號
//引入的組建模塊  http或渤、url、fs
const http = require('http');
const url = require('url');
const fs = require('fs');

//真正打印文件內(nèi)容
fs.readFile('./index.html', (err, data) => {
    if (err) throw err;
    //打印字符串內(nèi)容
    console.log(data.toString());
});

//創(chuàng)建服務(wù)的回掉函數(shù)
var funSer = function(req,res){
    //獲取url地址塊的內(nèi)容  如:/path/show
    var parth = url.parse(req.url).pathname;
    res.write(parth);
    res.end();
}

//監(jiān)聽端口的回掉
var fun = function(){
    console.log('server start');
}
var server = http.createServer(funSer).listen(port,ip,fun);

4. 讀取文件的內(nèi)容并在瀏覽器中輸出 File System

const ip = '192.168.0.110';//主機(jī)IP
const port = 3000;//端口號
//引入的組建模塊  http、url涌矢、fs
const http = require('http');
const url = require('url');
const fs = require('fs');

//讀取文件內(nèi)容
var data = fs.readFileSync('./index.html');
//創(chuàng)建服務(wù)的回掉函數(shù)
var funSer = function(req , res){
//獲取url地址塊的內(nèi)容  如:/path/show
var path = urls.parse( req.url ).pathname;
res.write( data.toString() );
res.write( path );
res.end();
}

//監(jiān)聽端口的回掉
var fun = function(){
console.log('server start');
}
var server = http.createServer(funSer).listen(port,ip,fun);

5. 完整實(shí)例(根據(jù)不同的url地址請求不同的文件【模板】)

const ip = '192.168.0.110';//主機(jī)IP

const port = 3000;//端口號

//引入的組建模塊  http摆出、url朗徊、fs
const http = require('http');
const url = require('url');
const fs = require('fs');

//實(shí)例化一個服務(wù)容器
var server = new http.Server();

//監(jiān)聽一個端口
server.listen(port , ip);

//注冊一個事件處理的on方法
server.on('request' , function(request , response){
  
//解析請求的url
var url = urlapi.parse(request.url);

//監(jiān)聽請求的網(wǎng)站,以當(dāng)前腳本目錄為根目錄的url地址
console.log(url.pathname);

//特殊URL會讓服務(wù)器在發(fā)送響應(yīng)前先等待
//根據(jù)path路徑來讀取不同的模板文件
switch( url.pathname ){ //判斷請求的路徑信息
    case '' || '/': //處理請求網(wǎng)站根目錄偎漫,指定加載對應(yīng)的文件夾爷恳,一般以根目錄的index.html為默認(rèn),nodejs是高效流處理的方案象踊,也可以通過配置文件來設(shè)置
    
        //讀取文件內(nèi)容(打開請求的文件)
        fs.readFile('./index.html',function( error, content){
            if(error){//如果有錯誤時温亲,顯示錯誤信息
                res.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});
                res.write(error.message);
                res.end();
            }else{
                //正確時瀏覽器輸出模板文件的內(nèi)容
                res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});//告訴相應(yīng)的請求頭信息,返回?cái)?shù)據(jù)
                res.write(content);//模板文件內(nèi)容
                res.end();
            }
        });
        break;
    case '/list':
        fs.readFile('./list.html',function( error, content){
            if(error){
                res.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});
                res.write(error.message);
                res.end();
            }else{
                res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});
                res.write(content);
                res.end();
            }
        });
        break;
    case '/show':
        fs.readFile('./show.html',function( error, content){
            if(error){
                res.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});
                res.write(error.message);
                res.end();
            }else{
                res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});
                res.write(content);
                res.end();
            }
        });
        break;
    default:
        fs.readFile('./default.html',function( error, content){
            if(error){
                res.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});
                res.write(error.message);
                res.end();
            }else{
                res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});
                res.write(content);
                res.end();
            }
        });
        break;

    }

});

練習(xí):http 文件(每次都需要重啟服務(wù)器)

const http=require('http');
const ip = '本機(jī)IP地址';
const port = 3000;
http.createServer((req,res)=>{
    res.writeHead(200,{'Content-type':'text/html'});
    res.write('hello');
    res.end();
}).listen(port,ip,()=>{
      console.log('server start');
});
const http=require('http');
const ip = '本機(jī)IP地址';
const port = 3000;
var f = function(req,res){
  res.writeHead(200,{'Content-type':'text/html'});
  res.write('hello');
  res.end();
}
http.createServer(f).listen(port,ip,()=>{
  console.log('server start');
});
const http=require('http');
const ip = '本機(jī)IP地址';
const port = 3000;
var f = function(req,res){
  res.writeHead(200,{'Content-type':'text/html'});
  res.write('hello');
  res.end();
}
var f2 = function(){
  console.log('server start');
}
http.createServer(f).listen(port,ip,f2);
const http=require('http');
const url = require('url');
const ip = '本機(jī)IP地址';
const port = 3000;
var f = function(req,res){
  var pathname = url.parse(req.url).pathname;
  res.write(pathname);
  res.end();
}
var f2 = function(){
  console.log('server start');
}
http.createServer(f).listen(port,ip,f2);
const http=require('http');
const fs = require('fs');
const url = require('url');
const ip = '本機(jī)IP地址';
const port = 3000;
<!-- rs.readFile('xiaoniu.txt',(err,data)=>{
  if(err) throw err;
  console.log(data.toString());
  }); -->
var data = fs.readFileSync('xiaoniu.txt');
var f = function(req,res){
  var pathname = url.parse(req.url).pathname;
  res.write(pathname);
  res.end();
}
var f2 = function(){
  console.log('server start');
}
http.createServer(f).listen(port,ip,f2);  
const http=require('http');
const fs = require('fs');
const url = require('url');
const ip = '本機(jī)IP地址';
const port = 3000;

var pathname = url.parse(req.url).pathname;
var userurl = url.parse(pathname);

switch(userurl){
  case '' || '/':
      fs.readFile('./index.html',func(err,content){
        if(err){
          console.log(err);
        }
        else{
          res.writeHead(200,{'Content-type':'text/html'});
        }
      });
}

參考資料:http://cnodejs.org/topic/4f16442ccae1f4aa27001071

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杯矩,一起剝皮案震驚了整個濱河市栈虚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌菊碟,老刑警劉巖节芥,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逆害,居然都是意外死亡头镊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門魄幕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來相艇,“玉大人,你說我怎么就攤上這事纯陨√逞浚” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵翼抠,是天一觀的道長咙轩。 經(jīng)常有香客問我,道長阴颖,這世上最難降的妖魔是什么活喊? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮量愧,結(jié)果婚禮上钾菊,老公的妹妹穿的比我還像新娘帅矗。我一直安慰自己,他們只是感情好煞烫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布浑此。 她就那樣靜靜地躺著,像睡著了一般滞详。 火紅的嫁衣襯著肌膚如雪凛俱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天茵宪,我揣著相機(jī)與錄音最冰,去河邊找鬼。 笑死稀火,一個胖子當(dāng)著我的面吹牛暖哨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凰狞,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼篇裁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赡若?” 一聲冷哼從身側(cè)響起达布,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逾冬,沒想到半個月后黍聂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡身腻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年产还,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘀趟。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡脐区,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出她按,到底是詐尸還是另有隱情牛隅,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布酌泰,位于F島的核電站媒佣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陵刹。R本人自食惡果不足惜丈攒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望授霸。 院中可真熱鬧巡验,春花似錦、人聲如沸碘耳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辛辨。三九已至捕捂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斗搞,已是汗流浹背指攒。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留僻焚,地道東北人允悦。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像虑啤,于是被迫代替她去往敵國和親隙弛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容