众所周知,我们在开始任何Web或移动应用项目的开发之前,都需要事先选择好最适合项目的主要实现技术。目前,可选择的技术栈可谓林林总总,归纳起来,包括全栈(Full-Stack)、均(MEAN)栈和MERN栈三大类。下面,我将逐一和您讨论这些术语背后相关技术的优缺点,以方便您做出明智的选择。

到底什么是技术栈?

作为一种数据类型,技术栈实际上是一些组件的集合。它具有两个主要功能。一个是以推送的形式,向集合中添加组件;另一个是以弹窗的方式,删除最近添加的,但尚未删除的组件。可见,它有点类似一个堆叠了一组实用工具的架子(栈),您可以轻松地从其顶部拉出需要的工具和技术。下面是技术栈中的常见技术:

  • 前端技术-HTML、JavaScript、CSS、PostgreSQL、jQuery;
  • 前端框架-Angular.js、Polymer.js、bonebjs、Ember.js;
  • 后端技术-Nodejs,PHP、.NET、Ruby on Rails;
  • 后端框架-ASP.NET、Rails、Express、CodeIgniter;
  • 数据库技术-Oracle、Microsoft SQL Server、MySQL、MongoDB。

针对不同的业务场景,我们可以采用全栈(Full-Stack)、均(MEAN)栈和MERN栈三种方式。下面我们来详细讨论三者各自的特点:

全栈的相关概念

作为Web开发的一部分,全栈开发泛指通过互联网或内联网,进行各种Web相关任务的开发,其中包括应用程序前端(我们也称为客户端)和后端(我们也称为服务器端)等完整的开发。而凭借着云计算所带来的各项技术优势,全栈开发给整个开发领域带来了翻天覆地的变化。

全栈工程师同时在客户端和服务器端软件上,运用完整的技术栈开展开发工作,其中涉及到各种前端技术、后端开发语言、数据库、服务器、API、以及版本控制系统。这样也就是所谓“全栈”名称的由来。

全栈开发人员既可以保持目标系统的各个部分平稳运行,又可以为团队中的每个成员提供帮助,并大幅减少团队用于沟通的时间和技术成本。毕竟,这样一个“万金油”式的角色,能够为公司节省在人力、基础架构和运营上的各项成本。

全栈开发需具备的专业知识

1)前端技术

全栈开发人员应该掌握诸如HTML5、CSS3、JavaScript之类重要的前端技术,并对jQuery、LESS、Angular和React JS等第三方库有所了解。

2)开发语言

全栈工程师应该至少知道一种服务器端编程语言,例如:Java、Python、Ruby、以及.Net等。

3)数据库和缓存

对各种DBMS技术的了解,是对全栈开发人员的另一项重要要求。其中,数据库包括:MySQL、MongoDB、Oracle、以及SQL Server等场景数据库。而诸如varnish、Memcached和Redis之类的缓存机制也是必备的知识。

4)基本设计能力

作为一名全栈开发人员,除了必备的设计知识,还需要了解UI/UX方面的基本设计理念。

5)服务器

由于需要接触到Apache或Nginx服务器,因此全栈开发人员如果具备Linux的良好背景,则能够轻松地管理各种服务器。

6)版本控制系统(VCS)

版本控制系统能够方便全栈开发人员跟踪代码库中的所有更改。通过Git的相关知识,他们能够了解如何获取最新的代码,更新部分代码,以及在不破坏其他开发人员代码的情况下进行修改。

全栈的优势

1、切换简单

全栈开发人员具有根据项目的需求,在前端和后端开发之间进行自由切换的能力。

2、整体设计架构

全栈开发人员的显著特征之一便是:他们不仅能够从事Web开发,而且能够负责整个设计的架构。

3、节约成本

分别雇用前端和后端开发人员的成本,比起仅聘请前后端全能的全栈开发人员来说,显然要高出许多。

4、易于掌控设计和实施的各个状态

由于更加全面地拥有设计上的所有权,因此全栈开发人员能够更加自如地实施各项构建流程。

5、易于技术更新

与那些仅从事前端或后端技术的人员相比,全栈开发人员拥有更全面的知识结构,因此他们有实力轻松地升级或切换到新的技术和工具上。

均栈的相关概念

均栈使用MongoDB、Express Js、Angular和Node Js(抬头字母简称MEAN),来分析和理解Web开发活动中的动态性和复杂性。对于大多数开发人员而言,他们在全栈设计中往往会采用MEAN技术,来专注于各项功能的易用性。

正如前面提到的,组成均栈的四项技术分别是:作为数据库的MongoDB,作为服务器系统的Express,针对前端的Angular,以及作为JavaScript服务器端事件驱动的I/O(输入/输出)环境--NodeJ。

均栈的关键特征是:所有这四种技术均基于框架中的Javascript和JSON(JavaScript Object Notation,对象表示法)数据,进而节省了消耗在潜在JSON编码上的时间。

MEAN前端

Angular是由Google创建和维护的开源JavaScript框架。它带有管理客户端上所有应用与交互的功能,并主要用于构建在网页上加载初始请求的SPA(Single Page Application,单页面应用程序)。

通过执行客户端的侧路由(side routing),Angular能够大幅减轻服务器的负载。同时,由于它属于MVW(Model View Whatever,不限模型与视图)型架构,因此均栈的前端部分(Angular)可由HTML、CSS或Javascript组成。

MEAN后端

MEAN后端用于设计表格与文档的后端,通过其服务来存储前端的数据,以及可以使用主键/外键来检索数据库的结构。

由于均栈里各种工具都可以在本地使用底层的JSON数据,因此Node + Express.js + MongoDB数据库的结合,为基于JSON的Web服务提供了出色的实现效果。可见,相对于前面提到的全栈,均栈开发服务(请参见--https://www.pixelcrayons.com/javascript-development/mean-stack-development?utm_source=dzone&utm_medium=meanstack-MJ-MS&utm_campaign=MJ)具有效率和生产率上的优势。

均栈的优势

均栈的主要优点是通过开源的方式,方便开发人员去使用互联网上免费提供的模块、库和公共存储库。

  • 由于均栈中是通过庞大的库中提供多种JavaScript模块,因此用户能够轻松地使用Node.js来开发Web应用。
  • 均栈非常灵活,您可以添加更多仅用作开发Web应用平台的对象。
  • 如果需要在开发后测试软件应用,您可以使用MEAN将应用程序托管在云端。此外,它也提供了横跨服务器的自动共享和集群支持。
  • 由于Node.js包含了大量可以被直接用于开发Web应用的模块库,因此您可以通过均栈来节省大量的时间。
  • 易于在客户端和服务器之间切换。由于Node.js是一种通用语言,可以让您轻松地在客户端和服务器端之间进行控制,因此您无需Apache之类的第三方服务器,便可打开应用程序。
  • 作为一个开源的JavaScript框架,Angular.js提供了可维护、可重用和可测试性。而得益于非阻塞的架构,Node.js也具有快速且可扩展的特性。可见,各项MEAN技术都具有高性能与高可用性。

MERN栈的相关概念

除了将React代替了Angular,MERN栈几乎与均栈如出一辙。MERN栈也是由开源组件所组成,并提供了一个端到端框架,用来构建全面的Web应用,并让浏览器能与数据库相连接。

在介绍MERN栈之前,我们首先来了解一下React Js。React是由Facebook的Ads组织开发,使用的是典型的客户端MVC模型。该模型具有所有常见的双向数据绑定和模板。视图会持续侦听模型中的更改,而作为更改的响应,视图会自行更新。

不过,随着应用程序变得越来越复杂,而用于更新视图的代码也会存在着细微差异,因此这类级联更新(Cascading updates)已变得难以维护。这也正是需要用声明性(declarative)构建,来取代命令性(imperative)的原因。

MERN栈的优势

1、JavaScript无处不在

MERN的最大优势是:统一使用了JavaScript语言。我们可以将JavaScript用于客户端和服务器端代码,甚至可以用它来编写MongoDB的数据库脚本。因此,您唯一需要了解和熟悉的语言便是JavaScript。

2、JSON无处不在

在使用MERN栈时,您会发现在数据库中、在应用服务器中、在客户端上、甚至在线路上,任何地方都会使用JSON作为对象的表示形式。

3、Node.js性能

鉴于其事件驱动的架构和无阻塞的I/O特点,Node.js在此成为了一种非常快速和灵活的Web服务器。

4、NPM生态系统

NERN栈提供了大量可供人们免费使用的npm软件包。即便它们无法完全满足您的需求,您也可以通过对其fork,来制作出属于自己的npm软件包。

全栈、均栈、MERN栈,哪个才是下一代Web项目的正确栈相关推荐

  1. 下一代 Web 建站技术栈—— Jamstack

    如果你之前从未了解过 Jamstack,我推荐先阅读文章:Jamstack,下一代Web建站技术栈?(https://zhuanlan.zhihu.com/p/281085404). Jamstack ...

  2. JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈

    运行时数据区概述及线程概述 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JV ...

  3. JavaWeb综合项目——快递e栈(微信前端部分)

    文章目录 1 短信登录和退出登录 1.1 申请新的短信模板 1.2 短信登录,退出登录 2 快递列表 2.1 使用流(stream)来处理List 2.2 创建登录权限验证过滤器 2.3 微信端快递管 ...

  4. 面向对象编程项目案例(栈与队列封装和乌龟吃鱼游戏)

    一.Pygame相关介绍 1.Pygame是跨平台Python模块,专为电子游戏设计,包含图像.声音.允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚.Pygame常用模块 2.一个游 ...

  5. 第5周实践项目2 链栈的算法库建立

    listack.h#ifndef LISTACK_H_INCLUDED #define LISTACK_H_INCLUDEDtypedef char ElemType; typedef struct ...

  6. 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))

    思想1:(Java程序员面试宝典) 用空间换时间 两个栈sd存数据,sm存最小值 存入时: 若sm为空,两个直接存数据: 若sm不为空,待存数据与sm的栈顶元素比较,小于时存入,否则不存 出栈: 若s ...

  7. Web前端开发技术栈(前端干货)

    Web前端开发技术栈 浏览器 Internet Explorer(需要了解,需不需要看公司业务需求) Chrome(建议学习使用) Firefox(建议学习使用) Safari(建议学习使用) Ope ...

  8. 【OpenGL】二十一、OpenGL 矩阵压栈与出栈 ( 不同类型矩阵变换先后顺序 | 渲染前不设置单位阵 | 压栈出栈原理分析 | 代码示例 )

    文章目录 一.不同类型矩阵变换先后顺序 二.渲染前不设置单位阵 三.矩阵的压栈和出栈原理分析 四.矩阵的压栈和出栈代码示例 五.相关资源 一.不同类型矩阵变换先后顺序 对 OpenGL 中的 模型视图 ...

  9. 栈和队列(详细版,一看就懂。包含栈和队列的定义、意义、区别,实现)

    栈和队列 一.栈和队列的定义.区别,存在的意义 1.栈的定义 (1)栈:栈实际上是一种线性表,它只允许在固定的一段进行插入或者删除元素,在进行数据插入或者删除的一段称之为栈顶,剩下的一端称之为栈顶.其 ...

最新文章

  1. 视频与图像RGB/YUV格式详解
  2. UA STAT675 统计计算I 随机数生成7 Envelope Accept-Reject Algorithm
  3. STM32 基础系列教程 5 – 系统定时器
  4. 苏宁的另类“存在感”
  5. 网络知识:各种缓存核心知识整理,值得收藏!
  6. ubuntu 下安装和启动SSH 服务
  7. EMC 电磁兼容测试项目
  8. excel高级筛选怎么用_excel中使用高级筛选7个示例、多个条件、复制到另一个工作表公式...
  9. [洛谷P3550][POI2013]TAK-Taxis
  10. 时间记录html,jquery水平、垂直时间线记录jQuery Timelinr
  11. Linux安装redis(6.0.9)环境
  12. 【C++】常用拷贝算法和替换算法
  13. f-stack nginx 单进程模式启动流程分析
  14. 计算机度分秒在线,度分秒换算器(度分秒换算器在线)
  15. 绿竹生物冲刺港股:年期内亏损超5亿 泰格医药与北京亦庄是股东
  16. ad模数转换采集电压程序c语言,单片机怎么通过AD转换得到电压值
  17. 最美证件照工作室需要买什么东西
  18. 微信视频号直播功能上线;全面打通视频号+公众号+小商店+直播私域生态组合;丨国仁网络资讯
  19. 【树莓派不吃灰】基础篇⑯ 搭建sqlite3数据库环境
  20. 2016年1月28日github 出现大面积访问故障

热门文章

  1. Intel Realsense 如何获取输入图像的分辨率参数?傻办法 asanyarray() shape() get_data()
  2. Unity通过鼠标操作来控制场景视角(包括旋转、平移以及缩放)
  3. Square Card 计算几何-两圆相交面积
  4. python镜像下载包_python包详解
  5. 计算机cpu 和 主板型号,CPU和主板怎么搭配?intel七代/八代/九代处理器和主板搭配对照表...
  6. python rq asyncio_Python 的异步 IO:Asyncio 简介
  7. 银河麒麟更换源及离线下载deb
  8. 联想电脑的一键换机软件——乐换机
  9. springaop事务逻辑原理_架构师:一篇文章掌握——Spring 事务管理
  10. python 余弦距离_距离公式汇总以及Python实现