# 前端入門教學 ## 前情提要 軟體工程師大致可以分成三種:前端工程師(frontend engineer/developer)、後端工程師(backend engineer/developer)、手機App工程師(mobile developer) | 職位 | 工作內容 | 開發語言 | | ----| -------- | -------- | | 前端 | 負責網頁的介面部分 | Javascript(JS) | | 後端 | 負責網頁的資料庫(database)、系統、根據前端要求回傳資料 | PHP、Java、NodeJS(JS語法)、Python、Go | | 手機 | 就不用特別介紹了 | Java(Android)、Swift(ios)、Kotlin(Android&ios) | 其他強大語言:C/C++、C# 幾乎都可以做,不過非常難學,因為靠近電腦底層,除了語法外,對電腦知識需要有很深的了解,比如如何處理記憶體 題外話:17 app後端就是Go XDD 一個效能很強大的語言,不過也是非常難學,觀念類似C++ ## 第一節 Chapter1 網頁前端介面由 HTML, CSS, Javascript(JS)組成 ## HTML(架構) ### 簡介 網頁是由HTML的tags(標籤)組成的 tags就是像`<p></p>`, `<div></div>`等等的,每種tag有不同意義,不過一開始先知道什麼是tag就好 ### 練習 現在打開這個網頁 [CodePen](https://codepen.io/your-work) 左上角點 **Start Coding**,在HTML的區塊複製貼上下面這段程式碼 ``` <div>Hello</div> ``` 就可以看到這個畫面 ![](https://i.imgur.com/vNZLde9.png) 也可以試著改變內容的`Hello`玩玩看 網頁就是由一堆上面的code堆出來的 ### 網頁開發者工具 * 右鍵點擊畫面 選檢查 * 或按F12 會看到這個畫面👇 上面的部分,有很多`<>`這種東西的,就是目前所在網頁的html 下面寫著Styles的部分,就是這個網頁的CSS ![](https://i.imgur.com/jv28ITC.png) 如果點上面的 **Console** 就會變這樣,這裡是你可以直接測試Javascript的地方,但網頁的JS是一個檔案,寫在其他地方。 ![](https://i.imgur.com/5ObhBlT.png) ### 接下來 對HTML有基本了解後,就可以到W3Schools網頁開發官方網站學習更多詳細的HTML語法 [w3schools-html](https://www.w3schools.com/html/html_basic.asp) ## CSS(外觀、設計 ex. 顏色、字體大小) CSS是根據該網頁有的HTML tags來做設計,可以想成HTML每個tag都是身體的頭、手、上半身、下半身、腳,CSS是衣服配件,頭上可以戴黃色帽子、衣服可以穿紅色T-shirt等等,就是由你寫的CSS決定。 ### 組成 CSS的語法就是 `tag { property: value; property: value; }`這樣的寫法,property就是顏色、字體大小、位置等等的,根據文件可以知道哪個設計要用哪個property去寫,就是CSS特有的語法,畢竟大家寫法要統一嘛! ![](https://i.imgur.com/bviVMwU.png) ### 練習 以我們剛剛的例子來說,在CodePen網頁的CSS部分,複製貼上以下程式碼 ``` //HTML <div>Hello</div> //CSS div { color: red; } ``` 對`div`這個tag加上文字顏色紅色的CSS後,就可以發現Hello變成紅色了 ![](https://i.imgur.com/6EsROzb.png) 當然,今天如果HTML裡寫的是`<p></p>` tag,那CSS的`div`就要改成`p`,像這樣 ``` //HTML <p>Hello</p> //CSS p { color: red; } ``` ### 接下來 對HTML有基本了解後,就可以到W3Schools網頁開發官方網站學習更多詳細的HTML語法 [w3schools-css](https://www.w3schools.com/css/css_syntax.asp) ## Javascript(使用者互動 ex.點擊按鈕會有反應) ### 簡介 Javascript簡稱JS,跟Java是不一樣的東西,我一開始學程設也以為是一樣的,但JS是專門寫網頁的,Java是專門寫手機。 這個說法不完全正確,因為JS也可以做手機,比如當你用手機逛網頁時,那些網頁都還是JS做的,只是根據手機螢幕大小跟桌電螢幕大小做了一些排版調整而已。JS也有特別寫手機的工具,只不過Java畢竟是專門設計來寫安卓的,在效能上JS會差一點。但JS厲害的地方在於,寫手機App有很多語言,還分安卓跟蘋果,安卓用Java,蘋果用Swift,現在還有很多Kotlin等等的手機語言,但只要是網頁,就都是用JS,幾乎沒有別的可以跟JS比網頁開發,所以JS還蠻萬用的。 而且現在Google宣布Kotlin成為Android官方開發語言,手機app的語言也是不斷推陳出新的,不過不管是哪個語言,工程師的技術都是每年更新的,語言都會有新版本新語法。 JS是網頁中負責處理使用者互動等事件的部分,像前面的例子,雖然有畫面,但是是靜態的,但加入JS就可以使畫面動起來,比如輸入使用者名稱後網頁就會執行登入事件,這就是靠JS完成,只有HTML、CSS的話,即使輸入使用者名稱點登入按鈕,也不會發生任何事。 ### 基礎程式語言通用概念 以下這些概念,每個語言幾乎都是一樣的,只是語法不一樣,這裡我都用Javascript舉例(因為Java不熟...) 💡 程式碼部分都可以打開網頁開發者工具的Console,跟著打一次看結果 --- #### data type(資料型態) 資料型態是指 整數(integer)、小數(float, double)、字串(string)、布林值(boolean)、陣列(array)、物件(Object)等等,根據不同語言去增加或減少,在學習一個語言時需要明白該語言使用哪些資料型態。 * 字串string:也就是文字,英文中文都是字串,會使用`' '`或者`" "`包起來,ex. `'123', 'banana', "hello"`。 * 字符char:有的語言還會特別分出char,就是一個英文字母('a')、一個符號('&')、一個中文字('嗨')。所以,字串是由字符組成的。 * 布林值boolean:`true` 或是 `false`,表達是與非的型態,每個語言的true/false大小寫不一定一樣,有的可能是`True/False` * 陣列array:類似數學中矩陣的一種,用來儲存多個值,通常用`[]`包起來,ex. `[1, 2, 3]` * 物件Object:可以儲存多種資料,在JS中以`{}`包起來,ex. `{ Name: 'John', Age: 18 }` --- #### variable(變數) 變數就是可以拿來暫存資料的東西,就像數學中我們用`x, y, z`代替某些數字等等,方便計算 例子: ``` //數學 x = 3 y = 4 z = x+y //z的值就是7 ``` 對應到程式語言就是 ``` //JS var x = 3 var y = 4 var z = x+y //z的值就是7 console.log(z) ``` `console.log`是JS把東西打印出來的一個語法,console裡我們可以看到回傳7,像這樣: ![](https://i.imgur.com/EnoXDK3.png) > 在程式語言中,我們稱`var x=3`這種動作叫做 *宣告一個變數(Declare variable)* 在JS裡,宣告變數基本的方法就是`var`,取的是variable的簡稱。JS很簡單,所有變數不管你要賦予的值是整數(integer)、字串(string)、陣列(array),都可以用`var` 想更改變數值的話,不需要再宣告一次,直接改就好,像這樣: ``` x = 10 console.log(z) //return 7 //現在z的值就立刻變成14了,因為x+y變成10+4 ``` Java就比較麻煩了,在Java裡的話,如果要宣告整數,就得特別強調是`int`,像這樣 ``` //Java int x = 3 //int 就是integer簡寫 float y = 0.5 //float是非整數,小數的意思 ``` (注意:Java的程式碼就不能放到Console測試了,因為Console只能跑網頁語言) 而這種需要在宣告變數時,特別強調變數形態的,就不可以隨意變換數值,比如原本用來儲存整數的變數,不能再把值改成小數或字串等 --- #### for loop(for迴圈) 可以用來重複做某件事的一個方法,不同語言與法有不同寫法,但概念是一樣的 例子:想打印'hello'五次,用for loop就可以像這樣寫 ``` for (var i = 0; i < 5; i++) { console.log('hello') } ``` (可以用Console跑跑看) 拆解第一行的 `for (var i = 0; i < 5; i++)` `var i = 0`:就是宣告一個變數叫i,賦予它0的值 `i < 5`:i不可以超過5 `i++`: `i++`就是`i+1`的意思,也可已看成`i+=1`,意思是每次i都會加1 所以第一行整個意思就是,i從0開始,加1,加到小於5,也就是到4就會停 第二行:就是簡單的打印出hello for loop的話,從`{`開始,到`}`結束,在大括號裡的事情都會被重複做 --- #### if else statement判斷式 在程式中,很常會需要判斷各種情況,依情況做不同處理,這時候就需要用到if else 例如: