乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      node基礎(chǔ) ,http(二)

       路人甲Java 2022-12-25 發(fā)布于北京

       

      #### 包(文件夾)
      
      * 多個(gè)文件,有效的被組織與管理的一個(gè)單位
      * 留一個(gè)入口
      * __包就是一個(gè):文件夾__
      
      #### npm|| yarn
      
      * 自己先有一個(gè)包描述文件(__package.json__)
      * 創(chuàng)建一個(gè)包描述文件 `npm init [-y]`
        * 會(huì)根據(jù)當(dāng)前的文件夾來自動(dòng)生成包名(__不允許中文,不允許大寫英文字母__)
        * 默認(rèn)生成```npm init [-y]```
      * 下載一個(gè)包 `npm install art-template jquery@1.5.1 --save`
        - 記錄依賴`--save`
      * 根據(jù)package.json文件中的`dependencies`屬性恢復(fù)依賴
        - 恢復(fù)包 `npm install`   簡單: ```npm i ```
      * 卸載一個(gè)包 `npm uninstall jquery@1.5.1 --save`
      * 簡寫```npm un jquery@1.5.1 --S`
        * 下載簡單些:```npm i 包名```
      * __小結(jié):以上簡寫:  uninstall -> un ,install -> i , --save -> -S
      * 查看包的信息
        - `npm info jquery`
      * 查看包的信息中的某個(gè)字段(版本)(掌握)
        - `npm info jquery versions`
      * 查看包的文檔
        - `npm docs jquery`
      * 安裝全局命令行工具
        - `npm install -g http-server`
      * 卸載全局命令行工具
        - `npm uninstall -g http-server`
      * 查看全局包的下載路徑
        - `npm root -g`

       

      包的區(qū)別

      • 凡是我們下載到項(xiàng)目的node_modules中的包,基本都是拿來做require('xxx') 調(diào)用其函數(shù)和屬性

      •  

         

      • 還有一類屬于工具性的包(全局命令行工具)

        • 在命令行直接使用的

      • 全局工具 和項(xiàng)目包的區(qū)別

        • 全局工具哪個(gè)目錄都可以通過命令行啟動(dòng),通過任意目錄啟動(dòng)該工具,給相對路徑傳遞任意目錄的文件給該工具

        • 項(xiàng)目中的包,部分具備命令行工具的能力,需要命令行環(huán)境變量的支持

       

       

      http核心模塊, 參考博客;https://www.cnblogs.com/fsg6/p/14499743.html


      http超文本傳輸協(xié)議

      #### 主體對象(核心對象http)
      
      * 服務(wù)器對象 ```http.createServer();```
      * 客戶端對象```http.request({host:'www.baidu.com'});```
      * 請求報(bào)文對象(對于服務(wù)器來說,是可讀)  req
      * 響應(yīng)報(bào)文對象(對于服務(wù)器來說,是可寫) res
      
      
      
      #### 狀態(tài)碼分類
      
      * 1 開頭,正在進(jìn)行中
      * 2開頭,完成
      * 3開頭 ,重定向
      * 4開頭 , 客戶端異常
      * 5開頭, 服務(wù)器異常
      
      #### 創(chuàng)建服務(wù)器步驟
      
      * 1:引入http核心對象
      * 2:利用http核心對象的.createServer(callback); 創(chuàng)建服務(wù)器對象
      * 3:使用服務(wù)器對象.listen(端口,ip地址) 開啟服務(wù)器
      * 4:callback(req,res) 根據(jù)請求處理響應(yīng)
      
      #### 請求報(bào)文對象(只讀)
      
      * 請求首行中的url `req.url ` 
      * 請求首行中的請求方式 `req.method`
      * 請求頭中的數(shù)據(jù)`req.headers`  是一個(gè)對象
      * 頭信息中,也可以作為與服務(wù)器交互的一種途徑
      
      #### 響應(yīng)對象
      
      * 響應(yīng)首行 `res.writeHead(狀態(tài)碼)`
      * 寫響應(yīng)頭 
        * 一次性寫回頭信息
          * `res.writeHead(200,headers)`
        * 多次設(shè)置頭信息
          * `res.setHeader(key,value);`
      * 寫響應(yīng)體
        * 一次性寫回響應(yīng)體
          * `res.end();`
        * 多次寫回響應(yīng)體
          * `res.write();`
      
      #### 請求與響應(yīng)
      
      * 頭行體
      * content-type是對請求或者響應(yīng)體數(shù)據(jù),做出的說明
      
      #### 響應(yīng)體數(shù)據(jù)
      
      * res.write('字符串'||讀出文件的二進(jìn)制數(shù)據(jù))
      
      * res.end('字符串'||讀出文件的二進(jìn)制數(shù))
      
        

      server.js

      const http = require('http');
      const fs = require('fs');
      
      // 設(shè)計(jì)兩個(gè)接口, / 返回index.html
      //  /test 只用write 不用end  =>  默認(rèn)來講 頁面會(huì)一直轉(zhuǎn)
      //    但是,如果我用ajax 
      http.createServer((req,res)=>{
        if(req.url === '/' ) {
          fs.readFile('./index.html',(err,data)=>{
              res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
              res.end(data);
          });
        } else if (req.url === '/test' && req.method === 'GET') {
              // 告知客戶端,可以一點(diǎn)一點(diǎn)的顯示,流式寫入
              res.writeHead(200,{'content-type':'application/octet-stream'});
              setInterval(function() {
                  res.write(''+Date.now() +'^_^');
              },1000);
      
        }
      }).listen(8888);

      index.html

      <html>
      <head>
        <meta charset="UTF-8">
        <title>Document</title>
      </head>
      <body>
      
            <span id="info"></span>
      
            <button id="btn">點(diǎn)我發(fā)</button>
            <script type="text/javascript">
              var info = document.querySelector('#info');
              document.querySelector('#btn').onclick = function () {
                  //  發(fā)起ajax請求
                  var xhr = new XMLHttpRequest();
                  xhr.open('get','/test');
                  xhr.send();
                  // 處理響應(yīng)
                  xhr.onreadystatechange = function () {
                    // readyState = 3 的時(shí)候是響應(yīng)中
                    console.log(xhr.readyState); //1,2,3,4
                    console.log(xhr.responseText);
                    var arr = xhr.responseText.split('^_^')
                    console.log(arr[arr.length-2]);
                    info.innerText = arr[arr.length-2];
                  }
              }
      
      
            </script>
      </body>
      </html>

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多