上一篇總結了前端對外溝通輸出以及外在幸福感的煉成,這一篇主要是對內在幸福感的總結。博文首發於ysom.github.iojavascript
內在的幸福感影響因素有不少,總結最主要有如下幾類:前端
總結出問題,那就能夠很容易找到解決方法了vue
你們在工做中確定會常常遇到重複的、或者功能相似的業務,通常的操做估計就是一頓cv,瘋狂複製粘貼,完事。可是這種就是單純的體力活,長此以往,就會以爲枯燥乏味,沒新鮮感、成就感,慢慢就會對工做失去熱情。java
這種狀況,簡而言之,在多處地方出現的代碼,能被copy來使用的,就要想一下是否能夠抽離邏輯,封裝複用。而封裝通常分爲兩種狀況,配置和組件ios
咱們開發某一個端的應用時,常常會有相應的主題色,頁面結構會有經常使用的佈局樣式,按鈕等等也會有經常使用主題樣式,對於這些經常使用的樣式,咱們能夠經過寫成統一的css變量和class,放在一個tools文件來實現樣式複用,這裏採用less
預處理器git
// tools.less
// 主題類
@happy-theme: orange;
@sad-theme: gray;
@danger-theme: red;
// 佈局類
.flex-align {
display: flex;
align-items: center;
}
.flex-between {
display: flex;
justify-content: between;
align-items: center;
}
.flex-center {
display: flex;
justify-content: center;
align-items: center;
}
複製代碼
// test.vue
<template>
<!-- 將div設置成flex居中佈局 -->
<div class="test-div flex-center"></div>
</template>
<style lang="less">
@import 'tools.less';
// 將div背景顏色設置成happy主題
.test-div {
background: @happy-theme;
}
</style>
複製代碼
能夠看到,引入了該工具文件實現樣式複用,後續若是需求有變動,須要更換樣式主題的時候,也只需在一個地方更改便可github
一般咱們調用後端接口的時候,後端會根據不一樣狀況來返回不一樣的響應res code,好比0001
表示請求成功,正常返回數據,0002
表示請求成功,無數據,1000
表示請求失敗等,顯然這裏也能夠作成配置算法
const CODELIST = [
'0001': 'suc',
'0002': 'no data',
'1000': 'error'
]
axios.get('/getData', {params: {}}).then(res => {
if (CODELIST[res.code] === 'suc') {
...
} else if (CODELIST[res.code] === 'no data') {
...
} else {
...
}
})
複製代碼
將返回碼映射成文件,與不一樣項目不一樣團隊對接的時候,也只是修改映射表就搞定了~element-ui
說到組件你們應該也都不陌生了,組件化思想如今更是綻開光彩,那麼重合的功能業務,咱們就能夠封裝成組件,供不一樣的頁面使用
好比後臺管理端頁面,常見的結構就是表單查詢+工具欄菜單+表格列表+分頁,若是有10個頁面(真實狀況每每不止),咱們是否是要建立10遍重合度90%以上的代碼?這個時候要考慮能不能抽離邏輯,作成一個組件,而後往這個組件傳參數,來讓它實現不一樣的功能。esay-page組件源碼
// parent.vue
<template>
<easy-page ref="easyPage" :fomrData="form" :columns="columns"
:layout=['form', 'toolbar', 'table', 'pagination'] :getApi="getApi">
<template slot="form">
<!-- 自定義表單代碼 -->
</template>
<template slot="toolbar">
<!-- 自定義工具欄代碼 -->
</template>
</easy-page>
</template>
<script>
export default {
const columns = [
{label: '序號', prop: 'index'},
{label: '編號', prop: 'id'}
]
data () {
return {
form: {},
columns,
getApi: '/getData'
}
}
}
</script>
複製代碼
經過這樣一個組件,就能夠實現簡單的表單查詢+工具欄+表格+分頁,經過參數也能夠控制頁面結構。
還有相似上傳功能,element-ui等UI庫已經幫咱們實現了不少,可是業務每每沒有那麼簡單,咱們須要基於已經實現的功能去進行二次封裝
// easy-upload.vue
<template>
<el-upload></el-upload>
</template>
<script>
export default {
props: {
// ... 接收二次封裝須要的參數
},
data () {
return {}
}
}
</script>
複製代碼
// parent.vue
<template>
<easy-upload :setting="setting"></easy-upload>
</template>
<script>
import EasyUpload from 'easy-upload.vue'
export default {
data () {
return {
setting: {
// ... 自定義參數
}
}
}
}
</script>
複製代碼
一次封裝,就能在多處進行靈活性更強的使用,而在二次封裝的過程當中一些邏輯處理,可比搬磚有趣多了
不少前端同事都會在google、百度、知乎等提問,「前端是否應該學習數據結構」,「前端學算法有用嗎」等等問題,我以爲問這種問題,是還沒從根本上理解代碼存在的意義,每個開發工程師都是經過代碼跟機器打交道的,而數據結構就是數據、代碼的一種結構化,是數據組織方法,不學數據結構,不學算法,怎麼跟機器進行更深層次的交流?跟機器交流比如跟人溝通,好的語言組織能讓咱們事半功半,適合的數據結構也能讓性能更加優越。
說到底,咱們的業務都是基於各類不一樣的數據結構來完成的,只不過有一些平時寫的邏輯較簡單,會忽略了其實也是用到數據結構來實現的,不學數據結構,不學算法,不會知道能夠用雙端隊列來作迴文字符串檢查,不會知道能夠用循環鏈表來實現小時候愛玩的「擊鼓傳花」遊戲,不會知道撤銷、回滾是怎麼實現。
回到總結,數據結構不是學不學的問題,是要往多深學,起碼最基本的棧
、隊列
、鏈表
、樹
、圖
等都要了解,至於深度,就取決你對本身的要求以及工做中的需求。
提升幸福感的另外一件事,就是閱讀源碼了。可能有人會問,啥,閱讀源碼幸福?不是很痛苦?是的,源碼一開始看確實很痛苦,尤爲是優秀的項目通常架構比較複雜,想看也不知從何下手,可是咱們能夠見招拆招,從部分模塊看起,好比vue
中,能夠看雙向綁定,能夠看響應式設計等等,從某個模塊看起,能有效下降源碼閱讀難度。
並且一個優秀的框架、庫是通過了時間和用戶的考驗,閱讀源碼也是咱們近距離接觸大神的途徑,咱們能夠從源碼中看出大神他們的設計思想,思考方法,開發邏輯等等,咱們本身創造不了牛逼框架,還學習不了?
當今這個時代,努力奔跑只能保持原地不動,而停滯不前就會逐步落後
前端的發展你們有目共睹,可謂是突飛猛進,這個時候的咱們,只能多多關注技術發展,來擴充本身的眼界,否則別人問起什麼是大前端,何時是前端微服務,咱們都是一臉懵逼,眼界將會決定咱們在這條路上能走多遠,走多久,若是沒有幸福感,沒有興趣支撐咱們前進,心越空,越容易被焦慮感填滿,咱們很容易就會被洪流沖走,心中有方向,前進纔不會迷失。
最後要講的一點,無論開發的時候對本身寫的代碼有多熟悉,都要寫上註釋,這是爲後面本身或者同事review的時候作好前置工做。還有就是要定時對本身的代碼作review,或者讓朋友、同事幫咱們review,由於無論啥時候,咱們回過頭來看本身的代碼,都有一種在看shi的感受,對吧?而review的過程,就是一個鏟shi的過程,手握review鏟,哪裏有shi鏟哪裏,老闆不再用擔憂我巨坑了!一邊review一邊罵本身當時爲啥那麼sb,寫出這麼shi的代碼,一邊優化提升本身的能力,因此,review能夠幫咱們更好地認識本身,也能更好地提升本身~
本篇從幾個方面作了提高內在幸福感的總結,也是這一年多來的心得體會,可能總結不是很到位,會有不少遺漏,但就像上面說的,當我之後回過頭來看這篇文章的時候,我是在review,是在優化,我仍是在繼續提高。