NodeSchool 一日感想與學習紀錄

5/23 是 NodeSchool 全球性的 International Day,NodeSchool 顧名思義就是有線上教材讓大家學習,並且透過實體活動現場交流與指導。

一直對 nodeJS 這個領域感到好奇,畢竟使用 JavaScript 寫後端對我而言還是很神奇的。原本還在猶豫要不要參加這類的活動(因為實在很抗拒跟不認識的人交流 Q__ Q),但看到活動簡介有提到初學者也能來學習,所以還是咬牙報名了(反正真的不會我還有谷哥可以陪我呢 👋)

老實說,一開始到聚會場地的體驗不是很好,因為我第一次看到一個活動可以讓參加的人在外面等了快半小時(炸)。雖然活動說 10 點開始,但主辦單位也太準時 10 點才到了吧,通常辦活動不是都會提早半小時到嗎 …,一堆人就像傻子一樣在門口發呆,幸好沒下雨天氣也堪稱涼爽,不然我臉應該會更臭 XD,而且我覺得大家脾氣都好好,大概只有我一個人臉上寫著「不耐煩」三個字吧 …

但幸好,順利到了聚會場地後,這樣的不愉快就拋諸腦後了(我是情緒來得快去得也快的小屁孩兒)

我還蠻喜歡 NodeSchool 的線上課程設計,雖然對我來說還是很困難,但是有分「核心基礎」以及「選修課程」兩大塊,可以針對自己的需求做調整,而且超機車的是,第一道題目沒有做出來就不讓你進入下一題,超級討厭的啊 XDD,想跳題都無法(但當然還是有一些作弊的方法 :P,不過不建議啦!)

▼ 因為我很菜,所以只做了 javascripting 以及 learnyounode 這兩塊,而且 learnyounode 還沒做完 T __T

因為課程都是公開的,有興趣的朋友都可以直接到 NodeSchool 網站 npm 各個課程,雖然繁體中文翻譯尚未完全,但還有簡體中文可以參考,打開課程後直接切換語言就好了,非常方便啊 💗💗


雖然最後我也沒有做完,可是真的學到了很多東西,不過寫了一整天頭都暈了,到後面還一直騷擾在場的導師,也非常感謝 Dca 一直耐心的指導我,曾經一度不知道自己在寫什麼了啊。

▼ 認真學習 nodeJS 中

另外還聽到對面的說,今天收穫最豐盛的就是學到了 callback,對面導師也說 callback 是 NodeJS 最精華的部分,但老實說我對 callback 還是似懂非懂的,以及非同步 / 同步這些概念,雖然 NodeSchool 有簡單提到,以及一再讓我們練習,但如果沒有人在旁邊指導與舉例,一個人對著 code 發呆半天大概也研究不出來吧 …

一天將近 8 小時的學習,只做到建立 TCP server,可以印出當前時間就停了。

var server = net.createServer(function(c) { 
  //'connection' listener
  c.on('end', function() {
    console.log('client disconnected');
  });
  c.write(y + '-' + m + '-' + dd + ' ' + h + ':' + s + '\n');
  c.pipe(c);
  c.end();
});

雖然最後沒寫完,但是有寫到 connect Server 的部分還是蠻開心的,所以趁最後半小時,請 Dca 教我如何用 nodeJS 的樣版引擎,簡單的在 index.html 顯示當前時間。

我使用的是一套還蠻漂亮的樣版引擎,叫做 swig (我很討厭跟 haml 類似的 jade,不喜歡省略括號)

npm install swig --save

▼ server.js

var http = require("http");
var swig = require('swig');

var d = new Date(),
    y = d.getFullYear(),
    m = d.getMonth() + 1,
    dd = d.getDate(),
    h = d.getHours(),
    s = d.getMinutes();

var datetime = y + '.' + m + '.' + dd + ' ' + h + ':' + s;
http.createServer(function(req,res){
	swig.renderFile('index.html', {
		datetime: datetime
	}, function(err, renderedHTML) {
		res.setHeader("Content-Type", "text/html");
		res.write(renderedHTML);
		res.end();
	});
}).listen(8888);

記得要加上 .setHeader("Content-Type", "text/html");,這樣才可以正常顯示 HTML tag。

▼ index.html

<h1>{{ datetime }}</h1>

終於學會 1% 的 nodeJS 啦,還可以在 HTML 顯示資料,真的非常有成就感,雖然只是一個弱弱的時間 XDDDD。希望以後有機會可以自己練習怎麼寫留言板,寫一個留言板一直是我的夢想啊!! 希望可以實現它 ~

最後放上 Node School 的相關資料,有興趣的朋友可以參考看看!不知道以後 Node 社團還會不會繼續辦這樣的活動,不過很開心這一次參與了 🙂