整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          怎樣用 JS 壓縮 HTML ?

          怎樣用 JS 壓縮 HTML ?

          實現 HTML 壓縮,可以使用 JavaScript 中的正則表達式來去除 HTML 中的空格和注釋。以下是一個簡單的 HTML 壓縮函數:

          function compressHTML(html) {
            // 去除注釋
            html=html.replace(/<!--[\s\S]*?-->/g, "");
            // 去除多余空白
            html=html.replace(/\s+/g, " ");
            // 去除標簽之間空格
            html=html.replace(/>\s+</g, "><");
            return html.trim();
          }

          該函數首先使用正則表達式去除 HTML 中的注釋。然后,它使用另一個正則表達式去除 HTML 中的多余空格。最后,它使用另一個正則表達式去除標簽之間的空格。

          為了測試該函數,您可以創建一個 HTML 文件,并在其中添加一些冗余的空格和注釋。例如:

          <!DOCTYPE html>
          <html>
            <head>
              <title>My Website</title>
            </head>
            <body>
              <!-- This is a comment -->
              <h1> Welcome to my website! </h1>
              <p> This is some text. </p>
            </body>
          </html>

          然后,您可以在Node.JS中使用以下代碼將 HTML 文件加載為字符串并壓縮它:

          // 加載 HTML 文件
          const fs=require("fs");
          const html=fs.readFileSync("index.html", "utf8");
          // 壓縮 HTML
          const compressedHtml=compressHTML(html);
          console.log(compressedHtml);

          輸出是一個壓縮后的 HTML 字符串,其中不包含注釋或冗余空格。

          或者直接在IE中測試,代碼如下:

          function compressHTML(html) {
            // 去除注釋
            html=html.replace(/<!--[\s\S]*?-->/g, "");
            // 去除多余空白
            html=html.replace(/\s+/g, " ");
            // 去除標簽之間空格
            html=html.replace(/>\s+</g, "><");
            return html.trim();
          }
          var html=`
          <!DOCTYPE html>
          <html>
            <head>
              <title>My Website</title>
            </head>
            <body>
              <!-- This is a comment -->
              <h1> Welcome to my website! </h1>
              <p> This is some text. </p>
            </body>
          </html>
          `;
          console.log(compressHTML(html));

          運行效果:

          了,周末閑來無事,突然有個詭異想法!

          如題,慣性思路很簡單,就是直接擼上一個空內容的html。

          注:以下都是在現代瀏覽器中執行,主要為**Chrome 版本 120.0.6099.217(正式版本) (64 位)和Firefox123.0.1 (64 位) **

          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>demo</title>
          </head>
          <body>
          </body>
          </html>
          


          ????乛?乛????~

          但是,要優雅~咱玩的花一點,如果這個HTML中加入一行文字,比如下面這樣,如何讓這行文字一直不顯示出來呢?

          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>demo</title>
          </head>
          <body>
          <div>放我出去!!!</div>
          </body>
          </html>
          


          思考幾秒~有了,江湖一直傳言,Javascrip代碼執行不是影響Render樹生成么,上循環!于是如下

          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>demo</title>
          </head>
          <body>
          <div>放我出去!!!</div>
          <script>
              while (1) {
                let a;
              }
              // 或者這樣
              /*(function stop() {
                 var message=confirm("我不想讓文字出來!");
           
                 if (message==true) {
                   stop()
                 } else {
                   stop()
                 }
               })()*/
          </script>
          </body>
          
          </html>
          ```一下一下
          bingo,可以實現,那再換個思路呢?加載資源?
          
          說干就干,在開發者工具上,設置上下載速度為1kb/s,測試了以下三種類型資源
          
          ```html
          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>demo</title>
          </head>
          <body>
            <!-- <link rel="stylesheet" href="https://lf3-cdn-tos.bytescm.com/obj/static/xitu_juejin_web/static/bytedesign.min.css" as="style"/> -->
            <!-- <img src="https://lf3-cdn-tos.bytescm.com/obj/static/xitu_juejin_web/static/bytedesign.min.css"/> -->
            <div class="let-it-go">放我出去!!!</div>
            <script src="https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.1/collect.js"></script>
            <style>
              .let-it-go {
                color: red;
              }
              </style>
          </body>
          </html>
          


          總得來說,JS和CSS文件,需要排在.let-it-go元素前面或者樣式前面,才會影響到渲染DOM或者CSSOM,圖片或者影片之類的,不管放前面還是后面,都無影響。如果在css文件中,一直有import外部CSS,也是有很大影響!

          但正如題目,這種只能影響一時,卻不能一直影響,就算你在代碼里寫一個在頭部不停插入腳本,也沒有用,比如如下這么寫,按,依舊無效:

          <!DOCTYPE html>
          <html lang="en">
          
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>demo</title>
          </head>
          <body>
            <link rel="stylesheet" href="https://lf3-cdn-tos.bytescm.com/obj/static/xitu_juejin_web/static/bytedesign.min.css"
              as="style" />
            <!-- <img src="https://lf3-cdn-tos.bytescm.com/obj/static/xitu_juejin_web/static/bytedesign.min.css"/> -->
            <script>
              // setInterval(()=>{
              // 不停插入script腳本 或者css文件
              let index='';
              (function fetchFile() {
                var script=document.createElement('script');
                script.src=`https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.1/collect${index}.js`;
                document.head.appendChild(script);
                script.onload=()=> {
                  fetchFile()
                }
                script.onerror=()=> {
                  fetchFile()
                }
                index+=1
                
                // 創建一個 link 元素
                //var link=document.createElement('link');
                // 設置 link 元素的屬性
               // link.rel='stylesheet';
               // link.type='text/css';
               // link.href='https://lf3-cdn-tos.bytescm.com/obj/static/xitu_juejin_web/app.f81e9f9${index}.css';
                // 將 link 元素添加到文檔的頭部
                //document.head.appendChild(link);
              })()
              // },1000)
            </script>
            <div class="let-it-go">放我出去!!!</div>
            <style>
              .let-it-go {
                color: red;
              }
            </style>
            <!-- <script src="https://lf3-cdn-tos.bytescm.com/obj/static/log-sdk/collect/5.1/collect.js"></script> -->
          </body>
          
          </html>
          


          那么,還有別的方法嗎?暫時沒有啥想法了,等后續再在這篇上續接~

          另外,在實驗過程中,有一個方式讓我很意外,以為以下代碼也會造成頁面一直空白,但好像不行。

          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>demo</title>
          </head>
          <body>
            <div id="appp"></div>
            <script>
              (function createElement() {
                var parentElement=document.getElementById('appp');
                // 創建新的子元素
                var newElement=document.createElement('div');
                // 添加文本內容(可選)
                newElement.textContent='這是新的子元素';
                // 將新元素添加到父元素的子元素列表的末尾
                parentElement.appendChild(newElement);
                createElement()
              })()
            </script>
            <div class="let-it-go">放我出去!!!</div>
          </body>
          </html>
          


          這可以很好的證明,插入DOM元素這個任務,會在主HTML渲染之后再執行。

          祝周末愉快~


          作者:大怪v
          鏈接:https://juejin.cn/post/7344164779629985818

          SS之空白處理。

          免費少兒編程開課啦,同學們好!今天分享的知識是對網頁中文檔段落空白部分的處理。使用到的是CSS的white-space屬性,它一共有6個值,分別是normal、pre、nowrap、pre-wrap、pre-line、inherit。下面我為大家一一演示和講解。

          ·normal:使用瀏覽器的默認規則處理空白,不設置white-space屬性時也是這個值Pre,和HTMLPre標簽一樣的效果。空白會被瀏覽器保留,源代碼中文本是什么樣,顯示在瀏覽器中也是完全一致。

          ·Nowarp:文本不換行,直到遇到顯示的換行標記。在示例中可以看到他和Pre還是有區別的,沒有和源代碼中格式一致,而是去掉了某些不需要的空白部分。

          ·pre-wrap:保留空白部分,但換行是正常換行。pe你們可以看到這個The和Play之間的空格都是完整的被顯示出來,就相當于一個帶換行的Pre值增強版。

          ·最后是pre-line,這個屬性用得是比較多的,不僅僅有Pre和Pre-Warp值的功能,還可以自動的將源代碼中的空白部分進行合并。

          看看和 pre-Warp 的區別,可以發現在的和 play之間的連續空格已經被合并,為了一個空格而且換行和文本效果都是正確顯示。可能有同學不明白空白不就是空格嗎?怎么這個屬性?還在設置換行的相關部分。其實在程序中,空白部分也可以叫影視,用戶可見的叫做顯示。影視不僅有空格還有換行以及各種特異字符,后面有機會我還會詳細解釋,這只是順便一提。

          好了,今天的分享就到這里,各位同學可以在匯總文檔中嘗試修改數值來查看不同的效果,所有的案例及相關文檔均可向我獲取。

          我們下期見。網頁編程·服務端編程·數據庫·算法,點贊丶關注。


          主站蜘蛛池模板: 亚洲视频一区二区| 国产一区二区三区福利| 午夜爽爽性刺激一区二区视频| 怡红院一区二区三区| 日韩AV在线不卡一区二区三区| 人妻无码一区二区三区免费| 亚洲一区二区精品视频| 国产精品亚洲午夜一区二区三区 | 伊人久久精品无码麻豆一区| 国产福利电影一区二区三区,日韩伦理电影在线福 | 亚洲福利一区二区三区| 一区二区三区免费精品视频| 久久人妻无码一区二区| 熟妇人妻AV无码一区二区三区| 精品国产AⅤ一区二区三区4区 | 日韩人妻一区二区三区蜜桃视频| 波多野结衣一区二区三区高清在线| 国产电影一区二区| 亚洲影视一区二区| 久久一本一区二区三区| 国产在线aaa片一区二区99| 亚洲AV成人精品日韩一区18p| 日本免费一区二区三区最新vr| 呦系列视频一区二区三区| 久久无码人妻一区二区三区 | 亚洲丰满熟女一区二区哦| 少妇精品久久久一区二区三区 | 国模吧一区二区三区| AV天堂午夜精品一区| 一区二区视频在线免费观看| 色一乱一伦一区一直爽| 日本一区二区三区中文字幕| 高清一区高清二区视频| 国产aⅴ一区二区| 视频一区二区三区在线观看| 成人区人妻精品一区二区三区| 亚洲国产AV无码一区二区三区| 海角国精产品一区一区三区糖心| 无码少妇丰满熟妇一区二区| 亚洲AV无码一区二区三区性色 | 美女免费视频一区二区三区|