哈哈,十一最後一天送上一篇雞湯,也是本年最後一篇與技術無關的博客了,各位看官請對照下菜。css
天天沉浸在業務代碼中不能自拔的你,是否有的時候會越作越迷茫,不知道在哪裏提高本身。前端
天天重複着 curd,雷同的代碼,枯燥而無味,朝九晚九,披星戴月,失去了編程的樂趣。vue
下面列舉幾個雞肋問題給各位看官做一點下酒菜,各自全部需哈。node
我最開始寫小程序路由的時候,難用的一批,要全路徑 + 拼接參數什麼的,難用的一匹有沒有react
wtf,做爲混吃等死的落魄前端,多寫一行重複代碼感受就是浪費生命,恰好這個小程序項目用到了 gulp,直接上手開始改造編程
function fileDisplay(filePath) {
// 根據文件路徑讀取文件,返回文件列表
try {
console.log(filePath);
const pa = fs.readdirSync(filePath);
pa.forEach((ele, index) => {
let relPath = `${filePath}/${ele}`;
const info = fs.statSync(relPath);
if (info.isDirectory()) {
fileDisplay(relPath);
} else if (relPath.indexOf('index.json') > -1) {
const cObj = require(relPath);
if (!cObj.component) {
relPath = relPath.replace('.json', '');
relPath = relPath.replace(`${currentPath}/`, '');
pages.push(relPath);
if (cObj.name && !pagesObject[cObj.name]) {
pagesObject[cObj.name] = relPath;
} else {
const relPathList = relPath.split('/');
pagesObject[relPathList[relPathList.length - 2]] = relPath;
}
}
}
});
} catch (err) {
console.log(err);
}
}
// 生成的文件路由 map
export default {
home: 'pages/home/index',
authorization: 'pages/authorization/index',
guide: 'pages/guide/index',
map: 'pages/train-schedule/map/index',
confirm: 'pages/ordering-meals/order/confirm/index',
detail: 'pages/ordering-meals/order/detail/index',
list: 'pages/ordering-meals/order/list/index',
};
複製代碼
上述方法在 gulp 監聽文件修改的時候觸發,會自動生成如上所示的路由配置,主要是經過 json 配置參數來判斷是不是頁面,再結合下面的路由改造,便可使用別名跳轉路由。json
// 封裝路由
import routerMap from '../constant/router.config';
import qs from 'qs';
const tranfor = (params) => {
if (params) return `?${qs.stringify(params)}`
return ''
};
const push = (url, params = {}) => {
let rUrl = '';
if (url.substr(0, 1) === '/') {
rUrl = url.slice(1, url.length);
} else {
rUrl = routerMap[url];
}
wx.navigateTo({
url: `/${rUrl}${tranfor(params)}`,
});
};
export default {
push,
};
複製代碼
// 使用路由
import router from '@/utils/route';
router.push('shop', {data:1});
複製代碼
如上,小小的改造讓你在使用原生小程序開發中避免了路由書寫的麻煩,其實過程跟方法都很是 easy,並且在如今多端框架流行的狀況下,寫原生小程序已經愈來愈少了。gulp
以前的公司有遇到過因爲運維不成熟或者開發在頻繁修改問題部署,致使測試環境是否是就處於宕機的狀態,同時又沒有 mock 接口,也沒有開發文檔,不要太酸爽小程序
wtf,簡直就是地獄模式,開發全靠運氣。後臺一掛,前端兩眼一黑乾瞪眼。後端
對於混吃等死的前端來講,又是一件不能忍受的事情,因而寫了一個代理插件
時間過久遠,具體的代碼已經遺失,簡單說明一下思路
具體思路步驟:
這樣就能正常愉快的開發了,而且在開發過程當中宕機或者頻繁發佈都不會過於影響本地開發環境的調試。
沒錯,又是我接手的一個很是大的後臺項目,好幾百個頁面,每次改動一次熱更新的速度大約是在 3 - 5mins 左右。
wtf,雖然是一個很好的摸魚項目,也只是我臨時過渡的一個項目,又不能所有項目重構一遍。
開玩笑,所有重構怎麼配得上個人混吃等死的稱號
果斷查資料,最後上了 babel-plugin-dynamic-import-node 插件。
"babel": {
"env": {
"development": {
"plugins": [
"dynamic-import-node"
]
}
},
"presets": [
"react-app"
],
"plugins": [
[
"import",
{
"libraryName": "antd",
"libraryDirectory": "es",
"style": "css"
}
],
"transform-decorators-legacy"
]
},
複製代碼
經過按需加載將熱更新速度提升到 3s 左右,穩得一匹。
重複性的後臺表單類型頁面開發,簡直就是 curd 的表明。
自定義表單開發也有不少博文介紹,這裏就不具體展開了,只談談思路。
在你摸透業務模型以後,能夠結合當前的業務規則,去開發一套邏輯模板,經過必定的規則來渲染出不一樣的表單,後期每一個新業務接手的時候,能夠經過這樣相似的插件或者其餘工具快速生成你須要的表單頁面以及相似的頁面,豈不美哉。
上述列舉了一些雞肋的問題,僅僅提供一個小思路,在你平常開發中是否也會遇到這種很麻煩但又簡單的問題,有沒有考慮過使用封裝工具的方法來提升你的效率呢?
沉溺於業務代碼沒法自拔的同時,要抽身出來作一些小工具,慢慢的將自身的效率提高上去,造成良性循環。
善於發現你工做的小細節,不積跬步,無以致千里;不積小流,無以成江海,當你把細節處理好了,總體纔會上升。
這裏所說的責任,不只僅是犯錯以後的承擔,而是貫穿你負責的整個項目過程的。
在座的各位必然有划水摸魚的時候,可是在開發本身的項目中,不只僅只是爲了完成任務而作,間歇性但又要持續性的保持對項目的懷疑、否認想法,優化提升本身的項目
作完上述,你就能夠安心划水了,劃個痛快
前端的技術革新突飛猛進,時刻保持對業務新技術的關注,也是對你將來項目的一種減負
當接手新的項目的時候,你須要作結合團隊與業務的實際狀況,作一個綜合的考慮,簡單舉一個例子:
多端開發小程序跟 h5 的時候,你會有不少種選擇,好比 Uniapp、Taro、Remax、Chameleon 等等各類各樣的選擇。
你團隊技術是以 vue 仍是 react 爲主,業務主要集中在支付寶仍是微信小程序,後期是否須要自身 app 接入小程序的能力等等各類各樣的緣由會致使你選擇的多端框架不一樣。
可是隻有你的視野夠廣,對團隊、業務理解夠深的狀況下,才能選擇一個符合當前頁面的最優技術。
whatever,持續關注新技術確定沒錯
因爲九月份出現各類狀況,這是今年最後一篇與技術無關的雞湯博客,後續會繼續以前的系列。
適當雞湯,利於下飯
歡迎各位同窗轉載,文末或者文章內部標註來源便可。