Vue2 必備的知識點

1祭往、Vue的優(yōu)點伦意?Vue的缺點?

優(yōu)點:

  • 漸進(jìn)式
Vue 漸進(jìn)式框架是指 Vue.js 這個 JavaScript 框架的設(shè)計理念和特點链沼。
它被稱為漸進(jìn)式框架默赂,主要是因為它的使用方式可以根據(jù)項目的需求逐步增加功能沛鸵,而不是一次性地強(qiáng)制性地引入所有功能括勺。
  • 組件化
template、script曲掰、style組成的模版
  • 虛擬dom
虛擬 DOM 是 Vue.js 中的一個重要概念疾捍,它是一種用 JavaScript 對象表示真實 DOM 樹結(jié)構(gòu)的技術(shù)。在 Vue.js 中栏妖,每個 Vue 組件都有一個對應(yīng)的
虛擬 DOM乱豆,當(dāng)組件的狀態(tài)發(fā)生改變時,Vue 會重新生成一個新的虛擬 DOM 樹吊趾。然后宛裕,Vue 會將新舊虛擬 DOM 進(jìn)行比較瑟啃,并找出兩者之間的差異,最終將差異
應(yīng)用到真實的 DOM 上揩尸,從而更新頁面的顯示蛹屿。
虛擬 DOM 的使用使得 Vue.js 能夠高效地更新頁面,因為 Vue 可以通過比較虛擬 DOM 來確定最小的 DOM 更新操作岩榆,
從而避免了直接操作真實 DOM 可能帶來的性能問題错负。
虛擬 DOM 的工作流程通常是這樣的:
1. 初始渲染時,Vue.js 會根據(jù)組件的模板生成初始的虛擬 DOM 樹勇边。
2. 當(dāng)組件的狀態(tài)發(fā)生變化時犹撒,Vue.js 會重新生成一個新的虛擬 DOM 樹。
3. Vue.js 將新舊虛擬 DOM 樹進(jìn)行比較粒褒,找出兩者之間的差異识颊。
4. 最后,Vue.js 將差異應(yīng)用到真實的 DOM 上奕坟,從而更新頁面的顯示谊囚。
通過虛擬 DOM 技術(shù),Vue.js 能夠高效地更新頁面执赡,并且保證頁面的顯示和用戶交互的性能镰踏。
  • 響應(yīng)式數(shù)據(jù)
Vue 中的響應(yīng)式數(shù)據(jù)是通過使用 Vue 實例中的 data 屬性來定義的。
當(dāng)你在 data 中定義了一個屬性時沙合,Vue.js 會將這些屬性轉(zhuǎn)換為響應(yīng)式數(shù)據(jù)奠伪,
Vue 會劫持這些屬性的 getter 和 setter 方法,從而實現(xiàn)數(shù)據(jù)變化時通知相關(guān)視圖進(jìn)行更新首懈。
Vue 的響應(yīng)式數(shù)據(jù)是通過 Object.defineProperty 或者 ES6 的 Proxy 實現(xiàn)的绊率,這些技術(shù)使得 Vue 能夠追蹤屬性的變化,并在必要時觸發(fā)相應(yīng)的更新究履。
  • 單頁面路由
Vue Router 提供了兩種路由模式:

哈希模式 (Hash Mode):在哈希模式下滤否,URL 中的路由會以 '#' 開頭,例如 'http://example.com/#/home'最仑。哈希模式的優(yōu)點是兼容性好藐俺,因為哈希部分不會被發(fā)送到服務(wù)器,
不會影響服務(wù)端路由的處理泥彤。但缺點是在某些情況下 URL 可能會顯得不太美觀欲芹,并且在一些老舊的瀏覽器中可能存在兼容性問題。

歷史模式 (History Mode):在歷史模式下吟吝,URL 中的路由不再以' #' 開頭菱父,而是正常的路徑形式,例如 'http://example.com/home'。歷史模式的優(yōu)點是 URL 更加美觀
浙宜,更接近傳統(tǒng)的網(wǎng)站 URL 結(jié)構(gòu)官辽,同時對 SEO 也更友好。但缺點是需要服務(wù)器端的支持粟瞬,以確保在直接訪問 URL 時能夠正確地路由到對應(yīng)的頁面野崇。
  • 數(shù)據(jù)與視圖分開

缺點:

  • 單頁面不利于seo
使用服務(wù)器端渲染(SSR):這是最常用的方法,可以讓搜索引擎爬蟲直接獲取到渲染后的HTML頁面亩钟,從而提高SEO效果乓梨。
使用預(yù)渲染(Prerendering):這種方法可以在構(gòu)建時生成靜態(tài)HTML文件,然后將其提供給搜索引擎爬蟲清酥,從而提高SEO效果扶镀。
使用Vue的vue-meta插件:這個插件可以讓你在Vue組件中定義meta標(biāo)簽、title焰轻、keywords臭觉、description屬性等,從而優(yōu)化SEO效果辱志。
  • 不兼容IE
要解決 Vue 不兼容 Internet Explorer(IE)的問題蝠筑,可以采取以下幾種方法:
1. **使用 Polyfill**:使用一些 Polyfill 庫來填充一些在 IE 中缺失的功能,比如 ES6/ES7 的新特性或者一些 DOM API揩懒。常見的 Polyfill 庫包括 Babel Polyfill什乙、core-js 等。
2. **使用適當(dāng)?shù)?Babel 配置**:通過 Babel 可以將新的 JavaScript 語法轉(zhuǎn)換成 ES5 兼容的代碼已球。確保你的 Babel 配置兼容 IE 瀏覽器臣镣,可以在 Babel 配置文件中設(shè)置 `targets` 來指定兼容的瀏覽器版本。
3. **檢查 Vue 版本**:確保你使用的 Vue 版本支持 IE 瀏覽器智亮。Vue 2.x 版本是支持 IE9 及以上版本的忆某,但需要在構(gòu)建時設(shè)置一些兼容選項。
  • 首屏加載時間長
    路由懶加載阔蛉、組件懶加載弃舒、CDN 加速、圖片優(yōu)化状原、HTTP 緩存靜態(tài)資源聋呢、代碼壓縮和混淆、服務(wù)端渲染 (SSR)遭笋、按需加載第三方庫
    在 Vue.js 中坝冕,預(yù)渲染是一種優(yōu)化技術(shù)徒探,它可以在構(gòu)建階段將靜態(tài)頁面預(yù)先渲染成 HTML 文件瓦呼,然后在瀏覽器加載頁面時直接提供給用戶,而不是在客戶端動態(tài)生成頁面。這樣可以加快頁面的首屏加載速度央串,并且改善搜索引擎優(yōu)化(SEO)的表現(xiàn)磨澡。
    預(yù)渲染一般用于那些內(nèi)容不頻繁變動且相對靜態(tài)的頁面,比如官方網(wǎng)站的首頁质和、產(chǎn)品介紹頁等稳摄。對于這些頁面,預(yù)渲染可以將頁面內(nèi)容直接嵌入到 HTML 文件中饲宿,不需要等待 JavaScript 加載和執(zhí)行厦酬,從而減少了頁面加載時間。
在 Vue.js 中實現(xiàn)預(yù)渲染一般有兩種方式:
  1. 使用預(yù)渲染插件:可以使用一些 Vue 預(yù)渲染插件瘫想,如 prerender-spa-plugin仗阅,它可以在構(gòu)建時自動生成預(yù)渲染的靜態(tài) HTML 文件。你可以配置要預(yù)渲染的路由和其他相關(guān)選項国夜。

  2. 服務(wù)器端渲染 (SSR):Vue.js 本身提供了服務(wù)端渲染 (SSR) 的功能减噪,SSR 可以在服務(wù)器端動態(tài)生成完整的 HTML 頁面,包括首屏內(nèi)容和數(shù)據(jù)车吹,然后將其發(fā)送給客戶端筹裕。這種方式也可以實現(xiàn)預(yù)渲染的效果,但相對復(fù)雜一些窄驹。

2朝卒、webpack相關(guān)的優(yōu)化?

作為 Vue 前端開發(fā)工程師乐埠,我經(jīng)常與 Webpack 打交道扎运,并對其進(jìn)行了多種優(yōu)化,包括但不限于以下幾個方面:

  1. 代碼分割 (Code Splitting):通過 Webpack 的代碼分割功能饮戳,將項目代碼拆分成多個小塊豪治,實現(xiàn)按需加載,減少初始加載時間扯罐。

  2. 壓縮代碼:使用 Webpack 的 UglifyJSPlugin 或 TerserPlugin 來壓縮 JavaScript 代碼负拟,減小文件體積,提高頁面加載速度歹河。

  3. 圖片優(yōu)化:利用 image-webpack-loader 或者 url-loader 對圖片進(jìn)行優(yōu)化和壓縮掩浙,以減少圖片文件大小,加快頁面加載速度秸歧。

  4. 懶加載:利用 Webpack 的動態(tài)導(dǎo)入功能實現(xiàn)組件的懶加載厨姚,只在需要時才加載相關(guān)模塊,減少初始加載時間键菱。

  5. Tree shaking:通過 Webpack 的 Tree Shaking 功能谬墙,消除未使用的代碼,減少打包后文件的大小。

  6. 分離 CSS:使用 Webpack 的 ExtractTextPlugin 或 MiniCssExtractPlugin 將 CSS 單獨提取出來拭抬,減少頁面渲染時間部默。

  7. 啟用 Scope Hoisting:利用 Webpack 的 Scope Hoisting 特性,減少模塊間的函數(shù)聲明造虎,提升代碼在瀏覽器中的執(zhí)行速度傅蹂。

  8. 使用緩存:配置 Webpack 的 hash 或者 chunkhash,利用瀏覽器緩存機(jī)制算凿,減少重復(fù)加載相同資源份蝴。

  9. 優(yōu)化 Webpack 配置:合理配置 Webpack 的 entry、output氓轰、resolve搞乏、devtool 等選項,以及通過分析構(gòu)建過程中的性能瓶頸戒努,進(jìn)行相應(yīng)的優(yōu)化请敦。

這些優(yōu)化策略在實際項目中經(jīng)常被使用,它們能夠有效提升 Webpack 構(gòu)建效率和項目性能储玫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侍筛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子撒穷,更是在濱河造成了極大的恐慌匣椰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件端礼,死亡現(xiàn)場離奇詭異禽笑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蛤奥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門佳镜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凡桥,你說我怎么就攤上這事蟀伸。” “怎么了缅刽?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵啊掏,是天一觀的道長。 經(jīng)常有香客問我衰猛,道長迟蜜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任啡省,我火速辦了婚禮娜睛,結(jié)果婚禮上髓霞,老公的妹妹穿的比我還像新娘。我一直安慰自己微姊,他們只是感情好酸茴,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布分预。 她就那樣靜靜地躺著兢交,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笼痹。 梳的紋絲不亂的頭發(fā)上配喳,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音凳干,去河邊找鬼晴裹。 笑死,一個胖子當(dāng)著我的面吹牛救赐,可吹牛的內(nèi)容都是我干的涧团。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼经磅,長吁一口氣:“原來是場噩夢啊……” “哼泌绣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起预厌,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阿迈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后轧叽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苗沧,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年炭晒,在試婚紗的時候發(fā)現(xiàn)自己被綠了待逞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡网严,死狀恐怖飒焦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屿笼,我是刑警寧澤牺荠,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站驴一,受9級特大地震影響休雌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肝断,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一杈曲、第九天 我趴在偏房一處隱蔽的房頂上張望驰凛。 院中可真熱鬧,春花似錦担扑、人聲如沸恰响。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胚宦。三九已至,卻和暖如春燕垃,著一層夾襖步出監(jiān)牢的瞬間枢劝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工卜壕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留您旁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親已添。 傳聞我的和親對象是個殘疾皇子脖咐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容