簡介先大概介紹一下我的前端經歷吧。第一次接觸前端是codecademy上的課程,學到現在大約學了半年的時間。雖不能稱的上很厲害的前端工程師,但也大概懂前端工程的基本脈絡。看到身邊有很多人打算跳前端這個坑,卻不知如何下手,因此打算寫一些文章,看能不能得到一些回響。 我一直都很喜歡讀歷史故事,又很喜歡一個網路作家金老ㄕ的連載——金老ㄕ的教學日誌。他的筆調饒富趣味,讀起來又很輕鬆,不會拖沓。因此且讓我這個作文很爛的人,來模仿一下他的筆法。 開始囉!
先懂一點網路架構吧!
別急別急,讓我一步一步慢慢說。做一個網頁,其實就很像在造一部車(什麼?我看過的每一本書都告訴我「XXX就像在造一部車」)。我們造車的時候,第一步絕對不是先給車子上色,對吧?即便我們只是一個卑微的上色師傅(前端工程師),我們還是要知道哪個是車門,哪個是引擎,上起色來才不會胡來對吧?所以,我們應該先學的是車子的內部零件到底有哪些。 泡好咖啡了嗎?接著告訴你www三兄弟是什麼?www代表的是World Wide Web,從字面上應該可以看出 除了這個以外,也有其它的協定,譬如smtp(管email的),ftp(管檔案傳輸的)等。但我們網頁工程師主要focus的是在http這個協定上。記住http這個傢伙,他會在往後一直出現。 喝口咖啡,接著是網路門牌——網址 (URL)網址,就是各個網站的地址,當你想方設法連到一個網頁的時候,就要拿著網址一個一個去問。
大概懂了嗎?
當然會囉,如果你連到一個網站,上面寫的不是一個「頂讓」,而是3個大大的數字「404」,就是代表這個網站不見啦。如果這家人再更貼心一點,在門牌上寫了個「我家在XXX」,那就代表他們搬家了(遷站)。不同的數字,都有不同的意義,有興趣了解的話,可以查詢「http status code」,以下列了一些常見的http status code。
好,我現在懂了,只是「瀏覽器」到底是怎麼「找」到我們想要的「網頁」的?觀察一下這個問句,會發現有幾個重要的名詞,我都已經用雙引號括起來了,貼心吧! 1.瀏覽器(browser): 2.找: 3.網頁(webpage): 嗯嗯我大概了解了,只是DNS和router的地方,你講太快了,可以再說清楚一點嗎?什麼是domain name,什麼是url,什麼是ip?喔喔,這是我的失誤,讓我把這個部分給補清楚。 什麼是ip?我先問你,你知道(北緯24.7859195度,東經120.9945463度)在哪裡嗎?這個就是ip位址。那如果我告訴你這個地方的門牌地址叫做「新竹市東區大學路1001號」,在地人可能有辦法理解,他叫做交通大學,這就是domain name。那如果我想要把信寄到交通大學的工程四館,那就要在信上寫「新竹市東區大學路1001號工程四館」,這個就是url。 url 和 domain name乍看之下可能會很接近,但是仔細想想就會發現他們不太一樣。一個domain name底下可以有很多的url,每個網頁都是一個,但是domain name就只有一個。就像交通大學有工程四館、工程三館,而工程四館裡面還有一間電機資訊學士班系辦,層層包容。 ip的格式都是xxx.xxx.xxx.xxx的形式(xxx為0~255的數字,這是ipv4的格式)。此外,因為ipv4的ip已經被發完了,現在也推出較新的ipv6,格式為x:x:x:x:x:x:x:x(x皆為0000~ffff)。順便告訴你,我所就讀的交通大學的ip都是140.113.xxx.xxx的形式。
在windows上的command line(命令提示字元)你可以輸入ipconfig,linux上可輸入ifconfig,就看得到了。此外,在網路的世界裡,每個網站都還領有一個特別的經緯度叫localhost,也可以叫127.0.0.1(這也太不科學),這些都可以叫做自己家。也就是說你在網址列輸入localhost或127.0.0.1的時候,你就會連到自己的伺服器。 還有,差點忘了告訴你一個很重要的東西叫做port,有了這個東西,才可以找到你要的人。一般來說,透過http這個protocol來接網頁,都是用到80這個port,而他的弟弟(會這麼說是因為他比較晚出生)https則是443。port有點像一個房子裡住的人的令牌。到了一個住家,你可以說,「不好意思,可以請port 80的人(http)接待我嗎?」,那他就會用國際規定的方式接待你,要你遞給他一個request,然後他會給你一個response。為什麼說是國際規定的方式?因為這些不同的protocol在進行溝通的時候,全部都是依照網際網路工程任務小組(IETF)所發佈的RFC(Request For Comments,可以想像它是一個標準)進行。 指定port的方式是ip-number:port-number。一般來說都不用指定,因為預設就是port 80。 順帶一提,https是比他哥哥http更優秀的協定,多出來的s代表security,也就是他比http的明文傳送,更具有保密性。 Request & Response來囉。簡單來說,request 就是你去拜訪一個人時,身上帶著的信,上面寫著你想要給他什麼,你可能需要些什麼,response就是對方在看完你的request後給你的回覆信。當然,這個過程可能會發生底下這種情況。
恭喜你,你被發 在網路的世界裡,拜訪和回覆都是非常制式化的,也就是說request和response該怎麼寫,都是有規定好的。不過不用擔心這些繁文縟節該怎麼寫,因為會有程式庫(library)幫你把它搞定。 說的我都糊塗了,所以關於request和response,我們到底該寫些什麼?啊,你的咖啡喝完了,讓我為你斟一杯後,再細細講下去吧! 剛剛已經先給了一個概念,網路世界的交流是非常制式化的。所以拜訪人家網頁的方式,也只能照規定的走。
這邊所說的get和post,就是指拜訪人家,跟人家拿資料或給資料的方式(method)。這兩個方法是最一般的方式,當然還有其它諸如put、delete……,但是沒那麼常用到。當我們的browser連到一個網站去的時候,其實就是用get的方法去取得網頁內容。get方法除了拿到網頁內容之外,也可以傳資料過去,瀏覽器就會根據傳的資料,回覆相對應的內容。這些參數,你可以在網址列上面看到。 而post比較特別,他一般是用來做表單(form)傳送資料用的,像是帳號密碼、基本資料等。也因為他傳的資料不會在網址列上顯示,所以比起get,具有較高的保密性。 看圖說故事囉講了這麼多,該把上面的東西都給用圖解釋一下了。先上個程式碼,別那麼緊張嘛,take it easy.
上面的程式碼,是我在server寫的,用的是nodejs expressjs。nodejs expressjs是一種後端的框架(framework),用的語言是javascript。什麼是後端,什麼是框架,下一篇會再提到。不過從程式碼裡面,你可以看到有get,有request、有response。這個頁面的url用的是localhost下的test目錄,我們的server取出request的num參數,加個「你好」的字串,由response送回去給browser。 比較特別的是,我們在頁面上看到的是undefined,這是因為我們沒有傳任何的參數去給server,所以server拿不到任何的num,理所當然是回傳undefined囉! 加個parameter,他理所當然就出現我們想要的東西了。 小結以上是我認為一個前端工程師,甚至所有學網路的人,所該具備的最基本的概念,把它用輕鬆的筆調寫下來。 好吧,那這次先寫到這裡,下一篇來寫前後端的差別,然後再著重前端到底是什麼(如果有下一篇的話啦XD)。
|
|
来自: 昵称55598231 > 《待分类》