[ Learn-003 ] Javascript 初探

ClayGao
5 min readJun 24, 2019

在這篇文章的開頭,大概先預告一下未來的行動該如何定調

當然啦,這篇預告是給我自己看的,是拿來督促自己用的,所以如果各位想參考,也可以跟著我的步調走。

首先,每個文章的開頭我會簡單用英文當標題,比如說「程式學習之路」就改為「Learn」,「淺談」系列就改叫 「Talk」,大概就是這樣。

然後我會讓自己的行事曆定調,並嚴格執行,為什麼?

關於這一點主要是因為在 Lidemy 的程式實驗計畫第六週到第十週覺得自己的心態不對,因為我本身是很容易心猿意馬的人,想法幾乎不受限,這也容易造成一開始很熱忱,後面放水流的情況。

第二點主要是因為看到同學的作業比我的好非常多,有條也有理,覺得自己是可以達到這樣程度的,只是沒有好好用心而已。

我的想法是,學得好的同學,除了在作業之外,在一些自己的心得經營上也常不錯,能有這樣規律並良好的產出,背後一定運行著一套模式,可以讓同學配合生活也配合學習。

而我是那種想做什麼,就做什麼的人,也許你會說,這也沒有不好,但對我來說,我往往到最後都抓不到我學習的產出,我的意思是,這就跟捕捉靈感一樣,你如果沒有在當時那個狀態抓住些什麼,後面就會遺失掉。

大概就是這樣,廢話結束,進入正題。

上一篇 Learn 002 講到了我在 Lidemy 第一週所學的 Git 與 GitHub 與 Command Line ,這篇文主要來講第二週和第三週所學的 Javascript。

所以這篇文的目的想告訴大家什麼是 Javascript,它是用來幹嘛的,和其他語言又有什麼差別 ?

首先要告訴大家,各位所看到的網頁,你的所見所聞,包括你現在看到的字,畫面的顏色,你用滑鼠滾輪瀏覽的頁面等等,都是稱之為「前端」的範疇。

就單以一個頁面來講,如果你是使用 Chrome 瀏覽器,在頁面空白處點右鍵 -> 檢查,就會看到開發人員工具被開啟,然後有一大堆密密麻麻的文字碼,注意這些是文字碼,不是程式碼,每一個我們看到的頁面其實本質上都是一堆文字碼,那你會問說,那「圖片」呢?以我目前所學了解的,圖片也是利用文字碼去引用的,這些圖片會被放在某個儲存庫,我們用會在文字碼上引用圖片路徑,將圖片顯示在頁面上。

這些文字碼,統稱叫做 HTML,而在 HTML 的背後,有一個模型叫做 DOM ( Document Object Model ),你可以把它想像成一個樹狀圖,樹狀圖的主體與延伸出去的枝葉都可以看成是內部的各個 DOM 元素,而 HTML 就是這棵樹的藍圖,經由「瀏覽器」將這個藍圖建構成你現在看到的一切,這個建構的過程,我們也俗稱為「渲染」。

圖片來源 : 維基百科

也就是說每一個頁面都是 DOM 渲染之後的結果,而你的 HTML 寫得如何,你所看到的頁面就長得如何,僅此而已。所以你可以看到上圖中的 DOM 元素的 <body>、<h1> 等,也都是你在 HTML 中會看到的標籤元素。

在現實生活中,樹是不會動的,沒錯,網頁其實也是如此,那為什麼我們可以跟網頁做這麼多互動?比如說輸入帳號密碼,錯誤會跳出提示,往下滑動頁面時,會有新的圖片和內容跑出來 ? 這些就是用 Javascript 做的。

可是初學 Javascript 的你,可能會想問,為什麼學習的時候都是在教宣告變數,使用判斷式,教我們使用迴圈之類的,跟上述所說又有什麼關係?

事實上不論你學哪一種程式語言,他們運作的邏輯都是大同小異,不管是 C#、Java、還是 Javascript,程式語言內部都有這些規則與用法,只是不同語言應用在現實生活上的領域不同,所以不用太意外,你所學的不只是 Javascript,也是大多數程式語言的步數與邏輯。

回到正題,要讓這顆死樹變成像魔法世界般會動的樹,也就是說要讓我們與頁面互動,就會需要 Javascript 的幫忙,在不考慮使用 jQuery 的狀況下,Javascript 改變頁面的做法是這樣的:

  1. 利用 Javascript 函式選取 DOM 元素
  2. 選取到之後,利用 Javascript 按照我們想要的運作邏輯改變位置或做出各種動作
  3. Javascript 可以與後端交換資料,讓前端與後端做資料上的交換,進而呈現在你的頁面上

大概就是如此,如果要說得更簡單一點,你可以將 Javascript 看成是哈利波特裡面的魔法師,它只要動動魔杖,房間內的東西都會變換位置,去它該去的地方,依照他的意志擺放。

我個人是到了第七週才領悟到這些,那為什麼搬到第二週和第三週來講,是因為我認為先了解到這個程式語言可以用來幹嘛,之後學習的路上方可心領神會,在第二週與第三週,我所學的部分有以下:

  1. 利用 Javascript 學習基本的程式語言邏輯,包含宣告變數、變數型別、判斷式、迴圈與函式等等
  2. 學習不同的 Javascript 檔案的引入與匯出
  3. 學習 Javascript 的 ES6 版本新增語法,ES6 是近期 Javascript 的一次大型改版,多了許多新語法可以用。
  4. 學習單元測試 Unit Test
  5. 學習一些現成的套件,如 npm

基本上在二和三週學習完,作業也交出去之後,其實都還不知道 Javascript 可以用來幹嘛,這兩週的作業如果寫得好,也是很大一部分在考邏輯運算的能力,還有我們如何在既定的邏輯之下簡化自己的程式碼,但對我個人而言,我還算是蠻喜歡解題的。

至於我在第二與第三週學習到什麼,可以看我之前的作業紀錄,因為在第五週的總複習時,我已經把二三週的所學用心得筆記的方式記錄在裡面了,這邊就不贅述在 Medium,這篇文主要的目的是可以先告訴初學者基礎的 Javascript 大概可以用來幹嘛,它又是運用大概怎樣的原理讓畫面動起來,僅此而已。

--

--