整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          W3C 決定使用 CSS 嵌套語法,你怎么看

          家好,今天告訴大家一個好消息,CSS要支持類似Sass框架的嵌套語法了,不需要任何框架,就可以很方便的使用,是不是特別爽呢。那么我們一起看看這個想法和過程是如何產(chǎn)生的,有助于我們更好的理解這個 CSS 嵌套語法方案

          W3C 的年底充滿了起起伏伏,該組織與麻省理工學(xué)院之間的辯論最終在圣誕節(jié)前夕得到解決,這要歸功于兩個組織的領(lǐng)導(dǎo)。


          幸運的是,它并沒有影響 CSS 嵌套的工作,這個新特性不僅在 CSS 組中,而且在開發(fā)者社區(qū)中都引起了激烈的爭論。


          2022 年 12 月 15 日,Jen Simmons 宣布了一項調(diào)查,以選擇開發(fā)人員最喜歡的 CSS 嵌套變體。

          在排除了方案一和方案二之后,2500 名開發(fā)者不得不在方案三、方案四和方案五之間做出選擇。

          調(diào)查結(jié)果太棒了!事實證明,86% 的開發(fā)人員選擇了與心愛的 Sass 最相似的選項 3。


          在我們能夠慶祝 CSS 將會擁有一個熟悉的原生嵌套解決方案之前,有一些事情需要考慮。

          調(diào)查結(jié)果可作為社區(qū)期望的指標。 W3C 團隊采取正確方向的輸入。

          團隊在認真聽取用戶聲音并聽取在線辯論的同時,還必須完善最終的解決方案。有許多原因需要考慮。

          雖然 Sass 語法很好,但不可能將其 1:1 轉(zhuǎn)換為 CSS。

          CSS 標準依賴于瀏覽器解析必須理解新語法的樣式表。團隊必須考慮整個 CSS 標準,并確保新語法在所有用例中都能兼容。

          這可能很棘手,可能需要解析器開關(guān)或一些規(guī)則來確保嵌套以可預(yù)測的方式工作。

          為了新語法的成功,規(guī)則集必須最少,團隊被吸引到特殊字符規(guī)則中。該規(guī)則規(guī)定嵌套選擇器必須以特殊字符開頭。例如 &、.、# 或:。

          該規(guī)則很容易理解,應(yīng)該也很容易記住。

          還有其他不確定因素。嵌套運算符 (&) 是強制性的還是可選的,目前仍有爭議。

          盡管如此,該團隊在兩周前決定聽從開發(fā)人員的聲音,并從選項 3 開始繼續(xù)工作。與 Sass 最相似的一個。同時對未來可能發(fā)生的所有可能性持開放態(tài)度。

          如果您是前端網(wǎng)絡(luò)工程師,您也可以參與這項工作。查看文章末尾的鏈接以導(dǎo)航到討論 CSS 嵌套的問題。

          完善 CSS 嵌套肯定需要幾個月的時間。我會讓你知道進展情況。

          在 W3C 團隊支持標準的情況下,我相信最終的解決方案將成為構(gòu)建結(jié)構(gòu)良好的樣式表的標準。對于構(gòu)建現(xiàn)代應(yīng)用程序非常重要的東西。

          結(jié)束

          今天的分享就到這里,針對這個方案大家有什么看法,歡迎大家在評論區(qū)發(fā)表看法,你也可以通過以下的討論鏈接參與到這個標準的制定中。感謝你的閱讀,如果你喜歡我的分享,別忘了點贊轉(zhuǎn)發(fā),讓更多的人看到,最后別忘記點個關(guān)注,你的支持將是我分享最大的動力,后續(xù)我會持續(xù)輸出更多內(nèi)容,敬請期待。

          討論鏈接:https://github.com/w3c/csswg-drafts/issues/8248

          原文:https://tomaszs2.medium.com/w3c-decided-on-css-nested-syntax-950bc13f3ce7

          作者:Tom Smykowski

          非直接翻譯,有自行改編和添加部分。

          擊鏈接閱讀原文,獲取更多技術(shù)內(nèi)容:React組件封裝實踐:如何拆解復(fù)雜的頁面-阿里云開發(fā)者社區(qū)


          在日常開發(fā)中,遇到非常難以維護的頁面是常態(tài),相信不少同學(xué)也為此苦惱過,筆者在業(yè)務(wù)開發(fā)中總結(jié)了些經(jīng)驗希望對大家有所啟發(fā)。(后臺回復(fù)大數(shù)據(jù)即可獲得《大數(shù)據(jù)&AI實戰(zhàn)派》電子書)

          作者 | 王峰(楚梟)

          來源 | 阿里開發(fā)者公眾號


          背景

          在日常開發(fā)中,遇到非常難以維護的頁面是常態(tài),相信不少同學(xué)也為此苦惱過,筆者在業(yè)務(wù)開發(fā)中總結(jié)了些經(jīng)驗希望對大家有所啟發(fā)。下圖是一個較為復(fù)雜的詳情頁、表單頁,我截取了其中一小部分作為示例:

          隨著需求不斷迭代,這個頁面的代碼變得越來越復(fù)雜,代碼達到幾千行,html 標簽嵌套層級非常深,每次想在正確的節(jié)點改東西、加元素都非常費眼睛;每次想修改、疊加業(yè)務(wù)邏輯,看到一堆 useEffect、useState、useRef 令人望而卻步。于是決定重構(gòu)以改變現(xiàn)狀。


          如何重構(gòu),以拆解復(fù)雜頁面

          如何重構(gòu)一個復(fù)雜前端頁面?筆者平常主要寫后端,實際工程中后端代碼的腐化很多都來源于 if-else 不斷疊加,要重構(gòu)一般分幾個層次看:

          • 如果是某一個業(yè)務(wù)概念比較復(fù)雜造成的大量 if-else 嵌套,使用策略模式重構(gòu);
          • 如果是多個業(yè)務(wù)概念交織造成的復(fù)雜度,則用責(zé)任鏈模式梳理好每個層次;
          • 如果是更高的抽象層次,比如不同的業(yè)務(wù)身份有不同的執(zhí)行鏈路,或者不同的業(yè)務(wù)身份都要做某件事但做法不同,那么最好使用模板方法設(shè)計模式定義好高層次的業(yè)務(wù)抽象和默認邏輯,不同的業(yè)務(wù)身份進行選擇性的重寫或業(yè)務(wù)邏輯擴展。

          大的思路如此,具體場景各有各的特殊性,需要靈活應(yīng)對,這里也不過多展開。總之,后端的復(fù)雜度和各個場景的業(yè)務(wù)邏輯息息相關(guān),垂直縱深很大,但前端呢?私以為前端雖然也有業(yè)務(wù)邏輯但不深,它的復(fù)雜不是來源于垂直縱深,而是水平堆積。一個頁面的內(nèi)容經(jīng)常又多又雜,有詳情、有表單、各種區(qū)塊、不同標簽頁,里面的內(nèi)容我不贅述。那么重構(gòu)的方向呼之欲出:使用組合的思想拆分水平堆積的業(yè)務(wù)邏輯塊。具體到 React,其實就是拆解業(yè)務(wù)、封裝組件,是一個組件化的過程。


          組件化

          其實前端整個 React App 說白了可以抽象成一個組件樹,如圖:

          筆者習(xí)慣將組件分成:基礎(chǔ)組件和區(qū)塊組件。

          • 基礎(chǔ)組件:具有一定業(yè)務(wù)屬性的小型組件單元。它有業(yè)務(wù)屬性,但比較弱,強調(diào)通用性。
          • 區(qū)塊組件:業(yè)務(wù)知識較重的大組件。它內(nèi)聚了很多業(yè)務(wù)知識,通用性弱,甚至可以沒有通用性,強調(diào)業(yè)務(wù)的內(nèi)聚性。

          按照基礎(chǔ)組件和區(qū)塊組件的劃分,我開始重構(gòu)上圖詳情頁。


          組件封裝實踐

          我將頁面上的展示內(nèi)容按照業(yè)務(wù)塊進行了劃分,自頂向上對業(yè)務(wù)區(qū)塊進行了重新的定義,如圖:

          劃分好了就開始封裝,列舉幾個組件的封裝示例。


          基礎(chǔ)組件:AliTalk IM

          AliTalk IM 組件定義

          接收方 IM 身份的 id 作為入?yún)ⅲ祷?IM 展示組件,點擊 icon 則喚起聊天彈窗進行聊天操作,完成后可關(guān)閉彈窗。至于初始化聊天框、銷毀聊天框的邏輯,以及如何進行聊天,應(yīng)該在組件內(nèi)封裝好,外部業(yè)務(wù)不關(guān)心這些,主要代碼:

          type ChatProps = {
            uid?: string;
          };
          const Chat: FC<ChatProps> = (data: ChatProps) => {
            const [showChat, setShowChat] = useState(true);
            useEffect(() => {
              console.log('init Alitalk: ' + data.uid);
              return () => {
                console.log('destroy Alitalk: ' + data.uid);
                setShowChat(false);
          
                const aliTalkMessageBox = document.getElementsByClassName('weblite-iframe');
                for (let i = 0; i < aliTalkMessageBox.length; i++) {
                  const item = aliTalkMessageBox[i];
                  item.remove();
                }
              };
            }, []);
          
            return (
              <div>
                {showChat && (
                  <Alitalk uid={data.uid} pid={'xx'} bizType={1} bizId={'xx'} >
                    <img width={24} height={24}
                      src={
                        'https://img.alicdn.com/imgextra/i2/O1CN01acXzMG1d5JsurHGVR_!!6000000003684-2-tps-200-200.png'
                      }  />
                    <span style={{ marginLeft: '5px', color: '#FF6600' }}>chat now</span>
                  </Alitalk>
                )}
              </div>
            );
          };
          export default Chat;


          AliTalk IM 組件定義組件引用

          直接引入 <Chat> 標簽,一行代碼即可:

          <Descriptions style={{ marginBottom: 24 }} title="買家信息">
                <Descriptions.Item label="買家旺旺">
                      <Chat uid={detailData?.data?.buyerAliTalkId} />
                </Descriptions.Item>
          </Descriptions>


          剩余60%,完整內(nèi)容請點擊下方鏈接查看:React組件封裝實踐:如何拆解復(fù)雜的頁面-阿里云開發(fā)者社區(qū)


          阿里云開發(fā)者社區(qū),千萬開發(fā)者的選擇。百萬精品技術(shù)內(nèi)容、千節(jié)免費系統(tǒng)課程、豐富的體驗場景、活躍的社群活動、行業(yè)專家分享交流,盡在:阿里云開發(fā)者社區(qū)-云計算社區(qū)-阿里云

          網(wǎng)頁開發(fā)過程中,我們有時會遇到HTML頁面白屏的問題,即打開網(wǎng)頁時頁面顯示空白,沒有任何內(nèi)容。這不僅令用戶困惑,也使開發(fā)者頭疼不已。本文將分享一些常見的HTML頁面白屏問題解決方法,幫助你快速解決這個問題,讓你的網(wǎng)頁煥然一新!

          第一步:檢查HTML代碼

          首先,我們需要檢查HTML代碼是否正確。常見的錯誤包括標簽未閉合、標簽嵌套錯誤等。這些錯誤可能會導(dǎo)致頁面無法正常顯示。因此,仔細檢查HTML代碼,確保沒有語法錯誤是解決白屏問題的第一步。

          第二步:檢查CSS文件

          HTML頁面的樣式通常由CSS文件控制。如果CSS文件中存在錯誤或者無法正常加載,可能會導(dǎo)致頁面白屏。我們可以通過以下步驟檢查CSS文件是否存在問題:

          1、檢查CSS文件路徑是否正確:確保CSS文件的路徑正確,并且文件存在于指定的位置。可以通過瀏覽器開發(fā)者工具查看網(wǎng)絡(luò)面板,檢查CSS文件是否被成功加載。

          2、檢查CSS文件語法錯誤:使用CSS驗證工具,如W3C CSS驗證服務(wù),檢查CSS文件是否存在語法錯誤。如果存在錯誤,及時修復(fù)。

          3、檢查CSS選擇器和樣式規(guī)則:檢查CSS文件中的選擇器和樣式規(guī)則是否正確。可能存在選擇器與HTML元素不匹配或樣式規(guī)則沖突的情況。可以通過逐個注釋掉樣式規(guī)則,逐步排查問題。

          第三步:檢查JavaScript代碼

          JavaScript代碼也可能導(dǎo)致頁面白屏。以下是檢查JavaScript代碼的步驟:

          1、檢查JS文件路徑是否正確:與CSS文件類似,確保JS文件的路徑正確,并且文件存在于指定的位置。通過瀏覽器開發(fā)者工具查看控制臺面板,檢查是否有JS文件加載錯誤的提示信息。

          2、檢查JS代碼語法錯誤:使用JS語法檢查工具,檢查JS代碼是否存在語法錯誤。如果有錯誤,及時修復(fù)。

          3、檢查JS代碼邏輯錯誤:檢查JS代碼中的邏輯是否正確。可能存在變量未定義、函數(shù)未調(diào)用或者邏輯錯誤等問題。可以通過調(diào)試工具,如瀏覽器開發(fā)者工具中的調(diào)試器,逐步排查問題。

          第四步:排查網(wǎng)絡(luò)請求問題

          如果前面的步驟都沒有發(fā)現(xiàn)問題,那么可能是網(wǎng)絡(luò)請求出現(xiàn)了問題。以下是一些排查網(wǎng)絡(luò)請求問題的方法:

          1、檢查網(wǎng)絡(luò)連接:確保你的設(shè)備已連接到互聯(lián)網(wǎng),并且網(wǎng)絡(luò)連接穩(wěn)定。

          2、檢查資源加載狀態(tài):通過瀏覽器開發(fā)者工具的網(wǎng)絡(luò)面板,檢查頁面中的資源加載狀態(tài)。可能存在資源加載失敗或者超時的情況,導(dǎo)致頁面白屏。

          3、檢查服務(wù)器配置:如果你使用了服務(wù)器端腳本語言,如PHP,檢查服務(wù)器配置是否正確。可能存在服務(wù)器配置問題導(dǎo)致頁面無法正確渲染。

          第五步:優(yōu)化頁面性能

          如果以上方法都沒有解決問題,那么可能是頁面性能問題導(dǎo)致白屏。以下是一些優(yōu)化頁面性能的方法:

          1、壓縮和合并文件:將CSS和JS文件進行壓縮和合并,減少文件的大小和數(shù)量,提高頁面加載速度。

          2、使用緩存:利用瀏覽器緩存機制,將靜態(tài)資源進行緩存,減少服務(wù)器的請求次數(shù),提高頁面加載速度。

          3、異步加載資源:使用異步加載技術(shù),如異步加載JS文件或使用延遲加載,減少頁面加載時間。

          4、減少HTTP請求:減少頁面中的HTTP請求次數(shù)等。

          結(jié)語:

          通過以上五個步驟,我們可以逐步排查HTML頁面白屏問題,并解決它們。不同的問題可能需要不同的解決方法,因此需要耐心和細心地分析和排查。在開發(fā)過程中,我們也要時刻關(guān)注頁面性能,優(yōu)化頁面加載速度,提高用戶體驗。


          主站蜘蛛池模板: 在线精品一区二区三区电影| 国产精华液一区二区区别大吗| 老熟女五十路乱子交尾中出一区| 日韩精品一区二区三区中文版| 无码人妻精品一区二区三区东京热 | 亚洲精品无码一区二区| 成人在线视频一区| 日韩视频一区二区| 成人丝袜激情一区二区| 亚洲熟妇AV一区二区三区宅男| 免费萌白酱国产一区二区三区| 成人日韩熟女高清视频一区| 亚洲一区综合在线播放| 精品一区二区三区在线观看l | 中文字幕日韩一区二区三区不 | 在线精品亚洲一区二区三区| 国产精品 一区 在线| 日本一区二区三区精品中文字幕| 国产精品无码一区二区三级| 无码精品一区二区三区在线| 无码囯产精品一区二区免费 | 无码av中文一区二区三区桃花岛| 国产伦精品一区二区三区免费下载 | 色偷偷av一区二区三区| 精品人妻无码一区二区三区蜜桃一| 国产精品一区视频| 上原亚衣一区二区在线观看| 乱色精品无码一区二区国产盗| 国产成人高清亚洲一区91 | 国产在线精品一区二区| 亚洲色精品vr一区二区三区| 亚洲精品无码一区二区| 久久久久久一区国产精品 | 久久福利一区二区| 精品一区二区三区水蜜桃| 2022年亚洲午夜一区二区福利| 国产在线无码视频一区| 日韩一区二区视频在线观看| 国产日韩精品一区二区三区在线| 无码国产精品久久一区免费| 午夜福利一区二区三区高清视频|