什么是MEAN?JavaScript編程中的MEAN是什么意思?
前段日子看到一篇文章提到MEAN這個(gè)詞,什么是MEAN?
其實(shí)MENA就是 MongoDB(非關(guān)系數(shù)據(jù)庫(kù)) + Express(模板引擎) + AngularJS(MVC javascript庫(kù)) + NodeJS(服務(wù)器腳本)的簡(jiǎn)稱。
它們共同構(gòu)造 基于 javascript 的 現(xiàn)代web應(yīng)用全棧開發(fā)工具。
MongoDB:
是一種強(qiáng)大、靈活、可擴(kuò)展的數(shù)據(jù)存儲(chǔ)方式。
它擴(kuò)展了關(guān)系型數(shù)據(jù)庫(kù)的眾多有用功能,如輔助索引、范圍查詢、和排序、它內(nèi)置的對(duì)MapReduce式聚合的支持和對(duì)地理空間索引的支持。
它將傳統(tǒng)數(shù)據(jù)庫(kù)行(row)的概念換成,文檔(document)模型,所謂文檔模型其實(shí)就是一個(gè)數(shù)組對(duì)象。
我們來(lái)看一下文檔模型:
{“_id” : 1 , “greeting” : “hello,world!” , “foo” : 3}
每個(gè)文檔都會(huì)帶有一個(gè)_id的字段,該文檔模型代表數(shù)據(jù)庫(kù)中有一條記錄,包含字段 greeting , foo 和 _id;
Express:

關(guān)于末班引擎Express,我想用按句話來(lái)描述它:
是一個(gè)簡(jiǎn)潔而靈活的node.jsWeb應(yīng)用框架, 提供一系列強(qiáng)大特性幫助你創(chuàng)建各種Web應(yīng)用。
豐富的HTTP工具以及來(lái)自Connect框架的中間件隨取隨用,創(chuàng)建強(qiáng)健、友好的API變得快速又簡(jiǎn)單
Express 不對(duì) node.js 已有的特性進(jìn)行二次抽象,我們只是在它之上擴(kuò)展了Web應(yīng)用所需的功能
AngularJS:
AngularJS是由google開發(fā)的一款js庫(kù),它與backone一樣同為MVC腳本庫(kù)。
幾乎每種語(yǔ)言的第一課都是講hello world,按照慣例我們也來(lái)一個(gè):
<!doctype html>
<html ng-app>
<head>
<script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>
</head>
<body>
Hello {{'World'}}!
</body>
</html>
<html ng-app>
聲明了該頁(yè)面使用angularJS,當(dāng)加載該頁(yè)時(shí),標(biāo)記ng-app告訴AngularJS處理整個(gè)HTML頁(yè)并引導(dǎo)應(yīng)用。
這個(gè)例子在頁(yè)面打印hello world,有的人就奇怪了,hello world搞這么復(fù)雜干嘛。
其實(shí){{}}里內(nèi)容是一種數(shù)據(jù)綁定的形式,看完下個(gè)例子你就知道它的強(qiáng)大之處了。
我門接著看下一個(gè)例子:
<!doctype html>
<html ng-app>
<head>
<script src="angular-1.0.1.min.js"></script>
</head>
<body>
Your name: <input type="text" ng-model="yourname" placeholder="World">
<hr>
Hello {{yourname || 'World'}}!
</body>
</html>
在瀏覽器里打開這個(gè)頁(yè)面,然后試著在輸入框輸入隨意字符,你會(huì)發(fā)現(xiàn)這些輸入的字符立即更新顯示在問候語(yǔ)中。 是不是很神奇?
的念。 輸入框的任何更改會(huì)立即反映到模型變量(一個(gè)方向),模型變量的任何更改都會(huì)立即反映到問候語(yǔ)文本中(另一方向)。
該示例有一下幾點(diǎn)重要的注意事項(xiàng):
1. 文本輸入指令<input ng-model=”yourname” />綁定到一個(gè)叫yourname 的模型變量。
2. 雙大括號(hào)標(biāo)記將yourname 模型變量添加到問候語(yǔ)文本。
3. 你不需要為該應(yīng)用另外注冊(cè)一個(gè)事件偵聽器或添加事件處理程序!
NodeJS
是由Ryan Dahl開發(fā)的一款高性能服務(wù)器js平臺(tái)。
它是集于V8引擎開發(fā)的,V8引擎是google開發(fā)的 javascript引擎,不是汽車的V8引擎 – -是一款高性能引擎,它的性能遠(yuǎn)遠(yuǎn)超越其他腳本語(yǔ)言。
nodeJS使用的是 異步I / O的通信方式,這種方式和AJAX很類似:
$.post("url", {title:"post請(qǐng)求"}, function(data){
console.log("收到響應(yīng)");
})
console.log("發(fā)送ajax結(jié)束");

nodejs的請(qǐng)求方式:
var fs = require('fs');
fs.readFile("/path", function(err, file){
console.log("讀取文件完成");
});
console.log("發(fā)起讀取文件");

我們?cè)倏聪旅孢@個(gè)例子:
當(dāng)同時(shí)執(zhí)行兩個(gè)請(qǐng)求的時(shí)候,總耗時(shí)取決于耗時(shí)最多的那個(gè),而不是兩個(gè)請(qǐng)求的耗時(shí)總和,因?yàn)樗麄儍蓚€(gè)是并行的。
//第一個(gè)請(qǐng)求
var fs = require('fs');
fs.readFile("/path1", function(err, file){
console.log("讀取文件1完成");
});
//第二個(gè)請(qǐng)求
fs.readFile("/path2", function(err, file){
console.log("讀取文件2完成");
});
console.log("發(fā)起讀取文件");
nodejs高性能的另一個(gè)原因是基于事件驅(qū)動(dòng):
node將前端瀏覽器中的 事件 引入后端,配合異步I/O,將事件點(diǎn)暴露給業(yè)務(wù)邏輯。
事件的變成方式具有輕量級(jí),松耦合,只關(guān)注事物點(diǎn)等優(yōu)勢(shì)。
相關(guān)文章
Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹詳解
這篇文章主要介紹了Node.js讀指定文件夾輸出該文件夾文件樹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
nodejs實(shí)現(xiàn)文件或文件夾上傳功能的代碼示例
在平常的工作中,經(jīng)常會(huì)遇到需要將本地項(xiàng)目文件同步到遠(yuǎn)端服務(wù)器的情況,所以每次遇到都需要考慮如何將文件上傳到服務(wù)器上,所以本文就給大家介紹一下nodejs實(shí)現(xiàn)文件或文件夾上傳功能,需要的朋友可以參考下2023-08-08
Nodejs把接收?qǐng)D片base64格式保存為文件存儲(chǔ)到服務(wù)器上
這篇文章主要介紹了Nodejs把接收?qǐng)D片base64格式保存為文件存儲(chǔ)到服務(wù)器上,文中代碼較簡(jiǎn)短,需要的朋友可以參考下2018-09-09
node.js連接mongoose數(shù)據(jù)庫(kù)方法詳解
之前我們都是通過shell來(lái)完成對(duì)數(shù)據(jù)庫(kù)的各種操作的,在開發(fā)中大部分時(shí)候我們都需要通過程序來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作。而Mongoose就是一個(gè)讓我們可以通過Node來(lái)操作MongoDB的模塊2022-08-08
使用Node.js實(shí)現(xiàn)ORM的一種思路詳解(圖文)
這篇文章主要介紹了用Node.js實(shí)現(xiàn)ORM的一種思路詳解(圖文),需要的朋友可以參考下2017-10-10
詳解使用Nodejs內(nèi)置加密模塊實(shí)現(xiàn)對(duì)等加密與解密
這篇文章主要介紹了使用Nodejs內(nèi)置加密模塊實(shí)現(xiàn)對(duì)等加密與解密,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05

