前言
常看esor大的blog,了解更多Evernote的應用,
就開始慢慢使用Evernote,漸漸的Evernote已經是我生活中不可或缺的工具
(對我來說就是第二顆大腦,而且空間無限大,還可以隨時像Google一樣搜尋)
自己也很喜歡玩新服務,Evernote周邊的App很多也很方便
尤其今年看到DevCup 2013上不少作品還滿令人喜歡
當然就會一直推身邊朋友坑,大力宣傳Evernote的好用
也有在交大資工營推廣Evernote等數位工具的使用
But自己不只想甘於只是活用工具者
總覺得都已經念好幾年資工系所,
不應該只是從學校課程學習,也該學會寫一些工具讓自己的生活更加便利
再練強一點 Maybe可以參加DevCup 或 Hackthon之類的,推廣自己的idea也算是額外經驗...
無意間從Evernote台灣開發者的FB得知 Taiwan Evernote Developer Meetup #2
以 當 Evernote 遇上 Node.js Workshop 為主題
有能學習開發Evernote App的機會當然立馬報名參加
趁著台灣時間中午前,算是Koding比較穩定的時段,(現在比起Crazy 250TB Week 前三天,穩定很多)
趕緊來測測看前些天還沒測過的功能
在Koding建置Evernote Node.js 環境
Read on →在Koding裡的好處是,可以不用安裝npm,
還有可以快速import github上面project,
開一個瀏覽器,就可以編寫code、在Terminal執行、瀏覽器預覽,集於一身,
要做Evernote的教學,Koding是很方便的選擇。
一些在Node.js環境中,使用express framework開發Evernote API,可以參考的背景知識
Node.js
Node.js is a platform written in JavaScript for easily building fast, scalable network applications.
可以把 Node.js 當成一個運行環境,同時也是javascript的函式庫
- non-blocking
- event-driven
參考資料
MVC
軟體工程中,把系統分成三個部份: Model、View、Controller的軟體架構
- 程式結構更為直覺(未使用framework=>SQL,CSS,HTML,PHP/JS/Python...混在一起)
- 後續程式修改、維護、擴充容易
- 專業人員可以透過自身的專長分組:
- Model: 資料庫、演算法、程式功能
- View: UI、UX
- Controller: 負責轉發請求,對請求進行處理
- 蒐集使用者於View中所輸入的資料,並決定由哪一支程式進行處理
- 接收Model傳回的資料,解析後傳給View呈現
- 蒐集使用者於View中所輸入的資料,並決定由哪一支程式進行處理
參考資料
Wiki - MVC
[軟體工程] MVC 架構
CI 練習- [帳號申請] 表單傳遞 form_open、method
CI 練習- [帳號申請] database 連結
express
express 其實不太算一個標準的MVC架構,因為Model部分不是由他提供。
以evernote-sdk-js為例,簡單分類的話:
View: views/index.jade
Controller: app.js(routes/index.js)
app.js 是 express最主要的設定檔:定義 express 使用的套件、template 系統、路徑設定與port。
如果全部的定義設定都寫在app.js裡面也很混亂,所以可以分開到其他的目錄文件中
(routes不屬於express模組,只是方便寫邏輯而已!)
參考資料
MVC路由控制 – Express 和 Django
node.js框架 express的mvc簡單解釋
CodeIgniter 2.0.X
有了前面基礎的環境建置、背景知識了解後,
以官方的evernote-sdk-js為基礎,
就來練習第一個Evernote API的應用~建立筆記,也就是CRUD的Create
流程:
- 進到首頁,先連結Evernote帳號
- 進入Create Note頁面
- 輸入標題、內容,按下Create Note //create
- 在Evernote建立筆記,導回首頁 //receive
由於Javascript是event driven,
並不會像我們以往寫程式認為程式應該會按照我們寫的順序跑(不過Node.js也因此速度更快)
所以像callback等的觀念與練習是之後還要再摸索的
一個API只要學會CRUD,之後任何應用就會很得心應手了
目前Evernote SDK based on Node.js with express,
有CRUD範例,就屬rexchen所寫的enmlEditor
而且使用的view-engine不是官方範例中的jade,而是我們熟悉的html,相信學起來會更容易上手。
移植到Koding 上寫的話,import https://github.com/rexchen/enmlEditor.git
主要需要改的就是config.json,填上你的key(要是Full Access
key)
把SANDBOX設成true
,PRODUCTION_URL換成你的帳號.kd.io:3000
{
"API_CONSUMER_KEY": "",
"API_CONSUMER_SECRET": "",
"SANDBOX": true,
"NOTEBOOK_NAME": "ENML Editor",
"PRODUCTION_URL": "http://你的帳號.kd.io:3000"
}
之後跟以往一樣執行node app.js
就行囉!
參考資料
後記
一直很喜歡Evernote,也希望能有一天寫出相關應用,
去年11月參加的Meetup接觸了Evernote SDK for Node.js,不過一直還沒有push自己去學更多,
直到現在週末不定時研究所同學會主辦讀書會,分享自己所學,
算是半強迫自己把Evernote的API摸熟一些,產出前幾篇的教學文。
不過,現階段我應該會捨棄Node.js吧! (會寫Node.js系列文,只是那次Meetup學的是Node.js xDDDD)
還不太習慣Event-driven的寫法,會先把之前的CodeIginter練熟再配合Evernote SDK for php,下一步應該是Ruby。
Keep Going!!!