新一代網站伺服器架構:MEAN
(加贈 MEAN 免費電子書)
最近國外科技網站頻頻出現一個新名詞:「MEAN」。而且該名詞只會出現與「網站開發(Web Site Development)」相關的論壇。看著大家「卑鄙」來「卑鄙」去的(Mean 在英文是「卑鄙、小氣」的意思),彷彿這個名詞技客(Geeker)們都已經熟到不用解釋到底在卑鄙個什麼。擁有嚴重資訊焦慮症(笑)的我,眼睛怎能容忍一個不知道全名的縮寫,動不動就從畫面「立體突出」來恥笑我呢!... :-D 稍微用點技巧查了 Google,並且把結果分享給大家。
原來 MEAN 講的是架設網站時,所使用的四套軟體:MongoDB、Express、AngularJS、Node.js。早個十年,那時開發網站流行使用 LAMP (Linux, Apache, MySQL, PHP) 這四套軟體。近年來,由於「大數據(Big Data)」、「分散式架構(Distributed Architecture)」、「非同步函數呼叫(Asynchronous Calls)」流行,傳統的 LAMP 已經無法應付上述三個需求,因此,網站開發環境就從「檯燈(LAMP)」換成「卑鄙(MEAN)」了... :-D 。皆下來我就一一介紹「卑鄙會的會員們」有哪些特色。
MongoDB 是一款以「檔案」做為儲存媒介的資料庫(Database)。有別於用傳統資料庫伺服器儲存資料、得把資料集中在後端單一機器上,使用檔案來存資料,不必硬是把資料集中在後台的一部機器上。你可以把一筆資料「碎屍萬段」,人名與電話的基本資料放在一台機器內的檔案,學經歷資料放在另一台機器內的檔案,達到「分散儲存,平行存取」的效果。這類用檔案做為儲存媒介的資料庫,我們通常稱為 NoSQL Database。近來 Facebook、Google...等網站,都積極使用 NoSQL Database 來做為後端儲存媒介。不但能「分散儲存」資料來預防一台機器掛點、整個網站就不能動的窘境,還能藉由「平行存取」位於數十台機器上分散儲存的資料,達到「秒取」所需的數據。關於 NoSQL 的介紹,可以看這篇「NoSQL 入門指引」: http://www.openfoundry.org/tw/news/9040
接下來我會介紹 Node.js,因為它比 Express 或 AngularJS 都來得基本。什麼是 Node.js 呢?簡單來說,就是執行於伺服器端的 JavaScript。拿 LAMP 時代的成員來比喻,Node.js 的地位就與 PHP 相同,只不過它採用 JavaScript 來當成語言而已。當然,Node.js 不是只有把 JavaScript 從客戶端搬到伺服端那麼簡單而已,還添加了不少功能。最著名的,當屬「非同步呼叫(Asynchronous Calls)」機制了。想瞭解「非同步呼叫」,得先瞭解什麼是「同步呼叫」。當主程式呼叫副程式時,在副程式還沒執行完前,主程式會「卡住」,等待副程式完成返回後,主程式才會繼續下一列程式碼的執行。這種函數呼叫方法稱為「同步呼叫」。但若副程式執行時間長,主程式在等待時就會因螢幕凍結、讓使用者體驗到類似「當掉」的情況。所以另外一種作法,就是主程式呼叫副程式、副程式開始運作後,主程式不等待副程式完成,逕行執行下一道指令。此時主副程式處於「平行運作」的狀況。等待副程式完成,就會「通知」主程式說:「我做完了」,主程式再予以反應即可。這種函數的呼叫方法,就稱為「非同步呼叫」。Node.js 並非三言兩語可以講完,有興趣的朋友,可以參考這本免費的 Node.js 電子書「Node 入門」: http://www.nodebeginner.org/index-zh-tw.html
再來是 AngularJS。它是 JavaScript 的「函式庫(Library)」,地位比較偏「前端」,負責 UI 的建置。如果說 JavaScript 是「無敵鐵金剛」,那 AngularJS 就類似「金剛飛翼」。與無敵鐵金剛結合後,就能讓本來不會飛的鐵金剛,遨翔在天際。AngularJS 有兩大特色:「單一網頁」與「MVC 模式」。「單一網頁」就類似你查詢「Google 圖片」時的感覺相同。網站一開始只提供一部份資料,隨著你往下捲,網站會動態載入剩下的部分。所有內容只要一直捲動,就會完整呈現,不必按「下一頁」,這就叫「單一網頁」。至於「MVC 模式」比較難懂,完全不瞭解它是什麼的版友,就等您實際研讀 AngularJS 再去學吧!Facebook 這邊實在不適合我長篇大論地講「何謂 MVC」。真的求知若渴的朋友,或可參考這篇「MVC 淺談」: http://luvit.me/1GzNxqN。最後,對 AngularJS 有興趣的朋友,可以參考這篇「我的前端 AngularJS 初體驗」: http://upvot.es/1C6W9qd
Express,一稱 ExpressJS,是一款 JavaScript 的「框架(Framework)」。所謂框架,就是協助你快一點寫出你想要的程式碼的工具。如果 JavaScript 是無敵鐵金剛,Express 就是幫忙你快速產生一架無敵鐵金剛的工具(以便讓你快去跟 AngularJS 這個金剛飛翼結合)。如果你是 PHP 的老手,我說 Express 就像是 PHP 內的 PEAR,不知道您是否能更有體會呢?關於 Express 的簡單介紹,中文的不多,不過我還是勉強找到這一篇 OK 的:「使用Node.js + Express建構一個簡單的微博網站」( http://upvot.es/1E4MGQT )。
不知這樣介紹,大家知道怎麼「卑鄙」(MEAN)地建構一個網站了嗎?最後送大家一本「卑鄙入門 XD」免費電子書。點擊後,找尋「eBook」這個關鍵字就能免費下載囉:
"MEAN Web Development", Packt Publishing, 2014
http://www.it-ebooks.info/book/4849/
期待大家也開始在網站開發這一塊,越來越「卑鄙」....
參考資料:
MongoDB(維基百科): http://zh.wikipedia.org/wiki/MongoDB
用 Express 和 MongoDB 寫一個 todo list: http://upvot.es/17ER5vU
AngularJS(維基百科): http://zh.wikipedia.org/wiki/AngularJS
使用 Node.js、Express、AngularJS 和 MongoDB 构建一个实时问卷调查应用程序: http://upvot.es/187BAwj
精通 MEAN: 当 MEAN 遇到 Meetup.com 和微数据: http://upvot.es/1E4Mili
同時也有1部Youtube影片,追蹤數超過8萬的網紅Belinda Chen,也在其Youtube影片中提到,我的淘宝终于到了!!! 等了足足一个多月? 希望你们看的爽! 产品链接在下面~ 钻石小奶锅:http://you.163.com/item/detail?id=1051003&_stat_area=32&_stat_referer=search&_stat_query=%E9%94%85&_sta...
「todo list中文」的推薦目錄:
todo list中文 在 Belinda Chen Youtube 的最佳貼文
我的淘宝终于到了!!!
等了足足一个多月?
希望你们看的爽!
产品链接在下面~
钻石小奶锅:http://you.163.com/item/detail?id=1051003&_stat_area=32&_stat_referer=search&_stat_query=%E9%94%85&_stat_count=51&_stat_searchversion=0.6
钻石煎锅:http://you.163.com/item/detail?id=1051001&_stat_area=23&_stat_referer=search&_stat_query=%E9%94%85&_stat_count=51&_stat_searchversion=0.6
摄影灯:https://click.alibaba.com/rd/7m1mi8g9
懒人抹布:http://you.163.com/item/detail?id=1006058&_stat_area=1&_stat_referer=search&_stat_query=%E6%8A%B9%E5%B8%83&_stat_count=13&_stat_searchversion=0.6
卡奇色彩眉笔:https://click.alibaba.com/rd/njn9k2jq
Gracebabi美妆蛋:https://click.alibaba.com/rd/p2vsa9kh
Real Techniques混合眼影刷两支套装:https://click.alibaba.com/rd/5d7h1v2s
鹅/鸭子手机壳:https://click.alibaba.com/rd/kcenbfe2
斑马彩笔:https://click.alibaba.com/rd/khidlmk2
百乐中性笔:https://click.alibaba.com/rd/ft746etc
高中回忆笔:https://click.alibaba.com/rd/ooqt43r5
彩色水性笔:https://click.alibaba.com/rd/jbfl0bd6
手账彩色花边修正带:https://click.alibaba.com/rd/pi59mk9h
改正带双面胶:https://click.alibaba.com/rd/tg1d090j
暗色系纯色灰色冷色调手帐和纸胶:https://click.alibaba.com/rd/8coc6lp3
波点贴纸:https://click.alibaba.com/rd/lrms2vrb
超细胶带:https://click.alibaba.com/rd/p800cb3l
新年快乐贴纸:已下架
todo list便条贴:https://click.alibaba.com/rd/d8lbsivu
信封信纸烫金节日贺卡:已下架
贴纸:https://click.alibaba.com/rd/1mb6ev9e
防粘剪刀:https://click.alibaba.com/rd/3q9hcc1c
2019年手账本:https://click.alibaba.com/rd/9vo4pa3d
Enter键减压玩具:https://click.alibaba.com/rd/9rpm75ut
野餐垫:https://click.alibaba.com/rd/jhsbsitl
微博: BelindaChen_
B站: BelindaChen_
Instagram: belindachen0229
Business only: belindachen0229@gmail.com
?Camera: Canon G7x Mark ii + Canon M50
?Editing: Final Cut Pro X
This video is not sponsored!
![post-title](https://i.ytimg.com/vi/vCyBe8XG-lo/hqdefault.jpg)
todo list中文 在 [Vue] 用Vue 寫一個todo-list | 馬格蕾特的前端勇者日誌 的推薦與評價
運用已學到的基礎與進階指令,試著寫出一個todo-list 待辦事項清單吧! ... 按下Enter 的瞬間把編輯中文字變為編輯完成的項目 item.title = this. ... <看更多>
todo list中文 在 我的個人小秘書- 2Do: Stunning ToDo List - Mobile01 的推薦與評價
我的個人小秘書- 2Do: Stunning ToDo List ... 2Do並沒有正式的支援繁體中文,其簡介中的chinese已在先前的版本被移除了,不過有使用者透過越獄等方式 ... ... <看更多>
todo list中文 在 关于任务列表 的推薦與評價
Tip: You cannot create task list items within closed issues or issues with linked pull requests. 对任务重新排序. 您可以单击任务左边的复选框并将任务拖放至新位置 ... ... <看更多>