//app.js var express = require("express"); //之後的時後處理POST DELETE PATCH CHECKOUT 這些請求均可以用formoidable var formidable = require("formidable"); var url = require("url"); //返回app對象 var app = express(); //靜態出一個文件夾 app.use(express.static("www")); //中間價 //GET請求 app.get("/tijiao",(req,res)=>{ //將query部分變爲一個對象(jso) var obj = url.parse(req.url,true).query; console.log("我是後臺工程師我拿到了數據"+obj.name+obj.age); //給前端工程師返回一點東西 res.json({"result":1}); }); //POST請求:由於post請求使用的報問題,那麼你不一樣經過req形式獲取到數據 app.post("/tijiao",(req,res)=>{ //這個是formidable構造函數的方法,產生一個form表單對象 var form = new formidable.IncomingForm(); //form對象有一個parse方法(req,callBack(err,fields,files)) form.parse(req, function(err, fields, files) { res.json({"result":fields.name}) }); }); app.delete("/remove",(req,res)=>{ var form = new formidable.IncomingForm(); //form對象有一個parse方法(req,callBack(err,fields,files)) form.parse(req, function(err, fields, files) { res.json({"result":fields.id}) }); }); //監聽事件 app.listen(3000);
//靜態頁面 <script type="text/javascript"> //發起的是GET請求 $("button:eq(0)").click(function (argument) { $.get("/tijiao",{"name":"小明","age":18},function (data) { console.log(data.result); }) }); //POST 請求 $("button:eq(1)").click(function (argument) { $.post("/tijiao",{"name":"賈成豪","age":18},function (data) { alert(data.result); }); }); //DELETE 請求 $("button:eq(2)").click(function (argument) { $.ajax({ 'url':"/remove", "type":"DELETE", "data":{ "id":8 }, "success":function (data) { alert(data.result); } }) }); </script>
1、模塊依賴的步驟javascript
第一步:建立我們工程的‘身份證’,一個pageage.json文件html
第二步:添加你的項目的依賴,你在項目當中須要require();可是別忘記要添加一個--save,添加他的目的是讓我們的身份證知道你的項目有哪些依賴;前端
第三步:若是你的依賴沒有下載,可是你的身份證當中已經有了項目的依賴,你就能夠npm installjava
var url = require("url");//內置url的模塊node
url.parse(req.url);//一個URL字符串轉換成對象並返回ajax
url.parse(urlStr, [parseQueryString], [slashesDenoteHost])express
接收參數:npm
urlStr url字符串json
parseQueryString 爲true時將使用查詢模塊分析查詢字符串,默認爲false服務器
slashesDenoteHost
默認爲false,//foo/bar 形式的字符串將被解釋成 { pathname: ‘//foo/bar' }
若是設置成true,//foo/bar 形式的字符串將被解釋成 { host: ‘foo', pathname: ‘/bar' }
//app.js //須要內置的模塊HTTP var http = require("http"); //本身封裝的money模塊 var money = require("./controller/money.js") //本身封裝的農曆的模塊 var nongli = require("./controller/nongli.js"); //使用系統內置的url模塊 var url = require("url"); var server =http.createServer((req,res)=>{ //端口號後面的數據咱們是能夠用url對象獲取到的 var pathName = url.parse(req.url).pathname; if(req.url=="/"){ //主頁面的路由 res.setHeader("Content-type","text/html;charset=utf8"); res.end("歡迎你進入個人做業頁面"); //拼音的路由 }else if(/^\/pinyin\/.+$/.test(pathName)){ money.toMoney(res,pathName); //農曆轉換 }else if(/^\/nongli\/\d+\/\d+\/\d+$/.test(pathName)){ nongli.toNongli(res,pathName); } }); //監聽端口號 server.listen(3000);
//money.js文件 //數字的轉換的模塊 var nzhcn = require("nzh/cn"); exports.toMoney = function (res,pathName) { res.setHeader("Content-type","text/html;charset=utf8"); var array = pathName.match(/^\/pinyin\/(.+)$/); //拿到獲取的數據 var $1 = array[1]; var money = nzhcn.toMoney($1); res.end(money); }
//nongli.js //農曆陰曆轉換 var solarLunar = require("solarLunar"); exports.toNongli = function (res,pathName) { //農曆陰曆轉換 res.setHeader("Content-type","text/html;charset=utf8"); var array = pathName.match(/^\/nongli\/(\d+)\/(\d+)\/(\d+)$/); var year = array[1]; var month = array[2]; var day = array[3]; var solar2lunarData = solarLunar.solar2lunar(year,month, day);// 輸入的日子爲公曆 res.end(solar2lunarData.gzYear+solar2lunarData.gzMonth+solar2lunarData.gzDay); }
2、CNPM(淘寶鏡像)
npm去社區下載項目依賴,下載速度相對會慢一些;
淘寶給我們官方NPM封裝,淘寶建立CNPM鏡像;
-g:開發的依賴:它是CLI程序主要輔助我們開發用的,只是一個能夠輔助咱們開發的一個工具而已;
--save項目的依賴:你在項目當中須要require()
3、express
1.express 的初體驗
var express = require("express"); var app =express(); //中間件 app.get("/pinyin/:shuzi",function (req,res) { console.log(req.params.shuzi); res.send("你好我是Express框架"); }); app.get("/nongli/:nian/:yue/:ri",function (req,res) { console.log(req.params.nian); console.log(req.params.yue); console.log(req.params.ri); res.send("123"); }) app.listen(3000);
二、express的學習
var express = require("express"); var app =express(); //中間件 //中間件 //中間件 //中間件 //中間件 //中間件 //中間件 //中間件 //中間件 //中間件 //中間件 //中間件 app.listen(3000);
三、中間件
概述:app.動詞(上行請求的類型),上行請求有26中;
//須要express框架-express返回的是一個函數對象 var express = require("express"); //express函數執行返回一個app對象 var app = express(); //中間件的羅列 app.get("/",(req,res)=>{ //輸出用的是send方法,並且也不須要設置字符集由於express幫我們封裝好了 res.send("你好我是express框架"); }); app.get("/zhangjie",(req,res)=>{ res.send("你好我是張傑"); }) app.get("/wangjunkai",(req,res)=>{ res.send("你好我是王俊凱"); }) //監聽端口號 app.listen(3000);
var express = require("express"); var app = express(); //羅列中間件 //GET請求 app.get("/tijiao",function (req,res) { res.send("你好我是GET請求"); }); //POST請求 app.post("/tijiao",function (req,res) { res.send("你好我是POST請求"); }); //刪除請求 app.delete("/tijiao",function (req,res) { res.send("你好我是DELETE請求"); }); //更新某一條數據的請求 app.patch("/tijiao",function (req,res) { res.send("你好我是patch請求"); }); //更新所有數據的一個請求 app.chekout....... //監聽端口號 app.listen(3000);
提示:我們中間件能夠有多個,響應頭能夠不用設置字符集了;
概述:若是中間件的類型是同樣的,並且你的url若是同樣,那麼前者會覆蓋後者。
var express = require("express"); var app = express(); var count = 0; //羅列中間件 app.get("/chaxun/*",function (req,res,next) { count++; //next是一個函數 next(); }); app.get("/chaxun/:banji/:xuehao",function (req,res) { var banji = req.params.banji; var xuehao = req.params.xuehao; res.send("你好歡迎你查詢"+banji+"學號"+xuehao+"查詢的次數"+count); }); //監聽端口號 app.listen(3000);
提示:①若是碰見覆蓋問題,你要使用的是next函數,並且覆蓋的函數不能有res.send();
②捎帶的帶一些數據/XXX/:banji/:xuehao,可是獲取數據的時候 req.params.banji
五、輸出
redirect 輸出
var express = require("express"); var app = express(); //羅列中間件 app.get("",(req,res)=>{ //四種輸出 ① res.send("你好我是express第一種輸出的方法叫作send"); ②輸出一個json格式的數據 res.json({"name":"小紅","age":18,"hobby":["吃飯","睡覺","打豆豆"]}); ③JSONP數據格式 res.jsonp({"name":"小紅","age":18,"hobby":["吃飯","睡覺","打豆豆"]}); ④輸出別人的網站的網頁 res.redirect("https://www.tmall.com/?pid=mm_26632258_3504122_48284354&b=gsbASSPAEIPyyiq5JGQ&ali_trackid=2:mm_26632258_3504122_48284354:1514002120_255_437563937&clk1=5cdcbfce00b2147eddb2de5d322815db&upsid=5cdcbfce00b2147eddb2de5d322815db"); }); //監聽端口號 app.listen(3000);
提示:node的響應對象有四種輸出:①send ②json ③jsonp ④redirect
六、外置文件
fs.readFile(path,(err,data)=>{});在express當中他封裝了一個函數,sendFile;
var express = require("express"); var app = express(); app.get("/",(req,res)=>{ res.sendFile(__dirname+"/public/1.wangjunkai.html"); }); app.listen(3000);
提示:若是外置文件你必需要使用的是絕對路徑
若是外置文件res.sendFile(path);
7.靜態出一個文件夾
express框架提供了一個方法,能夠靜態出一個文件;含義就是靜態出去的文件夾當中文件之間,你可使用相對路徑,最爽的一件事,是靜態出去的文件夾中的所有的文件你能夠不用寫路由了,由於express已經幫你作完了;
var express = require("express"); var app = express(); app.use(express.static("www")); app.listen(3000);
提示:上面操做能夠將某一個文件夾靜態出去,所有的文件你可使用相對路徑;
4、GET請求POST請求
概述:get假裝URL
post報文體
第一步:建立身份證
第二步:裝項目的依賴
第三步:建立我們的app.js
var express = require("express"); //返回app對象 var app = express(); //靜態出一個文件夾 app.use(express.static("www")); //監聽事件 app.listen(3000);
第四步
第五步:node app.js 跑起服務器
var obj = url.parse(req.url,true).query;