了解Node.js-to-Angular 套件组件
Node.js-to-Angular套件最常见的,并且我们相信也是最好的版本是包括MongoDB、Express、Angular和Node.js 的Node.js-to-Angular 套件。
在Node.js-to-Angular 套件中,Node.js 提供了开发的基础平台。后端服务和服务器端脚本都是用Node.js 编写的。MongoDB 提供了网站的数据存储,但通过一个MongoDB驱动Node.js 模块进行访问。Web 服务器是通过Express 定义的,这也是一个Node.js 的模块。
在浏览器中的视图使用Angular 框架定义和控制。Angular 是一个MVC 框架,在该框架中的模型由JSON 或JavaScript 对象组成,视图是HTML/CSS,而控制器由AngularJavaScript 组成。
上图提供了一个基本的图示,它显示Node.js-to-Angular 套件是如何适合基本的网站/Web 应用模型的。以下各节描述每种技术,以及它们被选为Node.js-to-Angular 套件的一个组成部分的原因。
1 Node.js
Node.js 是一个基于谷歌的V8 JavaScript 引擎的开发框架。因此,Node.js 代码是用JavaScript 编写的,然后由V8 编译为机器码供执行。
你可以用Node.js 编写许多后台服务、服务器端脚本和任何支持Web 应用程序的功能。Node.js 的好处是它各部分都只包含JavaScript,因此,可以方便地从客户端脚本提取功能,然后将其放置到服务器端脚本中。此外,Web 服务器可以在Node.js 平台上作为一个Node.js的模块直接运行,这意味着它比使用其他软件,比方说,Apache 连接新服务或服务器端脚本要更容易。
Node.js 之所以是一个出色的启动框架,有下面几个原因。
- JavaScript 端到端:Node.js 的一个最大优点是,它可以让你用JavaScript 同时编写服务器端和客户端脚本。决定把脚本逻辑放置于何处,一直是一件困难的事情。在客户端放太多东西会使客户端变得烦琐而又笨拙,而在服务器端放太多东西又会拖慢Web 应用并使Web 服务器不堪重负。利用Node.js,你可以在客户端上编写JavaScript,并轻松地在服务器上适应它,反之亦然。而且,客户端的开发者和服务器的开发者使用同一种语言。
- 事件驱动的可伸缩性:Node.js 应用不同的逻辑来处理Web 请求。处理Web 请求时,这些请求都在同一个线程上采用一种基本的事件模型被处理,而不是让多个线程等待处理。这使得Node.js Web 服务器可以用传统的Web 服务器永远不能的方式进行扩缩。
- 可扩展性:Node.js 有很多的追随者和一个活跃的开发社区。人们正在不断提供新的模块来扩展Node.js 的功能。此外,在Node.js 中安装和包含新的模块是非常简单的,你可以在几分钟内扩展Node.js 的项目来包含新的功能。
- 快速执行:建立Node.js,并在其中开发是超级容易的。在短短几分钟内就可以安装Node.js,并拥有一个能工作的Web 服务器。
2 MongoDB
MongoDB 是一个灵活的和可伸缩的NoSQL 数据库。Mongo 这个名字来自单词“堆积如山”(humongous)。它基于NoSQL 文档存储模型,这意味着数据在数据库中作为JSON 对象形式被存储,而不是作为关系数据库中传统的列和行存储。
MongoDB 为需要存储诸如用户评论、博客或其他项目数据的高流量的网站提供了出色的网站后端存储,因为它是快速、可伸缩和易于实现的。本书介绍了使用MongoDB 的驱动程序库从Node.js 访问MongoDB。
Node.js 支持多种数据库访问驱动程序,因此数据很容易用MySQL 或其他数据库来存储。但是,下面是MongoDB 真正适合于Node.js 套件的一些原因。
- 针对文档:因为MongoDB 是针对文档的,数据在数据库中存储的格式接近于你将在服务器端和客户端脚本中处理它们的格式。这消除了把数据从行转换为对象和转换回来的需要。
- 高性能:MongoDB 是目前性能最高的数据库之一。尤其是在现在,当有越来越多的人与网站进行交互时,具有能够支持大流量的后端是很重要的。
- 高可用性:MongoDB 的复制模型使得它容易维护可伸缩性,同时又保持高性能。
- 高可伸缩性:MongoDB 的结构使得它可以很容易地通过在多个服务器上对数据共享实现水平伸缩。
- 无SQL 注入:MongoDB 是不容易受到SQL 注入攻击的(也就是向Web 表单或从浏览器的其他输入中输入SQL 语句,从而危及数据库的安全性)。这是因为对象被存储为对象,不使用SQL 字符串。
3 Express
Express 模块在Node.js-to-Angular 套件中充当Web 服务器。它运行在Node.js 中,使得其很容易配置、实现和控制。Express 模块扩展了Node.js,它提供几个关键组件来处理Web 请求。这可以让你用短短几行代码实现在Node.js 中运行的Web 服务器。
例如,Express 模块为使用者提供轻松设置连接到目的地的路径(URL)的功能。它也在处理HTTP 请求和响应对象,包括在处理像cookie 和HTTP 标头的方面提供强大的功能。
以下是Express 有价值的功能的部分列表。
- 路由管理:Express 可以很容易地定义直接绑在服务器上的Node.js 脚本功能的路由(URL 端点)。
- 错误处理:Express 为“未找到文件”等错误提供了内置的错误处理。
- 易于集成:一个Express 服务器可以很容易地在现有的反向代理系统,如Nginx或Varnish 之后实现。这使它可以轻松地集成到现有的安全系统。
- cookie:Express 提供了简单的cookie 管理。
- 会话和缓存管理:Express 也能够进行会话管理和缓存管理。
4 Angular
Angular 是由谷歌开发的客户端框架。Angular 提供处理用户在浏览器中的输入,操纵客户端上的数据,并控制如何在浏览器视图上显示元素所需要的所有功能。它是用TypeScript 编写的。Angular 背后的理论是提供一个框架,使得可以很容易地实现使用MVC框架的Web 应用程序。
也可以在Node.js 平台上使用其他JavaScript 框架,如Backbone、Ember 和Meteor。然而,Angular 拥有在写作本书之际最好的设计、功能集和轨迹。下面是Angular 的一些好处。
- 数据绑定:Angular 利用其强大的范围机制,有一个将数据绑定到HTML 元素的非常干净的方法。
- 可扩展性:Angular 架构允许你轻松地扩展语言的各个方面,以提供你自己的自定义实现。
- 整洁:Angular 迫使你编写整洁的、合乎逻辑的代码。
- 可重用代码:可扩展性和简洁代码的结合,使得易于用Angular 编写可重用的代码。事实上,在创建自定义服务的时候,该语言往往迫使你这样做。
- 支持:谷歌正把大量资金投入这个项目,这使得它比那些已失败的类似举措更具优势。
- 兼容性:Angular 基于TypeScript。这使得开始整合Angular 到你的环境和重用在Angular 框架结构内的现有代码片段都更容易。
本文选自新书《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》,电子工业出版社10月出版。
本书始于对每种技术都提供简洁、清晰的教程,然后迅速转向建立实用的Web应用程序。你将学习如何使用Node.js和MongoDB构建更具可伸缩性的高性能站点,以及如何利用Angular的创新MVC方法构建更有效的页面和应用程序,以及如何综合这三个利器共同实现出色的下一代Web解决方案。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript 复杂判断的更优雅写法
前提 我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃肿,越来越看不懂,那么如何更优雅的写判断逻辑,本文带你试一下。 举个例子 先看一段代码 /** * 按钮点击事件 * @param {number} status 活动状态:1 开团进行中 2 开团失败 3 商品售罄 4 开团成功 5 系统取消 */ constonButtonClick=(status)=>{ if(status==1){ sendLog('processing')jumpTo('IndexPage') }elseif(status==2){ sendLog('fail')jumpTo('FailPage') }elseif(status==3){ sendLog('fail')jumpTo('FailPage') }elseif(status==4){ sendLog('success')jumpTo('SuccessPage') }elseif(statu...
- 下一篇
看图了解JVM
JVM使用的区域由两大部分组成: 单个线程独立的区域 多个线程公共的区域 公共区域又包含两部分: 相对静态的区域(永久代),包含常量、方法、属性、代码等 相对动态的区域(堆),包含创建的对象 线程独立区域可以理解为线程在执行代码时的上下文,会从公共区域读取数据,也会保存数据到其中的堆 通常的执行过程: 当线程需要一个类时,使用加载器将字节码加载到方法区,然后会依照被加载的代码执行。执行类的方法前,会在栈中新建一个栈帧,作为上下文来执行方法。执行过程中可能从常量池、堆中读取需要的数据,执行完毕后数据可能同步到前一个方法的栈帧,也可能同步到堆。 更抽象的概括JVM所使用的区域: 执行的依据(位于永久代的类、方法、常量信息),数据本身(位于堆的对象),执行过程中的上下文(每个线程执行时的临时部分)
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Hadoop3单机部署,实现最简伪集群
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题