什么是MEAN?JavaScript編程中的MEAN是什么意思?
前段日子看到一篇文章提到MEAN這個詞,什么是MEAN?
其實MENA就是 MongoDB(非關系數(shù)據(jù)庫) + Express(模板引擎) + AngularJS(MVC javascript庫) + NodeJS(服務器腳本)的簡稱。
它們共同構造 基于 javascript 的 現(xiàn)代web應用全棧開發(fā)工具。
MongoDB:
是一種強大、靈活、可擴展的數(shù)據(jù)存儲方式。
它擴展了關系型數(shù)據(jù)庫的眾多有用功能,如輔助索引、范圍查詢、和排序、它內置的對MapReduce式聚合的支持和對地理空間索引的支持。
它將傳統(tǒng)數(shù)據(jù)庫行(row)的概念換成,文檔(document)模型,所謂文檔模型其實就是一個數(shù)組對象。
我們來看一下文檔模型:
{“_id” : 1 , “greeting” : “hello,world!” , “foo” : 3}
每個文檔都會帶有一個_id的字段,該文檔模型代表數(shù)據(jù)庫中有一條記錄,包含字段 greeting , foo 和 _id;
Express:
關于末班引擎Express,我想用按句話來描述它:
是一個簡潔而靈活的node.jsWeb應用框架, 提供一系列強大特性幫助你創(chuàng)建各種Web應用。
豐富的HTTP工具以及來自Connect框架的中間件隨取隨用,創(chuàng)建強健、友好的API變得快速又簡單
Express 不對 node.js 已有的特性進行二次抽象,我們只是在它之上擴展了Web應用所需的功能
AngularJS:
AngularJS是由google開發(fā)的一款js庫,它與backone一樣同為MVC腳本庫。
幾乎每種語言的第一課都是講hello world,按照慣例我們也來一個:
<!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>
聲明了該頁面使用angularJS,當加載該頁時,標記ng-app告訴AngularJS處理整個HTML頁并引導應用。
這個例子在頁面打印hello world,有的人就奇怪了,hello world搞這么復雜干嘛。
其實{{}}里內容是一種數(shù)據(jù)綁定的形式,看完下個例子你就知道它的強大之處了。
我門接著看下一個例子:
<!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>
在瀏覽器里打開這個頁面,然后試著在輸入框輸入隨意字符,你會發(fā)現(xiàn)這些輸入的字符立即更新顯示在問候語中。 是不是很神奇?
的念。 輸入框的任何更改會立即反映到模型變量(一個方向),模型變量的任何更改都會立即反映到問候語文本中(另一方向)。
該示例有一下幾點重要的注意事項:
1. 文本輸入指令<input ng-model=”yourname” />綁定到一個叫yourname 的模型變量。
2. 雙大括號標記將yourname 模型變量添加到問候語文本。
3. 你不需要為該應用另外注冊一個事件偵聽器或添加事件處理程序!
NodeJS
是由Ryan Dahl開發(fā)的一款高性能服務器js平臺。
它是集于V8引擎開發(fā)的,V8引擎是google開發(fā)的 javascript引擎,不是汽車的V8引擎 – -是一款高性能引擎,它的性能遠遠超越其他腳本語言。
nodeJS使用的是 異步I / O的通信方式,這種方式和AJAX很類似:
$.post("url", {title:"post請求"}, function(data){
console.log("收到響應");
})
console.log("發(fā)送ajax結束");
nodejs的請求方式:
var fs = require('fs');
fs.readFile("/path", function(err, file){
console.log("讀取文件完成");
});
console.log("發(fā)起讀取文件");
我們再看下面這個例子:
當同時執(zhí)行兩個請求的時候,總耗時取決于耗時最多的那個,而不是兩個請求的耗時總和,因為他們兩個是并行的。
//第一個請求
var fs = require('fs');
fs.readFile("/path1", function(err, file){
console.log("讀取文件1完成");
});
//第二個請求
fs.readFile("/path2", function(err, file){
console.log("讀取文件2完成");
});
console.log("發(fā)起讀取文件");
nodejs高性能的另一個原因是基于事件驅動:
node將前端瀏覽器中的 事件 引入后端,配合異步I/O,將事件點暴露給業(yè)務邏輯。
事件的變成方式具有輕量級,松耦合,只關注事物點等優(yōu)勢。
相關文章
node.js 微信開發(fā)之定時獲取access_token
本文給大家分享的是在使用node.js做微信開發(fā)的過程中如何定時獲取access_token的方法,有需要的小伙伴可以參考下2020-02-02