原创 typescript --- 映射類型

映射類型:屬於ts高級類型,映射類型提供從舊類型中創建新類型的方式。在映射類型中,新類型用相同的方式轉換舊類型的每個屬性。 條件類型:和映射類型類似,也是在一個類型基礎上,執行某些條件操作,形成的新類型。 概念比較繞,不好理解,看例子:

原创 探究BFC和float

BFC和float本身其實沒什麼關係,但是BFC的一個用途是用來清除浮動,所以放在一起了。 首先BFC(塊級格式化上下文),就算是中文翻譯過來也不是很好理解,可以理解爲一個獨立的渲染空間。這個空間內部的子元素佈局不受外部元素的干擾,例如浮

原创 vue 2.6 以及vue 3.0的$attrs, $listeners, inheritAttrs

最近做新項目,寫基礎組件用到了vue2.6的新特性$attrs, $listeners, inheritAttrs。其實也不算新了,只是自己以前沒用過,突然覺得自己更新知識的速度還是有點慢的。看來沒事還是得多逛逛國外前端大佬的博客。 這仨

原创 read only的vue route對象

今天大佬讓我改個小需求,結果因爲對route對象瞭解的不夠多,未能完成任務,有點小尷尬。 需求是:在venue list頁面的beforeRouteEnter鉤子裏,對to.query 進行參數校驗以及初始化,說白了就是判斷當前路由的qu

原创 vue指令 --- vue-observe-visibility

一個很方便的loader----vue-observe-visibility 應用場景一: 代替position: sticky, 這個屬性簡單來說 可以用來讓元素在未超出屏幕高度時保持relative,超出屏幕高度時呈現position

原创 嘗試在Nuxt中添加骨架屏

一開始看到這個需求我是拒絕的,nuxt是SSR框架,支持服務端渲染,按理說是不需要骨架屏這種預渲染的,但是既然有需求就還是要去嘗試。嘗試過程如下: 目標: 在nuxt框架下應用骨架屏 方案1: 利用nuxt已有的loading,對於loa

原创 前端緩存小結

最近看了一些關於前端緩存的文章,很多都是概念上的規定,所以記錄一下。 首先,緩存發生在瀏覽器收到服務器的響應數據,此時,爲了避免以後需要重新訪問,減少網絡請求次數,就要判斷是否需要緩存數據資源。這個判斷操作,前端後端都可以進行,前端的話,

原创 Vue diff算法思路

vue的diff算法用於視圖更新,也可以說是dom更新。俗話說有對比才有差距,vue也是通過將dom前後進行對比,再進行更新。dom是樹狀結構,因此對比過程中需要先將它化成對象的形式(虛擬dom)如: var Vnode = {

原创 WEB API action請求不到的原因

WEB API請求的過程是: URL =>> 匹配路由模板 =>> 匹配 controller =>> 匹配 action WEB API與MVC不同的是,WEB API是通過請求的方式來匹配action,默認從action的方法名中獲取

原创 移動端1px邊框實現

給指定div添加僞類:after或者:before給僞類設置content爲空,border 1px,再將僞類進行縮放(transform:scaleY(數值))

原创 router-link切換路由不存入history記錄的方法

在做tab切換子路由需求的時候,點擊後退鍵,就會返回上一個子路由,不是很符合實際需求。可以在router-link後面加上關鍵詞repalce,就可以實現切換子路由,路徑不存入history。點擊後退按鈕,會直接返回父路由的上一個頁面。如

原创 box-sizing

即聲明對該元素使用IE盒子模型,即指定寬度中包括padding,border,width。在指定寬度後,添加padding,border後,內容部分會自適應。

原创 謎一樣的element-ui按需加載!!!!!

這庫看起來還不錯,用的着實蛋疼。他的組件很多,基本上不可能加載全部組件,爲了減小體積,肯定要按需加載但是! 這庫的組件很奇葩,有的組件引入的時候,只需要在對應的component裏import就可以正常使用。譬如 Message,Mess

原创 動態設置meta標籤

有時候在項目中打開別的網頁,需要給網頁設置meta,如縮放禁止等。這時候在index.html中設置失效需要額外設置。可以使用插件vue-meta:文檔:https://github.com/declandewet/vue-meta#np

原创 Vue用router.push(傳參)跳轉頁面,參數改變,跳轉頁面數據不刷新的解決辦法

再跳轉後的路由觀察路由變化,進行頁面刷新。watch: {     '$route' (to, from) {      this.$router.go(0); }}參考https://blog.csdn.net/