<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        使用 node.js 模仿 Apache 小部分功能

        來源:懂視網 責編:小采 時間:2020-11-27 21:54:12
        文檔

        使用 node.js 模仿 Apache 小部分功能

        使用 node.js 模仿 Apache 小部分功能:首先,這個例子用到了服務端渲染的技術。服務端渲染,說白了就是在服務端使用模板引擎,這里我先簡單的介紹一下服務端渲染與客戶端渲染之間的區別。 服務端渲染與客戶端渲染之間的區別: 客戶端渲染不利于搜索引擎優化 服務端渲染可以被爬蟲抓取到,而客戶端
        推薦度:
        導讀使用 node.js 模仿 Apache 小部分功能:首先,這個例子用到了服務端渲染的技術。服務端渲染,說白了就是在服務端使用模板引擎,這里我先簡單的介紹一下服務端渲染與客戶端渲染之間的區別。 服務端渲染與客戶端渲染之間的區別: 客戶端渲染不利于搜索引擎優化 服務端渲染可以被爬蟲抓取到,而客戶端

        首先,這個例子用到了服務端渲染的技術。服務端渲染,說白了就是在服務端使用模板引擎,這里我先簡單的介紹一下服務端渲染與客戶端渲染之間的區別。

        服務端渲染與客戶端渲染之間的區別:

      1. 客戶端渲染不利于搜索引擎優化
      2. 服務端渲染可以被爬蟲抓取到,而客戶端異步渲染很難被爬蟲抓取到(例如:AJAX)
      3. 大部分的網站既不是純異步(客戶端),也不是純服務端渲染出來的,而是兩者結合的
      4. 例如:京東的商品列表采用的就是服務端渲染,目的是為了SEO搜索引擎優化,說白了就是為了能夠被搜索到,且能被爬蟲抓取(搜索引擎本身也是一種爬蟲)。
      5. 而京東的商品評論列表為了用戶體驗,而且也不需要SEO優化,所以才用的是客戶端渲染
      6. 簡單的判斷內容為服務端渲染還是客戶端渲染

          最簡單的方法就是:

        1. 點擊訪問一個頁面(我們這里以京東為例)
        2. 隨便訪問一個商品頁,然后復制商品標題
        3. 然后鼠標右擊點擊查看網頁源代碼
        4. 在源代碼頁按 Ctrl + f ,接著把復制的內容粘貼進去
        5. 能搜到就是 服務端渲染,否則的話,就是客戶端渲染。

        利用 art-template 模板引擎

        1. 安裝: 在想要安裝的目錄下打開命令行工具  輸入 npm install art-template, 然后它會自動生成 node_modules 目錄(前提,系統已經安裝了 Node.js 環境)
        2. 在需要使用的文件模塊中加載 art-template:
        3. const template = require('art-template');
        4. 就可以使用了 , 官方文檔地址:https://aui.github.io/art-template/zh-cn/docs/index.html

        Apache 部分功能實現

        Node.js 相關API(本例中使用):

        基于http

      7. createServer() : 創建一個服務器
      8. on():  提供服務:對數據的服務,發請求,接收請求,處理請求,發送響應,等等
      9. listen(): 綁定端口號,啟動服務器
      10. 基于fs(文件系統)

      11. readFile(): 讀取文件(參數一為 文件路徑,參數二為回調函數)
      12. readdir(): 讀取目錄(參數一位目錄路徑,參數二為回調函數)
      13. 基于path(路徑)

      14. extname(): 獲取文件后綴名
      15. 隨便在一個位置建立 www 文件夾(文件名可以自己隨意):
      16. 寫HTML:

        <!DOCTYPE html>
        <html lang="en">
        <head>
         <meta charset="utf-8">
         <title>Index of / {{title}}</title>
        </head>
        <body>
         <h1>Index of / {{title}}</h1>
         <ul>
         <li><a href="/" rel="external nofollow" > Parent Directory</a></li>
         {{each files}}
         <li><a href="/{{ $value }}" rel="external nofollow" >{{ $value }}/</a></li>
         {{/each}}
         </ul>
        </body>
        </html>
        
        

        node.js:

        const http = require('http');
        const fs = require('fs');
        const template = require('art-template');
        const path = require('path');
        const port = 5000;
        const server = http.createServer();
        server.on('request', (request, response) => {
         let url = request.url;
         let wwwDir = 'D:/www';
         fs.readFile('./template.html', (error, data) => {
         if (error) {
         return response.end('404 Not Found');
         }
         // 1.如何得到 wwwDir 目錄列表中的文件名和目錄名
         // fs.readdir
         // 2.如何將得到的文件名和目錄名替換到 template.html 中
         // 2.1 在 template.html 中需要替換的位置預留一個特殊的標記
         // 2.2 根據 files 生成需要的 HTML 內容
         // 模板引擎
         if (url !== '/') {
         wwwDir += url;
         }
         let fileEnd = path.extname(wwwDir);
         /**
         * 如果是文件,則訪問該文件
         * 如果是文件夾,則訪問里面的內容
         */
         if (fileEnd !== '') {
         fs.readFile(wwwDir, (error, data) => {
         if (error) {
         return response.end('404 Not Found');
         }
         // 獲取文件后綴名(具體問題具體分析,這里我只設置 .txt 文件的 編碼類型)
         if (fileEnd === '.txt') {
         response.setHeader('Content-Type', 'text/plain; charset=utf-8');
         }
         if (fileEnd === '.jpg') {
         response.setHeader('Content-Type', 'image/jpeg');
         }
         if (fileEnd === '.mp4') {
         response.setHeader('Content-Type', 'video/mpeg4');
         }
         response.end(data);
         });
         } else {
         console.log(wwwDir);
         fs.readdir(wwwDir, (error, files) => {
         if (error) {
         return response.end('Can not find this dir');
         }
         console.log(files);
         // files: [ 'a.txt', 'apple', 'images', 'index.html', 'static', 'videos' ]
         let htmlStr = template.render(data.toString(), {
         title: wwwDir,
         files: files,
         });
         // 3.發送響應數據
         response.end(htmlStr);
         });
         }
         });
        });
        server.listen(port, () => {
         console.log(`服務器已經開啟,您可以通過 http://127.0.0.1:${port} 訪問....`);
        });
        
        

        總結

        以上所述是小編給大家介紹的使用 node.js 模仿 Apache 小部分功能,希望對大家有所幫助,如果大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用 node.js 模仿 Apache 小部分功能

        使用 node.js 模仿 Apache 小部分功能:首先,這個例子用到了服務端渲染的技術。服務端渲染,說白了就是在服務端使用模板引擎,這里我先簡單的介紹一下服務端渲染與客戶端渲染之間的區別。 服務端渲染與客戶端渲染之間的區別: 客戶端渲染不利于搜索引擎優化 服務端渲染可以被爬蟲抓取到,而客戶端
        推薦度:
        標簽: 使用 部分 模仿
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲不卡影院午夜在线观看| 亚洲性猛交xx乱| 一进一出60分钟免费视频| 精品国产免费观看久久久| 亚洲一级在线观看| 成人毛片免费网站| 美女羞羞视频免费网站| 亚洲乱亚洲乱少妇无码| 亚洲AV天天做在线观看| 亚洲欧洲精品成人久久曰| 中文字幕一区二区免费| 亚洲国产精品无码久久一线| 无码专区AAAAAA免费视频| 久久久久久亚洲AV无码专区| 1000部免费啪啪十八未年禁止观看| 亚洲国产精品久久人人爱| 最新猫咪www免费人成| 亚洲AV成人一区二区三区观看| 免费在线观看一级毛片| 亚洲国产午夜精品理论片 | caoporm碰最新免费公开视频| 国产成人精品亚洲精品| 无码成A毛片免费| 亚洲免费观看在线视频| 四虎在线播放免费永久视频 | 精品亚洲成A人在线观看青青| 无码区日韩特区永久免费系列 | 免费看美女被靠到爽的视频| 免费无码午夜福利片69| 久久精品国产96精品亚洲| 青青久在线视频免费观看| 亚洲天堂免费在线视频| 亚洲国产精品久久网午夜| 免费国产高清视频| 免费国产在线视频| 亚洲欧美日韩综合久久久久| 国产成人综合亚洲亚洲国产第一页| 久久精品熟女亚洲av麻豆| 亚洲乱码一区二区三区在线观看 | 国产成人无码精品久久久久免费| 久久精品国产亚洲av日韩|