PIXNET Logo登入

文科少女學程式

跳到主文

誰說文科腦沒辦法寫程式!快跟我一起用文科腦學程式吧!

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 3月 05 週六 202216:00
  • 【亂亂寫筆記】Vue - 點擊input label只觸發click事件不觸發input事件(取消默認事件)


這陣子在做內部專案要用的元件,像是radio、checkbox,其中在製作有縮合功能的checkbox時,卻碰到了一個狀況,那就是label裡面包著必須包著一個有縮合功能的icon,但點選這個icon時,卻不能選取到這個checkbox。其實要解決這個問題很簡單,但我當下一時腦袋打結了,還以為必須使用什麼神奇的黑魔法,其實只要回歸根本原理開始解決就好了。雖然這個情境的解法應該算是滿直覺的,但是我想應該也還是有一些人在初次遇到這個狀況時,會有一時想不透的點,所以也就特別記錄下來了。
點擊input label區域不觸發input事件
實作情境
最終期待的結果如同以下這樣。
但是如果單純在icon上v-bind click事件,卻會變成以下這個狀況。
問題發生原因&解決方式
為什麼會發生這個問題?
這個狀況和HTML tag自己本身的預設行為有關(像是 a, input等這些tag都有預設的行為),因為label和input已經結合在一起了,所以點擊到label範圍內,當然也就會觸發input的預設事件,這裡type是checkbox,當在點擊被包含在label裡面的icon時,check就會有被點選和取消點選的效果。
(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(202)

  • 個人分類:亂亂寫程式筆記
▲top
  • 2月 26 週六 202223:03
  • 【前端新手日記】React.js學習筆記 - React的state和props vs. Vue的data、props

雖然每天主要還是使用Vue,不過因為一些需求,而開始接觸到一些跟React有關的東西,也就開始跟同事討論一些React的寫法。這次就來從最最基本的部分開始從Vue與React的比較學習React!也就是基本到不行的state和props!
State部分
Vue
不論是Vue2還是Vue3,在data(state)部分都有一個特點,就是當data(state)有變動時,畫面上也會顯示對應的變動,不需要另用使用set函式去變更data(state)。
Vue2:在Vue2裡,只要將state放在data(黃框的部分)裡面,就會有這樣自動響應的效果,只要呼叫addCount函式(紅框部分),count數字就會變動,畫面上顯示的count也會是變動後的數字。
image
Vue3:在Vue3裡,需要另外用ref或是reactive包裝起來,才會有這樣自動響應的效果,在下面的情境,因為count有使用ref(黃框部分),所以當count有變動,畫面就會同步顯示變動後的數字。
image
(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(132)

  • 個人分類:前端新手村
▲top
  • 1月 31 週一 202222:45
  • 【前端新手日記】Vue.js學習筆記-Vue3的<script setup>SFC

最近開始嘗試script setup的寫法,雖然少寫了很多東西,但在用的過程中,因為使用前沒先看仔細說明書,所以還是有碰到一些小小的雷,這時候就是該來好好學習&寫筆記的時候啦!
因為會以實際應用的情境為主,所以基本上會專注在我自己在實務過程中,比較常會碰到的用法,那就直接進入正題。

<script setup>是什麼?
是一種在SFC(Single File Component)中使用的語法糖,在使用這個語法糖時,大多數時候跟使用<setup>沒有太大的差異,但還是有些地方需要注意。另外,這邊也簡單提一下用這個語法糖比較大的優點是什麼,主要是不再需要透過return,才能在template使用特定的變數或函式(也包含import進來的內容),也因為如此,能讓程式碼看起來更簡潔。
單純用文字說明,可能感受不出差異,直接看範例吧!

一般<script>
carbon (58)
<script setup>
carbon (59)
(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(1,269)

  • 個人分類:前端新手村
▲top
  • 1月 08 週六 202222:09
  • 【前端新手日記】React.js學習筆記 - 在React世界施展vue世界有的named slot魔法

這陣子自己試著使用react做一個小小的網頁,遇到了一些頁面layout重複的狀況,或特定component需要複用的狀況,這個時候就讓我想到最近超常在Vue專案中使用的Slot,所以也就開始研究在React世界裡如何使用像Vue Slot一樣的方式靈活地重複使用元件。使用了這樣的方法後,使用到重複的部分,就不需要複製貼上,也能讓管理上更加便利,因為如果有調整,可以只改一個地方就全部使用的地方都被套用。
Vue世界的Slot
在正式開始前,先來回頭思考一下Vue世界的Slot該怎麼使用。
主要會需要以下幾個步驟:
1.  在需要被重複使用的子元件中,用slot標示會在父元件中依照當下情況或需求放入不同內容的地方。
2 . 在父元件中使用這個要被重複使用,且設定slot的子元件時,只需要在對應處放上當下情況要使用的內容,就會將內容擺放在slot指定的地方。(有種鑲嵌寶石到插槽的概念)
上面這兩個步驟是主要的大方向,更細節的具名插槽(Named Slot )、作用域插槽(Scoped Slot)內容可以參考這篇///

React世界的Slot
回顧完Vue的slot用法後,再來看看這次的主角,React世界的Slot!在React世界裡面,想要使用Vue Slot概念的用法的話,主要關鍵字會是children,使用方法也有差異,但一樣可以達到複用的目的,想要像Vue世界裡面使用具名的slot或是在特定slot中帶入prop也都是可以的。
在使用概念的部分,我自己的理解是「Vue的話,是在子元件中設定一個slot,再從父元件中,把要放入slot的內容帶入;React的話,則是用props的概念,帶入想要從父元件帶入子元件的內容,只是帶入的東西可能不是單純的值,而是HTML,或另一個元件。」

一般的children(單個slot)
如果子元件中,只會有一個插槽,在react中,只需要在父元件中將想要帶入子元件插槽中的東西寫在子元件中間(ex: <子元件>要插入的內容</子元件>),就可以在子元件中透過props.children取得於父層帶入的內容,如果想要有預設的內容,也可以透過三元表達式來達成。
範例:
1. 在子元件中,透過props.chrildren取得要放在子元件的內容,並放在子元件中,並透過三元表達式來設定預設文字(如果父元件中,沒有另外帶入要放入子元件中的內容,就會使用預設內容)。
carbon (69)
2. 在父元件中,放入要使用的子元件,並在元件中間放入要帶入的內容。
carbon (67)
實際呈現結果
中間有文字的時候,按鈕顯示的是中間放入的文字,中間沒有放文字的時候,按鈕顯示的是預設文字。

具名插槽特性的children(多個slot)
如果想要在React世界中,想要在一個子元件中,設定不只一個slot的話,可以用指定名稱的props帶入。
範例:
1. 在子元件中,先把預計會用props帶入內容,依照名字放到預計要放入的位置,一樣能設定預設要顯示的內容。
這裡預計放在子元件裡面的內容分別是props.title、props.content。
carbon (54)
2. 在父元件中,使用這個子元件時,利用帶入props的方式,把要放入插槽的內容帶到子元件內。
carbon (55)
實際呈現結果
image
完整範例在這裡

*另外!除了帶入值以外,也可以帶入另一個component到slot裡面
(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(353)

  • 個人分類:前端新手村
▲top
  • 12月 31 週五 202115:00
  • 【亂亂寫筆記】HTML + css(flex, min-width, min-height) - container內item部分限制寬度了還是被撐開!?

前陣子在做公司的專案時,遇到一個用 flex 寫的 layout,明明已經用 flex-basis 限制寬度,但還是因為 layout 裡面的內容物的文字和圖片而把某一個區塊撐開。那時一直想不透是為什麼,所以就開始找資料,才發現跟 flex 本身的特性有關。
防止 flex item 因為特殊情況被撐開
實作情境
以下是模擬當初在實作的情境,主要是一個被分為三欄的 layout,每一欄都會被放入一個元件,其中中間的元件因為是放入類似文字編輯器的元件,所以這個元件內容並不是固定的,會動態的變動,也就有可能因為圖片過大,或出現無斷行文字而把中間這欄撐開。
=> container 裡面分別有三個 item,item2 的 flex-basis 設定成 300px,裡面放了一個含有 10 個 30px 的文字的 component。
<範例 HTML>
【亂亂寫筆記】HTML + css(flex, min-wi
<範例 css>
【亂亂寫筆記】HTML + css(flex, min-wi
<範例實際畫面>

當有比較大的圖片出現時,會出現以下狀況
<HTML (放入圖片後)>

<實際畫面(放入圖片後)>
中間這欄會被撐開,不只有原先我們希望的 300px 寬。

問題發生原因&解決方式
為什麼會發生這個問題?
這邊先來了解一下這個問題發生的原因!會出現這樣的狀況主要是因為設定flex之後,容器裡面的 item 的 min-width(flex-direction: row) 或 min-height(flex-direction: column) 的預設值為 auto,所以當內容物寬度或高度較大時,這一欄就會被撐開。到這裡,腦子動得比較快的人,可能還是會覺得哪裡怪怪的,這邊先暫時不延伸下去思考,先針對 flex item 被預設的特性下去做修改。
*被預設為 auto 的屬性是 min-width 還是 min-height 主要是看現在被設定的 flex 方向(主軸的方向),也就是 item 的排列方向是 x 軸還是 y 軸。

怎麼解決這個狀況?
前面提到跟 min-width 或 min-height 預設是 auto 有關,那這裡我們就只需要把它設定為 0 就可以了。在這個範例中,因為是主軸為 x 軸,所以要設定為 0 的是 min-width。
設定 min- 的目的是去讓 item 寬度不要隨著裡面的內容物撐大(ex: img),就可以讓 item 寬度維持在我們希望的 300px 以內。
這樣中間這一欄,就可以恢復成原本我們希望的 300px了。但在這個情境中,圖片會被蓋住,這時候可以依照實際的需求搭配 overflow 來呈現。
(當時我實務中的需求,scroll 的部分是設定在這一欄中的元件)

除了我這次的解法外,依照實際的確切情境,也可以透過 overflow 來解決這個狀況。
延伸思考
重新再回到剛剛前面提到的這個問題產生的原因,應該會有不少人覺得哪裡怪怪的,尤其是這個問題的重要部分-寬度的地方。明明每一欄的 flex-basis 都設定好了,而且合計是 container 的寬度,怎麼中間這欄可以被撐開呢?那其他欄位不就會被擠壓到嗎?
沒錯!這個部分也和 flex 的特性有關,也就是 flex-shrink。當 display 設定為 flex 時,flex item的flex-shrink 預設值會是 1,意思就是當空間不足時,item 就會被擠壓。這也就是讓中間欄位被撐開後,沒有導致其他 item 被擠倒 containe r外的原因。
在這個情況下,如果將另外兩個 item 的 flex-shrink 設定為 0,就會發生以下的狀況,也就是 item 超出 container。

(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(280)

  • 個人分類:亂亂寫程式筆記
▲top
  • 12月 30 週四 202122:59
  • 【JavaScript萌新筆記】for & forEach!是一樣的迴圈,也是不一樣的迴圈

今天來看看平常實務中,會常常被使用到的陣列迴圈寫法!
其實自從認識了forEach和map那些方法後,就比較少使用for迴圈了,原因只是單純覺得寫forEach和map感覺比較簡潔,不過用習慣了這些方法後,卻在前陣子在寫一個些需要依照不同情況跳訊息的function時,才發現到原來一樣是迴圈寫法,卻也不是真的一樣的迴圈,雖然大概念的確一樣是迴圈(咦)!
下面就簡單記錄一下從我這次的實務中,所認識到的迴圈的不同。

for迴圈和forEach迴圈
想用透過迴圈來處理一些狀況,且不需要在跑迴圈後,回傳一個新的陣列的話,就可以使用for迴圈和forEach迴圈。不過這for迴圈和forEach迴圈的寫法有些許的差異。
for迴圈
for迴圈主要有以下這兩種寫法,分別是以下兩種:
(其實嚴格來說,還有for in迴圈,但自己最常用的是這兩種,所以這邊就只會提到這兩種)
第一種
carbon (51)
第二種
carbon (52)

forEach迴圈
carbon (53)
兩種迴圈的差異點
1. for迴圈可以中斷,forEach迴圈不可以中斷
=> forEach會一直執行到整個迴圈跑完
以下這個情境,即使item等於3的情形下,有寫return,仍然還是會繼續遍歷完整個陣列。
carbon (56)
但是在下面這兩個用法中,就可以透過break,提前在遍歷到3的時候,就結束迴圈的進行,所以只會跑到陣列裡的數字3。
carbon (57)
carbon (54)

2. arguments無法使用forEach
=> 雖然說arguments很像陣列,但他其實並不是真正的陣列,所以無法使用只有陣列才有的forEach這個方法。
在下面這個情境中,會跳出錯誤訊息,因為arguments無法使用forEach。
image
carbon (58)
以上就是前陣子實作時碰到,才真正了解到的迴圈操作差異,那小小筆記就記錄到這裡啦。
打完收工!
(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(299)

  • 個人分類:JavaScript初體驗
▲top
  • 12月 05 週日 202122:14
  • 【前端新手日記】我就廢-自我挑戰紀錄:修練精神時光屋三週挑戰心得

image
11月一整個月都沒有寫部落格,不是耍廢去了,而是去挑戰一個讓自己肝超級爆掉的活動,就是六角學院舉辦的【The F2E 前端 & UI 修練精神時光屋】。
會參加這個活動的原因主要是今年就快要結束了,眼看該產出作品的目標尚未達成,就藉由這個活動逼自己產出一些作品了!
其實一開始本來是想用React這三週的三個主題,但在白天需要上班的狀況下,想要一週產一個主題,對於React還沒有這麼熟練的我難度有點高,所以最後還是決定使用Vue3+TypeScript進行。
這三週我完成了哪些主題?
第一週:台灣旅遊景點導覽
這一週比自己預想還要快完成,因為有特別挑了一個比較好完成的設計稿,但其實這一週自己還算是在熱身階段,所以做的成品不算完整,也還有很多bug。另外,因為想要加快完成的速度,所以部分元件是使用element ui下去調整樣式來完成。
整體成品畫面大概是下面這張截圖的樣子,由於不太完整,就不貼出成品連結了。目前也預計用React重新寫一次這個主題!
(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(157)

  • 個人分類:前端新手村
▲top
  • 10月 23 週六 202120:00
  • 【JavaScript萌新筆記】JavaScript陣列&物件的深拷貝(deep copy)及淺拷貝(shallow copy)

又來補強自己的基本觀念了!!沒錯~小女不才,已經入行10個月,這個基本觀念還是沒有確實地建立起來。最近踩了一個大雷,不來好好學習不行了,所以就以這個主題來寫學習筆記了!
好啦!廢話不多說,直接進入正題啦!

物件型別的特性-傳址(by reference)
物件型別是傳址不是傳值,所以跟其他字串、數字不太一樣,在進行複製動作時,並沒有那麼單純。
物件型別因為是傳址,所以其實可以把物件型別用另一種方式去看,就是當宣告一個陣列變數或物件變數時,除了變數的內容,還隱藏著一個東西就是變數內容儲存的位址,也就是物件型別儲存的位址。這部分尤其在進行複製動作的時候,會有更明顯的感受,因為在進行複製時,由於傳址特性,雖然表面上把值複製出來賦值成另一個變數了,但實際上物件型別儲存的位址還是指向同一個,所以這個物件或陣列其實是一樣的東西,直接看一下小小的範例!
carbon (44)

(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(1) 人氣(170)

  • 個人分類:JavaScript初體驗
▲top
  • 10月 16 週六 202117:00
  • 【前端新手日記】CSS選擇器 - 加號(+)、連接號(~)、大於符號(>)

carbon (33)
先來說說為什麼要寫這一篇好了!主要原因就是我知道有+、>、~這幾個CSS選擇器可以使用,但是每次要使用的時候,都會忘記他們到底誰是誰,所以就想說趁這次好好記下他們各自的身分了。雖然說真正在切版時,並沒有常常使用到這三個孩子,但偶爾還是會有需要派他們出場的時候。好啦!廢話不多說,直接來看看這些CSS選擇器到底誰是誰!
加號、連接號、大於符號選擇器的用法
(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(142)

  • 個人分類:前端新手村
▲top
  • 9月 20 週一 202109:49
  • 【菜逼八是我】默默邁向第九個月的心境改變

今天來篇心情雜記,記錄一下邁入第九個月的我,心境上有什麼不一樣。
因為已經過了八個月,對於目前在公司身為前端工程師的業務已經比剛進公司時,來得熟悉很多。很多時候,要修一些bug,也不太需要花很多的時間去找原因,甚至是有新的需求時,也都能在短時間內就掌握到該如何進行的方向。另外,自己也和前輩一起完成了方便前端的我們查看API contract的網頁,所以這幾個月相較於前陣子,反而沒有出現太多的自卑感。
與此同時,我也開始有一些有別於以往的想法出現。
首先是最近的我開始認真思考公司內部現有專案的程式碼,有沒有什麼方式可以更好維護?尤其是最近有一些全新的專案,是用vue3進行,雖然近期比較常碰vue3,寫起來有稍微順手一點,但還是有一些部分不知道該怎麼寫比較好。另外,還有一個部分是對於目前公司使用TypeScript的方式有些疑問,主要原因是跟自己在網路上接收到的一些大神們分享的知識有點不太一樣,所以也想好好地去了解該怎麼寫TypeScript才是最好的用法。現在自己的狀況是雖然可以用TypeScript,但是某些用法上,也許並不是那麼地恰當。還有這陣子才發現原來目前code review的流程似乎不太完整,雖然說最主要原因是主管和前輩們都很忙,所以大家沒時間幫小菜鳥的我review也很正常,但對於需要有人給方向的菜鳥階段的我,就不是一種很好的狀況了。最後還有一個部分就是想要開始好好了解design pattern,主要原因是覺得自己往往好像只是為了完成功能而做,但做法可能也不是那麼地合適。
除此之外,隨著對公司業務及作業流程的了解程度的增加,也開始發現到這個產業似乎有點不太適合自己,也或者是說現在的我變得又更了解自己想要的是什麼了!因為剛踏入前端這個領域的職涯時,其實只是單純希望自己可以做前端工程師的工作,並沒有進一步地想到自己希望待在什麼樣的產業,不過最近對於這部分的方向好像漸漸變得明確了,也開始在想是不是應該轉換方向前進。就是因為這樣這陣子比較沒有在懷疑自己的能力,而是不斷地思考自己的職涯方向適不適合自己(雖然自己的能力還是有待加強)。
總之,邁向第九個月的這陣子,不再自怨自艾了,反而都在思考一些該怎麼樣讓自己變得更好,什麼樣的方向才更適合自己。
好了!今天的廢文差不多就寫到這裡囉!打完收工,寫些打家,打家掰掰!

 
(繼續閱讀...)
文章標籤

文科少女寫程式 發表在 痞客邦 留言(4) 人氣(315)

  • 個人分類:菜逼八工程師心情雜記
▲top
«1...45612»

個人資訊

文科少女寫程式
暱稱:
文科少女寫程式
分類:
數位生活
好友:
累積中
地區:

熱門文章

  • (990)【JavaScript萌新筆記】while迴圈練習題 - 限制10次內猜對數字的練習
  • (196)【JavaScript萌新筆記】資料管理結構 - 陣列(array)的存取方式
  • (27,150)【JavaScript萌新筆記】console.log到底是蝦米東東?
  • (739)【前端新手日記】網頁開發必學!排版神器CSS-Flexbox
  • (229)【新創人森紀錄】什麼是新創公司?成為元老級員工初體驗
  • (6,271)【前端新手日記】CSS的row?column?傻傻分不清楚
  • (107)【JavaScript萌新筆記】「事件迴圈 Event Loop」學習筆記
  • (152)【課程學習心路歷程】這一個月的學習回顧-ORID
  • (85)【新創人森紀錄】五個月後的新創職場心得 - 新創不是人人都做得了
  • (1,367)【前端新手日記】我就廢-自我挑戰紀錄:模擬電腦桌面

文章分類

toggle 打工仔人森 (3)
  • 菜逼八工程師心情雜記 (9)
  • 新創人森紀錄 (2)
  • 黑白的求職之路 (6)
  • 社群學習 (3)
  • LeetCode刷刷 (4)
  • 其他領域學習筆記 (5)
  • 抱佛腳學前端 (2)
  • 菜鳥Git學習筆記 (1)
  • 亂亂寫程式筆記 (15)
  • 關於學習的心路歷程 (4)
  • JavaScript初體驗 (23)
  • 前端新手村 (36)
  • 未分類文章 (1)

最新文章

  • 【JavaScript 萌新筆記】JavaScript 模組系統 - CommonJS 和 ES Module
  • 【前端新手日記】Tree Shaking 也許沒有真的 shaking 起來
  • 【前端學 Docker 】 不是圖片的 image- Docker Image
  • 【亂亂寫筆記】詐騙案例 - 用你信箱寄信警告信箱被盜用
  • 【前端新手日記】網頁渲染模式 - SSG、ISR
  • 【前端學 Docker 】 從認識 Container 開始
  • 【前端新手日記】網頁渲染模式 - CSR vs SSR
  • 【亂亂寫筆記】VS Code - ESLin 應出現的警告提示未顯示
  • 【JavaScript 萌新筆記】JavaScript 的內部插槽 (internal slots) 和內部方法 (internal methods)
  • 【前端新手日記】React Component - <Component />及Component()的寫法差異及效能優化技巧

動態訂閱

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣: