node模塊的引用順序
https://blog.csdn.net/qq_24839991/article/details/79970808
當(dāng)require('xxx')一個(gè)模塊時(shí):
?? ??? ??? ??優(yōu)先加載核心模塊: 如果顯示指定文件模塊擴(kuò)展名,則在該路徑下查找該模塊是否存在;
?? ??? ??? ??以路徑形式加載文件模塊:如果未顯示指定文件模塊擴(kuò)展名,則在該路徑下,依次查找以.js、.json、.node為擴(kuò)展名的模塊是否存在;
? ? ? ? ? ? ? ?require(./xxx.json)引過來的是一個(gè)對(duì)象數(shù)據(jù)類型,所以可以用 變量.屬性的方法來取值 console.log(a.a)
內(nèi)置http模塊 http.createServer? //方法-- ?該函數(shù)用來創(chuàng)建一個(gè)HTTP服務(wù)器,并將 requestListener 作為 request 事件的監(jiān)聽函數(shù)。 由于該方法屬于http模塊,使用前需要引入http模塊 var http= require(“http”)? const http = require("http");//引入http模塊 var ser = http.createServer((req,res)=>{//創(chuàng)建http服務(wù)????req---請(qǐng)求對(duì)象,res---響應(yīng)對(duì)象 ???????res.writeHead(200,{"content-type":"text/html;charset=utf8"});//發(fā)送http頭部???http狀態(tài)值200??設(shè)置內(nèi)容類型 ,告訴瀏覽器用何種方式來解析之后的代碼 ? ? ? ?res.write("<h1>hello</h1>"); ? ? ? ?res.end("<p>hi</p>")//res指定了響應(yīng)頭,響應(yīng)體內(nèi)容為node.js,用end結(jié)束。 ? ?}) ser.listen(3000,()=>{//最后調(diào)用listen函數(shù),監(jiān)聽3000端口。 ? ??console.log(`listen${ser.address().port}...`) }) ? 前后端分離? ?? ??? ??? ??? 后端寫json數(shù)據(jù) 然后在js中獲取json數(shù)據(jù)的文件夾 接受json中的所有數(shù)據(jù)并允許跨域 將json對(duì)象轉(zhuǎn)換成json字符串 監(jiān)聽端口號(hào)為5000的端口 把數(shù)據(jù)傳到這個(gè)端口中 ?? ??? ??? ??? 前端用ajax獲取到5000端口獲取數(shù)據(jù) 1第一步為json數(shù)據(jù) a.json { "stus":[ ???{"name":"張三", ????"age":15 ???} ] } ? 2第二步為后端封裝接口 const http = require("http"); var stus = require("./a"); ? ? var ser = http.createServer(function(req,res){ ????res.writeHead(200,{"content-type":"application/json","Access-Control-Allow-Origin":'*'}) ? ????res.end(JSON.stringify(stus)); }) ? ser.listen(5000,()=>{ ????console.log("listen " ser.address().port "..."); }) ? 3第三步為前端調(diào)取數(shù)據(jù) $.get({ ?????????var temUl =$("<ul>"); ?????????res.stus.map((item)=>{ ??????????????temUl.append("<li>姓名:" item.name " 年齡:" item.age "</li>"); ?????????}) ?????????$("#box").append(temUl); ?????}) ? nodejs模塊中的------fs模塊 ?? ??? ??? ??fs模塊用于對(duì)系統(tǒng)文件及目錄進(jìn)行讀寫操作 ?? ??? ????https://www.cnblogs.com/starof/p/5038300.html ? 1.讀取文件的三種方式 ? ? ①異步讀文件 ? ? ? ?? ??var const = require("fs");//引入fs模塊 ????????fs.readFile("文件的路徑","utf-8",(err,data)=>{// readFile的回調(diào)函數(shù)接收兩個(gè)參數(shù),err是讀取文件出錯(cuò)時(shí)觸發(fā)的錯(cuò)誤對(duì)象,data是從文件讀取的數(shù)據(jù)。 ????????????????if(err){ ??????????????????????console.log("失敗") ?????????????????}??????????? ??????????????????????console.log(data) }); ? ? ? ?②同步讀文件 ? ? ? ? ? ? ? var const = require("fs"); ????????????var content = fs . readFileSync("文件的路徑","utf-8"); ????????????console.log(content) ? ? ? ?③流的方式讀取文件 ? ? ? ????var const = require("fs"); ?????????var rs = fs.createReadStream("文件路徑") ?????????var str = ""; ?????????rs.on("data",(thunk)=>{//on是事件監(jiān)聽的方法 ????????????????????str =thunk; }) ????????rs.on("end",()=>{ ????????console.log(str); }) ? ? 2.寫入文件的三種方式 ①異步寫入文件 ? var const = require("fs"); fs.writeFile("文件路徑","內(nèi)容",()=>{//寫入文件內(nèi)容(如果文件不存在會(huì)創(chuàng)建一個(gè)文件),寫入時(shí)會(huì)先清空文件 console.log("寫入成功") }); ? ②同步寫入文件 ? var const = require("fs"); fs.writeFileSync("文件路徑","內(nèi)容"); ? ③流的方式寫入文件 ? var ws = fs.createWriteStream("文件路徑"); ws.write("內(nèi)容","utf-8"); ws.end(); ws.on("finish",()=>{ ????????????console.log("寫入完成") }) 3.顯示一個(gè)網(wǎng)頁(在CMD運(yùn)行后訪問 localhost:3000) ①同步顯示 ? const http = require("http"); const fs = require("fs"); http.createServer((req,res)=>{ ????????res.writeHead(200,{"content-type":"text/html;charset=utf8"});???????????? ????????var str = fs.readFile("文件路徑","utf-8",(err,data)=>{ ????????????????if(!err){ ????????????????????????res.end(data); ????????????} }) }).listen(3000,()=>{ ????????????console.log("listen??3000.....") }) ? ②異步顯示 ? const http = require("http"); const fs = require("fs"); http.createServer((req,res)=>{ ????????res.writeHead(200,{"content-type":"text/html;charset=utf8"});???????? ????????var str = fs.readFileSync("文件路徑","utf-8"); ????????res.end(str) }).listen(3000,()=>{ ????????????console.log("listen??3000.....") }) ? ? ③流的方法顯示 ? const http = require("http"); const fs = require("fs"); http.createServer((req,res)=>{ ????????res.writeHead(200,{"content-type":"text/html;charset=utf8"});??????? ????????fs.createReadStream("文件路徑").pipe(res);??// pipe是管道 }).listen(3000,()=>{ ????????????console.log("listen??3000.....") }) ? 4.在本地拷貝一個(gè)視頻(大文件的拷貝) fs.stat 表示文件的狀態(tài) ? const fs = require("fs"); var rs = fs.createReadStream("./w.wmv");//讀取這個(gè)文件 var ws = fs.createWriteStream("./wcopy.wmv");//創(chuàng)建一個(gè)copy文件 var size = 0 ;//文件的總大小 var len = 0;//當(dāng)前讀取的文件的大小 fs.stat("./w.wmv",(err,info)=>{//info是信息情報(bào) ???????if(!err){ ??????????????size = info.size;//獲取文件的大小 ???????} ???????rs.on("data",(thunk)=>{ ??????????????console.log((len/size*100).toFixed(2) '%')//輸出加載進(jìn)度 ??????????????ws.write(thunk) ???????}) ???????rs.on("end",()=>{ ??????????????console.log("copy over") ???????}) }) ? ? 來源:https://www./content-1-449151.html |
|