天天看點

大廠 2 個 Vue 進階實踐技巧總結,效率提升 80%!

對于從事前端工作的小夥伴,掌握Vue,React這樣的架構可以說是前端基本功了。人人都會用,那我們怎樣才能寫得比别人優雅?比别人漂亮?

鑒于一線網際網路大廠在前沿技術領域的持續研究和大規模投入,直接向他們取經,是最便捷也是最高效的學習方式。

本文将介紹大廠Vue項目兩大最佳實踐:

01 一勞永逸的元件注冊

通常在元件使用前,需要引入後再注冊,但如果高頻元件多了,每次都這樣做,不僅新增很多代碼,效率還低!我們應該如何優化呢?

其實,我們可以借助一下webpack的require.context() 方法來建立自己的(子產品)上下文,進而實作自動動态require元件。

我們先在components檔案夾(這裡面都是些高頻元件)添加一個叫global.js的檔案,在這個檔案裡使用require.context 動态将需要的高頻元件統統打包進來,然後在main.js檔案中引入global.js的檔案。

//  global.js檔案
import Vue from 'vue'
function changeStr (str) {
  return str.charAt(0).toUpperCase() + str.slice(1)
}
const requireComponent = require.context('./', false, /\.vue$/)
// 查找同級目錄下以vue結尾的元件
const install = () => {
  requireComponent.keys().forEach(fileName => {
    let config = requireComponent(fileName)
    console.log(config) // ./child1.vue 然後用正則拿到child1
    let componentName = changeStr(
      fileName.replace(/^\.\//, '').replace(/\.\w+$/, '')
    )
    Vue.component(componentName, config.default || config)
  })
}
export default {
  install // 對外暴露install方法
}
           

最後我們就可以随時随地在頁面中使用這些高頻元件,無需再手動一個個引入了。

02  高精度權限控制

——自定義指令directive

我們通常給一個元素添加 v-if / v-show 來做權限管理,但如果判斷條件繁瑣且多個地方需要判斷,這種方式的代碼不僅不優雅而且備援。

針對這種情況,我們可以通過全局自定義指令來處理:我們先在建立個 array.js 檔案,用于存放與權限相關的全局函數:

// array.js
export function checkArray (key) {
  let arr = ['1', '2', '3', '4', 'demo']
  let index = arr.indexOf(key)
  if (index > -1) {
    return true // 有權限
  } else {
    return false // 無權限
  }
}
           

然後在将 array 檔案挂載到全局中:

// main.js
  import { checkArray } from "./common/array";
  Vue.directive("permission", {
    inserted (el, binding) {
      let permission = binding.value; // 擷取到 v-permission的值
      if (permission) {
        let hasPermission = checkArray(permission);
        if (!hasPermission) { // 沒有權限 移除Dom元素
          el.parentNode && el.parentNode.removeChild(el);
        }
      }
    }
  });
           

最後我們在頁面中就可以通過自定義指令 v-permission 來判斷:

<div class="btns">
    <button v-permission="'1'">權限按鈕1</button>  // 會顯示
    <button v-permission="'10'">權限按鈕2</button>  // 無顯示
    <button v-permission="'demo'">權限按鈕3</button> // 會顯示
  </div>
           

除了以上分享,還有一些能展現競争力的實踐,你會嗎?

  • 我們都會寫元件,但是你知道怎麼讓元件能夠成為高複用性的元件庫型元件嗎?
  • 我們都會項目打包上線,但是你知道如何編寫配置檔案能讓打包速度最優化嗎?
  • 我們都會寫路由,但是你知道如何寫才能保證多路由子產品解耦,保證更友善增加新的路由子產品嗎?

是否積累優秀實戰經驗已經成為區分前端水準高低的評判标準。秋招在即,大家可能都面臨:項目拿不出手?沒有實戰經驗?面試問底層原理不知道怎麼答?一系列問題。

那麼如何積累實戰經驗跨過大廠面試門檻?

這邊給大家推薦網易資深工程師開設的《網易獨家面試集訓  3天前端直播課》,2天課程,每天2小時,限時0元,讓你收獲大廠的vue優秀實踐。

老師手把手帶教,講解vue項目從0到上線的完整流程。從真實項目實操中總結的方法,肯定能讓你少走彎路,一站式解決前端進階難題~

你能通過課程學到如何寫出高品質代碼、面試必問底層原理、webpack的進階使用技巧……提升上手實戰能力,拿到大廠offer!

網易獨家面試集訓

3天前端直播課

 8月17日—8月19日 

 0元學習 ,  每晚8點

01

從0到1掌握vue實踐,上手項目開發

周二

前端必備,從源碼中學會思維與技巧 

1、源碼有哪些值得學習的 

2、源碼組織模式 

3、透過源碼學習設計模式 

周三

帶你探究vue-router源碼,

實作一個基礎的vue-router

1、Hash與History

2、路由原理

3、實作一個vue-router

周四

大廠敲門磚,webpack進階使用技巧

1、vue-cli的工作原理

2、webpack的配置

3、用webpack搭建vue開發環境

課程專屬社群

前端社群,技術疑問、面試經驗全面交流。

課程源碼開放

課程源碼全部開放,讓你深入了解網易項目。課後可聯系助教擷取。

1V1配置老師

參與直播打卡,可獲得網易老師1V1履歷指導,就業咨詢!

大廠 2 個 Vue 進階實踐技巧總結,效率提升 80%!

掃碼聽直播領取

前端進階資料包

添加助教小姐姐一起進步

02

0元領取前端面試題,知識點全覆寫

添加課程助教免費領取網易進階前端開發工程師進階資料包,内涵學習路徑+源碼+項目實戰+面試真題,友善大家重點突破,迅速進階。

現在掃碼,限時3天免費領取。

大廠 2 個 Vue 進階實踐技巧總結,效率提升 80%!
大廠 2 個 Vue 進階實踐技巧總結,效率提升 80%!

掃描下方二維碼,擷取高清版

大廠 2 個 Vue 進階實踐技巧總結,效率提升 80%!

底層原理+項目實戰+面試真題

免費領取

不用轉發,不用分享

03

到課即送網易内部案例課

多重到課福利,參與直播即送:網易嚴選、網易雲等一線實戰項目視訊+項目源碼

大廠 2 個 Vue 進階實踐技巧總結,效率提升 80%!

免費直播,海量資料,先到先得~

往期直播幹貨回顧↓

大廠 2 個 Vue 進階實踐技巧總結,效率提升 80%!

04

資深講師手把手帶你了解企業開發模式

唐磊,網易進階前端工程師。

8年工作經驗,過手無數商業項目,主導過日流水百萬級的項目前端開發。精通架構與設計模式,為數家公司定制過架構與前端标準。

大廠 2 個 Vue 進階實踐技巧總結,效率提升 80%!

參與直播打卡,可獲得老師親自履歷修改,面試輔導,就業咨詢!