ostcss越來越重要了,經(jīng)常可以看到它的身影,比如面試,論壇。本篇文章是小編參考多方資料以及官網(wǎng)總結(jié)出來的,不喜勿噴,喜歡多多支持,謝謝!
另外 React Redux ES6 Webpack...... 更多干貨在個人主頁中查看
postcss 一種對css編譯的工具,類似babel對js的處理,常見的功能如:
1 . 使用下一代css語法
2 . 自動補全瀏覽器前綴
3 . 自動把px代為轉(zhuǎn)換成rem(rem不熟悉的,點這)
4 . css 代碼壓縮等等
postcss 只是一個工具,本身不會對css一頓操作,它通過插件實現(xiàn)功能,autoprefixer 就是其一。
less sass 是預(yù)處理器,用來支持?jǐn)U充css語法。
postcss 既不是 預(yù)處理器也不是 后處理器,其功能比較廣泛,而且重要的一點是,postcss可以和less/sass結(jié)合使用
雖然可以結(jié)合less/sass使用,但是它們還是有很多重復(fù)功能,用其中一個基本就 ok 了。
以下是個人的總結(jié):
postcss 鼓勵開發(fā)者使用規(guī)范的CSS原生語法編寫源代碼,支持未來的css語法,就像babel支持ES6。
less、sass 擴展了原生的東西,它把css作為一個子集,但這不好保持向后兼容。
總體來說區(qū)別不大,看個人喜好吧
這里只說在webpack里集成使用,首先需要 loader
1 . 安裝
npm install postcss-loader –save-dev
2 . webpack配置
一般與其他loader配合使用,下面*標(biāo)部分才是postcss用到的
配合時注意loader的順序(從下面開始加載)
3 . postcss配置
項目根目錄新建 postcss.config.js文件,里面配置一些插件
注:也可以在webpack中配置
1 . Autoprefixer
前綴補全,全自動的,無需多說
安裝:
cnpm install Autoprefixer --save-dev
2 . postcss-cssnext
使用下個版本的css語法【關(guān)于語法另一篇文章會單獨講】
安裝:
cnpm install postcss-cssnext --save-dev
3 . postcss-pxtorem
把px轉(zhuǎn)換成rem
安裝:
cnpm install postcss-pxtorem --save-dev
配置項:
特殊技巧:不轉(zhuǎn)換成rem
px檢測區(qū)分大小寫,也就是說Px/PX/pX不會被轉(zhuǎn)換,可以用這個方式避免轉(zhuǎn)換成rem
下篇:cssnext,下一代css
【關(guān)注一下不迷路】
html css html css javascript html javascript css javascript css
比于早些年前后端代碼緊密耦合、后端工程師還得寫前端代碼的時代,如今已發(fā)展到前后端分離,這種開發(fā)方式大大提升了前后端項目的可維護(hù)性與開發(fā)效率,讓前后端工程師關(guān)注于自己的主業(yè)。然而在帶來便利的同時,也帶來了一些弊端,比如首屏渲染時間(FCP)因為首屏需要請求更多內(nèi)容,比原來多了更多HTTP的往返時間(RTT),這造成了白屏,如果白屏?xí)r間過長,用戶體驗會大打折扣,如果用戶網(wǎng)速差,則FCP會更長。
1. FCP優(yōu)化
在 Google 提出的以用戶為中心的四個頁面性能衡量指標(biāo)中,F(xiàn)P/FCP可能是開發(fā)者們最熟悉的了
為了優(yōu)化首屏渲染時間這個指標(biāo),減少白屏?xí)r間,前端仔們想了很多辦法:
這里要介紹的就是優(yōu)化用戶等待體驗的骨架屏,它可以被視為是原來加載菊花圖的一種升級版,結(jié)合傳統(tǒng)的首屏優(yōu)化方法對應(yīng)用進(jìn)行優(yōu)化可以達(dá)到不錯的效果。
2. 骨架屏
骨架屏可以理解為是當(dāng)數(shù)據(jù)還未加載進(jìn)來前,頁面的一個空白版本,一個簡單的關(guān)鍵渲染路徑??梢钥匆幌孪旅鍲acebook的骨架屏實現(xiàn),可以看到在頁面完全渲染完成之前,用戶會看到一個樣式簡單,描繪了當(dāng)前頁面的大致框架的骨架屏頁面,然后骨架屏中各個占位部分被實際資源完全替換,這個過程中用戶會覺得內(nèi)容正在逐漸加載即將呈現(xiàn),降低了用戶的焦躁情緒,使得加載過程主觀上變得流暢。
可以看一下下面的示例圖,第一個為骨架屏,第二個為菊花圖,第三個為無優(yōu)化,可以看到相比于傳統(tǒng)的菊花圖會在感官上覺得內(nèi)容出現(xiàn)的流暢而不突兀,體驗更加優(yōu)良。
如今這項技術(shù)已經(jīng)在Facebook、Google、支付寶、餓了么、簡書、新浪微博、知乎、美團(tuán)、領(lǐng)英等公司的產(chǎn)品中被廣泛的使用。在論壇和社區(qū)也都有不少文章討論骨架屏的實現(xiàn)和使用場景等。
3. 生成骨架屏的方法
生成骨架屏的方式主要有:
另外還有個插件 vue-skeleton-webpack-plugin,它將插入骨架屏的方式由手動改為自動,原理在構(gòu)建時使用 Vue 預(yù)渲染功能,將骨架屏組件的渲染結(jié)果 HTML 片段插入 HTML 頁面模版的掛載點中,將樣式內(nèi)聯(lián)到 head 標(biāo)簽中。這個插件可以給單頁面的不同路由設(shè)置不同的骨架屏,也可以給多頁面設(shè)置,同時為了開發(fā)時調(diào)試方便,會將骨架屏作為路由寫入router中,可謂是相當(dāng)體貼了。
vue-skeleton-webpack-plugin的具體使用參考 vue-style-codebase,主要關(guān)注build目錄的幾個文件,線上Demo 在Chrome的DevTools中把network的網(wǎng)速調(diào)為Gast 3G / Slow 3G就能看到效果了~
鏈接文章:
https://juejin.im/post/5b79a2786fb9a01a18267362
聊聊圖片預(yù)加載:提升用戶體驗與性能的秘密武器
**引言:**
在Web前端開發(fā)中,圖片資源的加載速度直接影響著用戶體驗和頁面性能。尤其是在涉及到大量圖片展示的網(wǎng)站或應(yīng)用中,圖片預(yù)加載作為一種優(yōu)化手段顯得尤為重要。本文將詳細(xì)介紹圖片預(yù)加載的原理、應(yīng)用場景、實現(xiàn)方法以及相關(guān)注意事項,并通過具體的HTML+JS代碼實例,讓你深入了解如何運用預(yù)加載技術(shù)改善用戶的瀏覽體驗。
---
### **一、什么是圖片預(yù)加載?**
**標(biāo)題:未雨綢繆,提前加載的背后邏輯**
圖片預(yù)加載是指在用戶實際查看圖片之前,預(yù)先將圖片資源加載到瀏覽器緩存中。這樣當(dāng)用戶瀏覽到對應(yīng)位置時,圖片已經(jīng)處于可用狀態(tài),從而避免了圖片加載導(dǎo)致的頁面空白或延遲現(xiàn)象,顯著提升了頁面的流暢性和整體性能。
---
### **二、圖片預(yù)加載的重要性**
**標(biāo)題:瞬間加載,用戶體驗的飛躍**
1. **更快的視覺呈現(xiàn)**:預(yù)加載能夠確保圖片在用戶視線到達(dá)前就已經(jīng)準(zhǔn)備好,減少用戶等待圖片加載的時間,提供即視即所得的瀏覽體驗。
2. **優(yōu)化頁面滾動流暢性**:對于長頁面和圖片瀑布流等場景,預(yù)加載能夠消除滾屏?xí)r的圖片加載滯后問題,確保頁面滾動過程平滑無阻。
3. **降低用戶跳出率**:快速加載的內(nèi)容能夠增加用戶留存,減少因等待時間過長而導(dǎo)致的用戶流失。
---
### **三、圖片預(yù)加載的實現(xiàn)方法**
**標(biāo)題:實戰(zhàn)演練,手把手教你實現(xiàn)預(yù)加載**
1. **HTML `<link rel="prefetch">` 方式**
```html
<link rel="prefetch" href="image.jpg">
```
`rel="prefetch"` 屬性告訴瀏覽器在閑置時預(yù)先下載指定資源,適用于瀏覽器支持的情況下對將來可能訪問的資源進(jìn)行預(yù)加載。
2. **JavaScript 實現(xiàn)預(yù)加載**
```javascript
// 基礎(chǔ)圖片預(yù)加載函數(shù)
function preloadImages(urls) {
urls.forEach(function(url) {
var img=new Image();
img.src=url;
});
}
// 使用預(yù)加載函數(shù)
var imageUrls=['image1.jpg', 'image2.jpg'];
preloadImages(imageUrls);
```
上述JavaScript代碼中,我們通過創(chuàng)建新的`Image`對象并設(shè)置其`src`屬性為待加載圖片URL的方式實現(xiàn)預(yù)加載。當(dāng)瀏覽器解析到這一行代碼時,就會立即發(fā)送請求加載圖片資源。
3. **更進(jìn)階的預(yù)加載庫(如lozad.js)**
```html
<!-- 引入lozad.js庫 -->
<script src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script>
<!-- 使用lozad.js進(jìn)行懶加載 -->
<img
data-src="image.jpg"
class="lozad"
alt="Example Image"
/>
```
Lozad.js是一個輕量級的懶加載庫,它能夠在圖片進(jìn)入可視區(qū)時才進(jìn)行加載,既實現(xiàn)了預(yù)加載的目的,又節(jié)省了帶寬和CPU資源。
---
### **四、圖片預(yù)加載的注意事項**
**標(biāo)題:謹(jǐn)慎而行,預(yù)加載的合理應(yīng)用**
1. **合理安排預(yù)加載數(shù)量**:過多的預(yù)加載可能導(dǎo)致帶寬占用過高,影響其他關(guān)鍵資源加載速度。
2. **判斷用戶網(wǎng)絡(luò)狀況**:在低速網(wǎng)絡(luò)環(huán)境下,避免無腦預(yù)加載,可采用動態(tài)加載策略。
3. **隱私保護(hù)與資源優(yōu)化**:尊重用戶隱私,避免預(yù)加載無關(guān)緊要的資源,同時對圖片進(jìn)行壓縮和尺寸裁剪,減輕預(yù)加載負(fù)擔(dān)。
---
**結(jié)語:**
圖片預(yù)加載作為Web前端優(yōu)化的一項關(guān)鍵技術(shù),巧妙運用可以顯著提升用戶體驗,降低用戶流失率。在實踐中,我們要根據(jù)具體項目需求和用戶場景,靈活選擇合適的預(yù)加載策略,做到既能加速頁面渲染,又能兼顧性能與資源優(yōu)化,達(dá)到提升網(wǎng)站整體表現(xiàn)的終極目標(biāo)。而不斷精進(jìn)和深化前端優(yōu)化技術(shù),正是每一位前端開發(fā)者追求卓越的必由之路。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。