学习Node.js全栈框架MEAN-01
WWW和浏览器的那些事
时间倒回1995年的春天,那是一个浏览器领域的乱世,随着大神Tim Berners-Lee 写出了第一个万维网浏览器,浏览器行业群雄并起,崭露头角的有IE还有Netscape的 Netscape Navigator等。
当年的Netscape Navigator大概张这个样子.png从那以后互联网进入了一段像工业革命这样令世界大变的发展。
学习内容
后面要学习的内容如下:
- MondoDB
- Express
- AngularJS
- Node.js
需要的基础知识
- HTML
- CSS
- JavaScript
MEAN 简介
MEAN 框架是一个使用JavaScript的全栈框架,MEAN是它的四块组成部分的首字母缩写:
- MongoDB 数据库
- Express web服务端框架
- AngularJS web客户端框架
- Node.js 客户端平台
不知道为啥要组合成Mean这个词,知道它很mean,听起来总是怪怪的\(^o^)/~
MEAN 框架的优势:
- 一种语言编写整个Web应用
- 框架的所有组成部分都支持MVC
- 数据装配使用Json对象,对于数据的处理无需 Serialization 和 Deserializtion了。
安装Node.js
这里讲window版本的安装,首先到官网下载安装包:http://nodejs.org/ 然后跟着安装向导一步步安装即可。安装完毕后,在cmd键入 node -v,若显示出node版本则说明node安装成功。新一些的版本Node都是自带npm的,同样,可以在cmd里键入 nmp -v,若显示版本则成功。
Node.js 安装Node安装MongoDB
这里讲window版本的安装,安装包去mongoDB官网下载,注意选择与自己环境相同的版本比如我的系统是64位的:https://www.mongodb.com/download-center?jmp=nav
MongoDB下载.pngMongoDB的安装稍微有一点繁琐,mac系统的请参考这篇博客:
http://www.jianshu.com/p/80fe2efad81c
初识Node.js
这一章将要了解的知识点有:
- Node.js简介
- JavaScript闭包和时间驱动编程
- Node.js事件驱动Web开发
- CommonJS modules和Node.js的Module系统
- 接入Web框架的简介
- 中间件
Node.js 简介
Node.js是一个Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
2009年2月,Ryan Dahl在博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库。
-百度百科
事件驱动
Node.js运用了JavaScript支持non-blocking操作的特点,这一特点使得平台的效率比较高。JavaScript是一个事件驱动的语言,这意味着一段代码对应着特殊的事件。当事件被触发后,相应的代码将会被执行。这一特点允许开发者很容易的实现异步代码。下面的例子可以帮助我们更好的理解事件驱动
一下是一段Java代码:
System.out.print("What's your name?");
String name = System.console().readLine();
System.out.print("Your name is: "+ name)
在上面的例子中,编译器会从第一行开始执行代码,然后第二行。但是在用户输入名字之前,编译器不会继续往下执行。这就是同步编程,一行I/O操作的代码会卡住剩下的代码。然而,JavaScript并不是这样工作的。
JavaScript最早是用来支持浏览器操作的语言,它做的最多的这与浏览器操作事件相关的事。由于这种架构模式,HTML代码会把事件代理给JavaScript代码。
<span>What is your name?</span>
<input type=""text id="nameInput">
<input type="button" id="showNameButton" value="Show Name">
<script type="text/javascript">
var showNmaeButton = document.getElementById('showNameButton');
showNameButton.addEventListener('click', function(){
alert(document.getElementById('nameInput').value);
});
</script>
(待续....)