前段日子看到一篇文章提到MEAN這個詞,什麼是MEAN?
其實MENA就是 MongoDB(非關聯式資料庫) Express(範本引擎) AngularJS(MVC javascript函式庫) NodeJS(伺服器腳本)的簡稱。
它們共同建構 基於 javascript 的 現代web應用全端開發工具。
MongoDB:
是一種強大、靈活、可擴充的資料儲存方式。
它擴展了關係型資料庫的眾多有用功能,如輔助索引、範圍查詢、和排序、它內建的對MapReduce式聚合的支援和對地理空間索引的支援。
它將傳統資料庫行(row)的概念換成,文檔(document)模型,所謂文檔模型其實就是一個陣列物件。
我們來看看文件模型:
{“_id” : 1 , “greeting” : “hello,world!” , “foo” : 3}
每個文件都會帶有一個_id的字段,該文檔模型代表資料庫中有一筆記錄,包含字段 greeting , foo 和 _id;
Express:
關於末班引擎Express,我想用按句話來描述它:
是一個簡潔而靈活的node.jsWeb應用框架, 提供一系列強大特性幫助你創建各種Web應用。
豐富的HTTP工具以及來自Connect框架的中間件隨取隨用,創建強健、友好的API變得快速又簡單
Express 不對 node.js 已有的特性進行二次抽象,我們只是在它之上擴展了Web應用所需的功能
AngularJS:
AngularJS是由google開發的一款js函式庫,它與backone一樣同為MVC腳本函式庫。
幾乎每種語言的第一課都是講hello world,按照慣例我們也來一個:
聲明了該頁面使用angularJS,當載入該頁時,標記ng-app告訴AngularJS處理整個HTML頁並引導應用。
這個例子在頁面上印hello world,有的人就奇怪了,hello world搞這麼複雜幹嘛。
其實{{}}裡內容是一種資料綁定的形式,看完下個例子你就知道它的強大之處了。
我門接著看下一個例子:
在瀏覽器裡打開這個頁面,然後試著在輸入框中輸入隨意字符,你會發現這些輸入的字符立即更新顯示在問候語中。 是不是很神奇呢?
的念。 輸入框的任何變更會立即反映到模型變數(一個方向),模型變數的任何變更都會立即反映到問候文字中(另一個方向)。
此範例有幾個重要的注意事項:
1. 文字輸入指令綁定到一個叫yourname 的模型變數。
2. 雙大括號標記將yourname 模型變數加入問候文本。
3. 你不需要為該應用程式另外註冊一個事件偵聽器或新增事件處理程序!
NodeJS
是由Ryan Dahl開發的高效能伺服器js平台。
它是集於V8引擎開發的,V8引擎是google開發的 javascript引擎,不是汽車的V8引擎 – -是一款高性能引擎,它的性能遠遠超越其他腳本語言。
nodeJS使用的是 非同步I / O的通訊方式,這種方式和AJAX很類似:
nodejs的請求方式:
我們再看下面這個例子:
當同時執行兩個請求的時候,總耗時取決於耗時最多的那個,而不是兩個請求的耗時總和,因為他們兩個是並行的。
nodejs高效能的另一個原因是基於事件驅動:
node將前端瀏覽器中的 事件 引入後端,配合非同步I/O,將事件點暴露給業務邏輯。
事件的變成方式具有輕量級,鬆散耦合,只關注事物點等優勢。