什么是MEAN?JavaScript編程中的MEAN是什么意思?
前段日子看到一篇文章提到MEAN這個(gè)詞,什么是MEAN?
其實(shí)MENA就是 MongoDB(非關(guān)系數(shù)據(jù)庫) + Express(模板引擎) + AngularJS(MVC javascript庫) + 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ù)庫的眾多有用功能,如輔助索引、范圍查詢、和排序、它內(nèi)置的對(duì)MapReduce式聚合的支持和對(duì)地理空間索引的支持。
它將傳統(tǒng)數(shù)據(jù)庫行(row)的概念換成,文檔(document)模型,所謂文檔模型其實(shí)就是一個(gè)數(shù)組對(duì)象。
我們來看一下文檔模型:
{“_id” : 1 , “greeting” : “hello,world!” , “foo” : 3}
每個(gè)文檔都會(huì)帶有一個(gè)_id的字段,該文檔模型代表數(shù)據(jù)庫中有一條記錄,包含字段 greeting , foo 和 _id;
Express:
關(guān)于末班引擎Express,我想用按句話來描述它:
是一個(gè)簡(jiǎn)潔而靈活的node.jsWeb應(yīng)用框架, 提供一系列強(qiáng)大特性幫助你創(chuàng)建各種Web應(yīng)用。
豐富的HTTP工具以及來自Connect框架的中間件隨取隨用,創(chuàng)建強(qiáng)健、友好的API變得快速又簡(jiǎn)單
Express 不對(duì) node.js 已有的特性進(jìn)行二次抽象,我們只是在它之上擴(kuò)展了Web應(yīng)用所需的功能
AngularJS:
AngularJS是由google開發(fā)的一款js庫,它與backone一樣同為MVC腳本庫。
幾乎每種語言的第一課都是講hello world,按照慣例我們也來一個(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>
聲明了該頁面使用angularJS,當(dāng)加載該頁時(shí),標(biāo)記ng-app告訴AngularJS處理整個(gè)HTML頁并引導(dǎo)應(yīng)用。
這個(gè)例子在頁面打印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è)頁面,然后試著在輸入框輸入隨意字符,你會(huì)發(fā)現(xiàn)這些輸入的字符立即更新顯示在問候語中。 是不是很神奇?
的念。 輸入框的任何更改會(huì)立即反映到模型變量(一個(gè)方向),模型變量的任何更改都會(huì)立即反映到問候語文本中(另一方向)。
該示例有一下幾點(diǎn)重要的注意事項(xiàng):
1. 文本輸入指令<input ng-model=”yourname” />綁定到一個(gè)叫yourname 的模型變量。
2. 雙大括號(hào)標(biāo)記將yourname 模型變量添加到問候語文本。
3. 你不需要為該應(yīng)用另外注冊(cè)一個(gè)事件偵聽器或添加事件處理程序!
NodeJS
是由Ryan Dahl開發(fā)的一款高性能服務(wù)器js平臺(tái)。
它是集于V8引擎開發(fā)的,V8引擎是google開發(fā)的 javascript引擎,不是汽車的V8引擎 – -是一款高性能引擎,它的性能遠(yuǎn)遠(yuǎn)超越其他腳本語言。
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 微信開發(fā)之定時(shí)獲取access_token
本文給大家分享的是在使用node.js做微信開發(fā)的過程中如何定時(shí)獲取access_token的方法,有需要的小伙伴可以參考下2020-02-02express提供http服務(wù)功能實(shí)現(xiàn)示例
這篇文章主要為大家介紹了express提供http服務(wù)功能實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10