node(2)

 

//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;

 

相關文章
相關標籤/搜索