Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 天天干天天色,欧美成人欧美激情欧美风情,爱爱小视频免费体验区在线观看

          整合營銷服務商

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

          免費咨詢熱線:

          2020 年你應該知道的 8 種前端 JavaScr

          2020 年你應該知道的 8 種前端 JavaScript 趨勢和工具


          文轉自:https://www.jianshu.com/p/8f064d69d206

          前端開發人員和技術人員的數量逐年增加,而整個生態系統渴望實現標準化。新技術和工具的出現已經改變了游戲規則。可以肯定地說,總體趨勢將是 UI 標準化、基于組件的模塊化和組合,這將影響從樣式到測試甚至狀態管理的所有方面,并在總體上實現更好的模塊化。

          JavaScript世界日新月異。

          前端開發(和 web 開發)的世界正在以驚人的速度發展。今天,如果你沒有領先,或者不是 Webpack、React Hooks、Jest、Vue 和 NG elements,你就會開始感覺到差距在擴大。但是,情況正在發生變化。

          前端開發人員和技術人員的數量逐年增加,而整個生態系統渴望實現標準化。新技術和工具的出現已經改變了游戲規則。

          可以肯定地說,總體趨勢將是 UI 標準化、基于組件的模塊化和組合,這將影響從樣式到測試甚至狀態管理的所有方面,并在總體上實現更好的模塊化。這將包括圍繞 Web 組件、ES 模塊、面向組件的樣式或狀態管理工具等構建的技術。

          本文是我個人對未來幾年前端發展狀況的一種簡短而片面的觀察。當然,它遺漏了很多東西,所以請盡管在評論區發表你的見解。

          框架無關的 Web 組件



          基本上,這就是未來。為什么?因為這些純 Web 組件與框架無關,可以在沒有框架的情況下工作,這意味著標準化。因為它們不會帶來 JS 疲勞,并且受到現代瀏覽器的支持。因為它們的包大小和資源消耗將是最優的,而且 VDOM 渲染令人興奮。

          這些組件提供自定義元素、Javascript API(允許定義一種新的 HTML 標簽)、HTML 模板(用于指定布局),當然還有影子 DOM(本質上是特定于組件的)。

          在這個領域中,需要了解的主要工具包括 Lit-html (和 Lit-element )、 StencilJS 、 SvelteJS ,當然還有 Bit ,它們都是面向可重用的模塊化組件,而這些組件可以在任何地方直接共享、使用和開發。

          當考慮 UI 開發的未來,以及組件時代的模塊化、重用性、封裝和標準化原則時,Web 組件就是答案。

          框架戰爭的未來?



          是的,在 NPM 下載中,React 目前仍然是女皇

          所以我們不會深入探討“誰更好,為什么更好”,你可以下文中了解到關于這個問題的更多答案。相反,我們將后退一步,看看更大的圖景。圍繞組件的前端技術的總體“市場份額”正在不斷增長。新開發人員的加入速度也在快速增長,工具的采用空間也越來越大。

          那么,從現在開始的 5 年內,哪個框架會占據統治地位呢?沒有人知道。但是,可以肯定地說,在原生 JS 生態系統中,這將是一個大有可為的方面。在這個生態系統中,Web 組件統治了 DOM。React 居 NPM 下載量之后。然而,看看 這些數字 。在實際的 Web 使用中,差距似乎非常小。

          令人震驚的,對吧?



          實際上,Vue 和 React 在實際應用中非常接近

          隨著未來與框架無關的 Web 組件的標準化,人們可能想知道它可能對 UI 框架戰爭產生什么樣的影響。是的,我們知道,React 不是一個框架……

          組件隔離、重用和組合



          heBit 組件:未來的代碼共享、重用和開發

          當談到在不久的將來的前端開發和 UI 組件時,我們不可能忽視 Bit 令人驚喜的承諾和功能。

          Bit(開源) 隔離并將組件(或任何可重用的 JS 代碼)轉換為共享的構建塊,你可以在所有項目和應用程序中使用和共享這些構建塊。神奇的是,你還可以使用 Bit 開發不同項目的相同組件,同時完全控制源代碼更改和整個依賴關系圖。

          簡單地說,使用 Bit,你可以立即在一個項目中使用來自另一個項目的組件,開發和更改來自兩個項目的組件,并同步更改。當作為一個團隊工作時,這個工作流將通過 bit.dev (Bit 的組件中心)得到增強,你可以在其中組織和共享你的團隊代碼。

          組件中心提供了組件共享和協作所需的一切,從出色的搜索和發現體驗到在線組件試用、完整的 CI/CD 支持等等。

          使用 Bit,你構建的應用程序可以完全實時地訪問你的團隊和開源社區編寫的所有組件,并立即共享新組件或建議對現有組件進行更新。

          ES 模塊和 CDN



          ES 模塊是在瀏覽器中使用模塊的標準,由 ECMAScript 標準化。使用 ES 模塊可以很容易地將功能封裝到模塊中,這些模塊可以通過 CDN 等方式使用。隨著 Firefox 60 的發布, 所有主流瀏覽器都將支持 ES 模塊 ,Node 團隊正在努力將 ES 模塊支持添加到 Node.js 中。另外, 面向 WebAssembly 的 ES 模塊集成 將在未來幾年實現。想象一下,利用 Bit 隔離的 JS 組件,依托 bit.dev 通過 CDN 使用。

          組件級狀態管理



          那么,狀態管理有什么新變化?最終,我們會遍歷 Redux 全球商店中的所有東西?

          但是,這可能使充分利用組件的模塊化和可重用性變得困難。從這個角度來看,像 MobX 這樣的項目提供了一種有趣的、更具反應性的方法(也可以看下 Unstated 項目)。React 的新 Context API 和 Hooks 意味著你不需要第三方庫,可以在功能組件級管理狀態,提高模塊性和可重用性。

          因此,展望未來,嘗試更多地從封裝組件的角度來考慮狀態管理,而不是從全局應用程序存儲的角度來考慮。

          可組合樣式化組件



          借助 Bit 模塊化:獨立的邏輯和主題組件組合成你的樣式

          所以在過去的兩年里,有很多關于“樣式化組件(styling components)”的討論。從內聯 CSS 或 CSS 模塊到 JS 和樣式組件中的 CSS,甚至還有像 stylable 這樣的讓步解決方案,選項很多。

          在考慮未來幾年的樣式化時,我喜歡把樣式化當作一種組合。也就是說,我們的 組件設計系統應該同時包含邏輯組件和主題組件,這些組件可以使用 Bit 之類的工具組合在一起。通過這種方式,你可以創建一個設計系統,根據需要進行演進和更改,而不會將一個繁瑣的庫強加給不愿意采用它的開發人員。設計工具本身,比如 Sketch an Figma,將利用組件來達到這個目的(將它們與 Bit 結合起來,就得到了最終的組件設計系統)。這非常令人興奮。



          因此,使用 GraphQL 通過組件為客戶端提供了令人興奮的可能性。使用 Apollo ,你可以輕松構建通過 GraphQL 獲取數據的 UI 組件。結合 Bit,你可以直接從正在使用組件的項目導入和開發這些組件。

          通過對 API 的智能管理,可以簡化圍繞數據驅動應用開發的工作流,加快開發速度。所以,展望未來,這絕對是值得的。

          基于組件的設計工具



          隨著 組件成為我們的設計系統 ,設計人員和開發人員之間的鴻溝將被彌合。從設計人員和開發人員的角度來看,這都是可能的。

          Sketch 已經在設計組件之間創建了依賴關系鏈接,因此,你可以以模塊化的方式設計和更新設計。 代碼組件的集成 已經開始出現,這只是時間問題。 Figma 之類的工具是基于可重用的 UI 元素構建的。 Framer 團隊 正在為編寫代碼的設計人員構建一個工具,在一定程度上控制將 UI 元素轉換為可重用的 React 組件。通過 Bit ,你可以將你設計的組件轉換為可重用的構建塊,這些構建塊可以在任何地方被可視化地發現、使用甚至開發,從而彌合與開發人員之間的鴻溝。Bit + 組件設計工具未來將產生很大的影響。通過 CDN 使用 Bit 和 Web 組件意味著全面的組合。

          要講解爬蟲相關的知識如:http、網頁、爬蟲法律等,讓大家對爬蟲有了一個比較完善的了解和一些題外的知識點。

          今天這篇文章,我們從今天開始就正式進入實戰階段,后面將會有更多的實際案例。

          為大家講解了HTTP原理,很多人好奇:好好的講爬蟲和HTTP有什么關系?其實我們常說的爬蟲(也叫網絡爬蟲)就是使用一些網絡協議發起的網絡請求,而目前使用最多的網絡協議便是HTTP/S網絡協議簇。

          一、Python有哪些網絡庫

          在真實瀏覽網頁我們是通過鼠標點擊網頁然后由瀏覽器幫我們發起網絡請求,那在Python中我們又如何發起網絡請求的呢?答案當然是庫,具體哪些庫?豬哥給大家列一下:

          • Python2: httplib、httplib2、urllib、urllib2、urllib3、requests
          • Python3: httplib2、urllib、urllib3、requests

          Python網絡請求庫有點多,而且還看見網上還都有用過的,那他們之間有何關系?又該如何選擇?

          • httplib/2:這是一個Python內置http庫,但是它是偏于底層的庫,一般不直接用。而httplib2是一個基于httplib的第三方庫,比httplib實現更完整,支持緩存、壓縮等功能。一般這兩個庫都用不到,如果需要自己 封裝網絡請求可能會需要用到。
          • urllib/urllib2/urllib3:urlliib是一個基于httplib的上層庫,而urllib2和urllib3都是第三方庫,urllib2相對于urllib增加一些高級功能,如:HTTP身份驗證或Cookie等,在Python3中將urllib2合并到了urllib中。urllib3提供線程安全連接池和文件post等支持,與urllib及urllib2的關系不大。
          • requests:requests庫是一個基于urllib/3的第三方網絡庫,它的特點是功能強大,API優雅。由上圖我們可以看到,對于http客戶端python官方文檔也推薦我們使用requests庫,實際工作中requests庫也是使用的比較多的庫。

          綜上所述,我們選擇選擇requests庫作為我們爬蟲入門的起點。另外以上的這些庫都是同步網絡庫,如果需要高并發請求的話可以使用異步網絡庫:aiohttp,這個后面豬哥也會為大家講解。

          二、requests介紹

          希望大家永遠記?。簩W任何一門語言,都不要忘記去看看官方文檔。也許官方文檔不是最好的入門教程,但絕對是最新、最全的教學文檔!

          1.首頁

          requests的官方文檔(目前已支持中文)

          從首頁中讓HTTP服務人類這幾個字中我們便能看出,requests核心宗旨便是讓用戶使用方便,間接表達了他們設計優雅的理念。

          注:PEP 20便是鼎鼎大名的Python之禪。

          警告:非專業使用其他 HTTP 庫會導致危險的副作用,包括:安全缺陷癥、冗余代碼癥、重新發明輪子癥、啃文檔癥、抑郁、頭疼、甚至死亡。

          2.功能特性

          都說requests功能強大,那我們來看看requests到底有哪些功能特性吧:

          • Keep-Alive & 連接池
          • 國際化域名和 URL
          • 帶持久 Cookie 的會話
          • 瀏覽器式的 SSL 認證
          • 自動內容解碼
          • 基本/摘要式的身份認證
          • 優雅的 key/value Cookie
          • 自動解壓
          • Unicode 響應體
          • HTTP(S) 代理支持
          • 文件分塊上傳
          • 流下載
          • 連接超時
          • 分塊請求
          • 支持 .netrc

          requests 完全滿足今日 web 的需求。Requests 支持 Python 2.6—2.7以及3.3—3.7,而且能在 PyPy 下完美運行

          三、安裝requests

          pip install requests

          如果是pip3則使用

          pip3 install requests

          如果你使用anaconda則可以

          conda install requests

          如果你不想用命令行,可在pycharm中這樣下載庫

          四、爬蟲流程

          下圖是豬哥之前工作總結的一個項目開發流程,算是比較詳細,在開發一個大型的項目真的需要這么詳細,不然項目上線出故障或者修改需求都無法做項目復盤,到時候程序員就有可能背鍋祭天。。。

          言歸正傳,給大家看項目的開發流程是想引出爬蟲爬取數據的流程:

          1. 確定需要爬取的網頁
          2. 瀏覽器檢查數據來源(靜態網頁or動態加載)
          3. 尋找加載數據url的參數規律(如分頁)
          4. 代碼模擬請求爬取數據

          起點中文網創建于2002年5月,是國內最大文學閱讀與寫作平臺之一,是國內領先的原創文學門戶網站,隸屬于國內最大的數字內容綜合平臺——閱文集團旗下。

          總體思路分為三步:

          1.分析網頁結構,利用xpath表達式爬取到所有的文章名字與鏈接,并按文章名字生成文件夾。

          import requests
          from urllib import request
          from lxml import etree
          import os
          header={
              'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
          
          class Spider(object):
              def start_request(self):
                  url='https://www.qidian.com/all'
                  req=request.Request(url,headers=header)
                  html=request.urlopen(req).read().decode('utf-8')
                  html=etree.HTML(html)
                  bigtit_list=html.xpath('//div[@class="book-mid-info"]/h4/a/text()')   ##爬取所有的文章名字
                  bigsrc_list=html.xpath('//div[@class="book-mid-info"]/h4/a/@href')
          
                  print(bigtit_list)
                  print(bigsrc_list)
                  for bigtit,bigsrc in zip(bigtit_list,bigsrc_list):
                      if os.path.exists(bigtit)==False:
                          os.mkdir(bigtit)
                      self.file_data(bigsrc,bigtit)
          

          2.利用文章鏈接,爬取每個章節名字與鏈接


           def file_data(self,bigsrc,bigtit):   #詳情頁
                  url="http:"+bigsrc
                  req=request.Request(url, headers=header)
                  html=request.urlopen(req).read().decode('utf-8')
                  html=etree.HTML(html)
                  print(html)
                  Lit_tit_list=html.xpath('//ul[@class="cf"]/li/a/text()')  #爬取每個章節名字
                  Lit_href_list=html.xpath('//ul[@class="cf"]/li/a/@href')  #每個章節鏈接
                  for tit,src in zip(Lit_tit_list,Lit_href_list):
                      self.finally_file(tit,src,bigtit)
            

          3.利用每個章節的鏈接,生成帶有章節名稱的txt文件,并保存到每個文章文件夾下。

           def finally_file(self,tit,src,bigtit):
                  url="http:" + src
                  req=request.Request(url, headers=header)
                  html=request.urlopen(req).read().decode('utf-8')
                  html=etree.HTML(html)
                  text_list=html.xpath('//div[@class="read-content j_readContent"]/p/text()')
                  text="\n".join(text_list)
                  file_name=bigtit + "\\" + tit + ".txt"
                  print("正在抓取文章:" + file_name)
                  with open(file_name, 'a', encoding="utf-8") as f:
                      f.write(text)
          
          spider=Spider()
          spider.start_request()
          

          成功!

          生成的文件夾如下圖:

          家好,很高興又見面了,我是"高級前端?進階?",由我帶著大家一起關注前端前沿、深入前端底層技術,大家一起進步,也歡迎大家關注、點贊、收藏、轉發,您的支持是我不斷創作的動力。

          今天給大家帶來的主題是Lit ,即一個簡單的庫,用于構建快速、輕量級的 Web Component。話不多說,直接進入正題!

          1.什么是 Lit

          Lit 是一個簡單的庫,用于構建快速、輕量級的 Web Component。 Lit 的核心是一個消除樣板的組件基類,它提供反應式狀態、作用域樣式和一個微小、快速且富有表現力的聲明性模板系統。

          Lit 具有以下優勢:

          • 簡單/去樣板化:Lit 建立在 Web Component 標準之上,添加了反應性、聲明性模板和一些優秀功能,以減少樣板文件并使工作更輕松。 每個 Lit 功能都經過精心設計,并考慮到 Web 平臺的發展。
          • 快速地/體積小/即時更新:Lit 的體積約為 5 KB(minified and compressed),有助于保持較小的包體積并縮短加載時間。而且渲染速度非???,因為 Lit 在更新時只涉及 UI 的動態部分 ,無需重建虛擬樹并將其與 DOM 進行比較。
          • 可互操作/面向未來:每個 Lit 組件都是原生 Web Component,具有超強的互操作性。 Web Component 可以在任何使用 HTML 的地方工作,可以使用任何框架,也可以不使用框架。 這使得 Lit 成為構建可共享組件、設計系統或可維護、面向未來的網站和應用程序的理想選擇。

          除了以上特點外,Lit 的優勢還包括:

          • 標準自定義元素:Lit 組件是標準的自定義元素,因此瀏覽器將它們完全視為內置元素。 在手寫的 HTML 或框架代碼中使用它們,從 CMS 或靜態站點構建器輸出它們,甚至在 JavaScript 中創建實例
          • 支持范圍樣式(Scoped styles):Lit 默認使用 Shadow DOM 來確定樣式的范圍,從而使得 CSS 選擇器保持簡單,并確保組件的樣式不會影響頁面上的任何其他樣式,也不受其影響。
          • 支持反應性:支持聲明響應式屬性來對組件的 API 和內部狀態進行建模。 每當反應性屬性(或相應的 HTML 屬性)發生變化時,Lit 組件就會有效地重新渲染。
          • 聲明性模板:Lit 模板基于標記的模板文字,簡單、富有表現力且快速,具有 HTML 標記和內聯的原生 JavaScript 表達式。 無需學習自定義語法,更重要的是無需編譯。

          目前 Lit 在 Github 上通過 BSD-3-Clause 協議開源,有超過 15.1k 的 star、0.8k 的 fork、38.1k 的項目依賴量,代碼貢獻者 160+,npm 周平均下載量 845k,是一個妥妥的前端優質開源項目,值得長期關注。

          2.Lit 的使用場景

          開發者可以使用 Lit 構建幾乎任何類型的 Web UI!

          每個 Lit 組件都是標準的 Web 組件。 Web 組件具有互操作性的超強能力,本身受瀏覽器的支持,可以在任何 HTML 環境中使用,可以使用任何框架,也可以不依賴框架。

          這使得 Lit 成為開發可共享組件或設計系統的理想選擇。 Lit 組件可以跨多個應用程序和站點使用,即使這些應用程序和站點構建在各種前端堆棧上。 使用 Lit 組件的站點開發人員不需要編寫甚至不需要查看任何 Lit 代碼,可以像使用內置 HTML 元素一樣使用這些組件。

          Lit 還非常適合用于逐步增強基本 HTML 網站。 瀏覽器將識別標記中的 Lit 組件并自動初始化, 無論站點是手工制作的、通過 CMS 管理的、使用服務器端框架構建的,還是由 Jekyll 或 Eleventy 等工具生成的。

          當然,開發者也可以使用 Lit 組件構建高度交互、功能豐富的應用程序,就像使用 React 或 Vue 等框架一樣。 Lit 的功能和開發人員體驗與這些流行的替代方案相當,但 Lit 通過采用瀏覽器的本機組件模型最大限度地減少鎖定、最大限度地提高靈活性并提高可維護性。

          總結起來,Lit 非常適用于以下場景:

          • 共享組件:支持可放入任何站點、構建在任何堆棧上的交互式內容。由于瀏覽器本身就支持 Web Component,因此 Web Component 是完美的解決方案,而且 Lit 使它們易于構建。
          • 設計系統:設計系統可幫助創造始終如一的卓越品牌體驗,而 Lit 能夠有效解決跨框前端架、跨團隊的諸多問題。
          • 網站和應用程序:使用 Lit 組件逐步增強靜態站點或構建整個應用程序。 通過采用 Web Component,Lit 最大限度減少了鎖定并提高了可維護性。

          3.開始使用 Lit

          3.1 安裝 Lit

          首先需要使用 npm 安裝 Lit:

          npm i lit

          然后導入 JavaScript 或 TypeScript 文件:

          import { LitElement, html } from "lit";
          import { customElement, property } from "lit/decorators.js";

          當然,Lit 還可以作為預構建的單文件包提供,從而提高開發工作流程的靈活性:例如,如果開發者更愿意下載單個文件而不是使用 npm 和構建工具。

          這些包是沒有依賴關系的標準 JavaScript 模塊 , 任何現代瀏覽器都能夠從 <script type="module"> 中導入并運行這些代碼,如下所示:

          import {
            LitElement,
            html,
          } from "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js";

          3.2 使用 Lit 開發一個 Web Component

          下面使用 Lit 開發了一個 Web Component:

          import {LitElement, html, css} from 'lit';
          import {customElement, property, state} from 'lit/decorators.js';
          import {play, pause, replay} from './icons.js';
          @customElement("my-timer")
          // @customElement是類裝飾器工廠將裝飾類定義為自定義元素,即 my-timer
          export class MyTimer extends LitElement {
            static styles=css`/* playground-fold */
            :host {
              display: inline-block;
              min-width: 4em;
              text-align: center;
              padding: 0.2em;
              margin: 0.2em 0.1em;
            }
            footer {
              user-select: none;
              font-size: 0.6em;
            }
            @property() duration=60;
            @state() private end: number | null=null;
            @state() private remaining=0;
            render() {
              const {remaining, running}=this;
              const min=Math.floor(remaining / 60000);
              const sec=pad(min, Math.floor(remaining / 1000 % 60));
              const hun=pad(true, Math.floor(remaining % 1000 / 10));
              return html`
                ${min ? `${min}:${sec}` : `${sec}.${hun}`}
                <footer>
                  ${remaining===0 ? '' : running ?
                    html`<span @click=${this.pause}>${pause}</span>` :
                    html`<span @click=${this.start}>${play}</span>`}
                  <span @click=${this.reset}>${replay}</span>
                </footer>
              `;
            }
            start() {
              this.end=Date.now() + this.remaining;
              this.tick();
            }
            pause() {
              this.end=null;
            }
            reset() {
              const running=this.running;
              this.remaining=this.duration * 1000;
              this.end=running ? Date.now() + this.remaining : null;
            }
            tick() {
              if (this.running) {
                this.remaining=Math.max(0, this.end! - Date.now());
                requestAnimationFrame(()=> this.tick());
              }
            }
            get running() {
              return this.end && this.remaining;
            }
            connectedCallback() {
              super.connectedCallback();
              this.reset();
            }
          }

          上面代碼有幾點值得說明:

          • Lit 的主要功能是 LitElement 基類,它是原生 HTMLElement 的便捷且多功能的擴展, 主要功能是:管理元素 properties 和 attribute 并渲染 lit-html 模板的基本元素類。
          • @property()是一個屬性裝飾器,它創建相應屬性值的反應性屬性。 當設置裝飾屬性時,元素將更新并渲染。 也可以選擇提供 PropertyDeclaration 來配置屬性功能。
          • @state() 聲明一個私有或受保護的響應式屬性,代表組件的公共 API 和/或內部狀態,該屬性在更改時會觸發元素的更新,它不會從相應的屬性中反映出來。
          • 默認情況下,樣式是有范圍(scope)的,使 CSS 選擇器保持簡單,并確保組件的樣式不會污染(或被污染)周圍的上下文。
          • Lit 富有表現力的聲明性模板(利用 JavaScript 標記模板文字)可以輕松描述組件的渲染方式。
          • Lit 在普通 JavaScript 表現良好,開發者可以通過使用裝飾器和類型聲明來使用 TypeScript 以獲得更好的人體工程學效果。

          聲明了 my-timer 這個 Web Component 后,接著就可以在 HTML 中引入這個 my-timer 來直接使用:

          <!doctype html>
          <head>
            <link rel="preconnect" href="https://fonts.gstatic.com">
            <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@1,800&display=swap" rel="stylesheet">
            <script type="module" src="./my-timer.js"></script>
            <style>
              body {
                font-family: 'JetBrains Mono', monospace;
                font-size: 36px;
              }
            </style>
          </head>
          <body>
            <my-timer duration="7"></my-timer>
            <my-timer duration="60"></my-timer>
            <my-timer duration="300"></my-timer>
          </body>

          當然,Lit 還包括:指令(Directives)、Shadow DOM、生命周期(Lifecycle)、上下文(Context)、Lit 服務端渲染(Lit SSR)、前端框架集成等高級用法,這些可以在文末的參考資料中直接使用,本文不再過多展開。

          4.本文總結

          本文主要和大家介紹 Lit ,即一個簡單的庫,用于構建快速、輕量級的 Web Component。相信通過本文的閱讀,大家對 Lit 會有一個初步的了解。

          因為篇幅有限,關于 Lit 的更多用法和特性文章并沒有過多展開,如果有興趣,可以在我的主頁繼續閱讀,同時文末的參考資料提供了大量優秀文檔以供學習。最后,歡迎大家點贊、評論、轉發、收藏,您的支持是我不斷創作的動力。

          參考資料

          https://github.com/lit/lit

          https://lit.dev/tutorials/intro-to-lit/

          https://lit.dev/docs/

          https://www.npmjs.com/package/lit

          https://lit.dev/docs/frameworks/react/

          https://coderpad.io/blog/development/web-components-101-framework-comparison/

          https://medium.com/front-end-weekly/web-components-lwc-stencil-and-lit-by-numbers-b158efcf82f7


          主站蜘蛛池模板: 亚洲V无码一区二区三区四区观看| 色国产精品一区在线观看| 国产产一区二区三区久久毛片国语| 天码av无码一区二区三区四区| 农村人乱弄一区二区 | 亚洲国产成人久久一区二区三区| 国产精品成人一区二区| 午夜视频一区二区| 无码人妻AV免费一区二区三区| 精品乱码一区二区三区在线 | 国产成人一区二区三中文| а天堂中文最新一区二区三区| 韩国美女vip福利一区| 国产精品亚洲一区二区三区在线| 精品一区二区三区四区电影| 亚洲综合av一区二区三区| 精品欧洲AV无码一区二区男男 | 国产精品一区电影| 亚洲av无码一区二区三区天堂| 久久人做人爽一区二区三区| 另类一区二区三区| 高清一区二区三区免费视频| 2014AV天堂无码一区| 日韩精品一区二区午夜成人版 | 亚洲AV日韩精品一区二区三区| 日韩精品一区二区三区中文版| 久久久久久人妻一区二区三区| 精品国产一区二区三区麻豆| 91在线精品亚洲一区二区| 精品一区二区三区四区在线播放| 国产成人久久精品一区二区三区| 久久久久人妻精品一区三寸蜜桃| 亚洲av无码天堂一区二区三区| 一区二区国产在线播放| 国产精品主播一区二区| 中文字幕一区二区三区在线播放 | 亚洲av无码一区二区三区不卡| 久久亚洲中文字幕精品一区四| 国产免费伦精品一区二区三区| 国产在线视频一区| 精品视频一区二区三区免费|