前后端分离趋势谈

最近已经不止一个人和我提起过vue了,在我的前端印象中,我还停留在smarty渲染模版,jquery做js处理。学了一晚上,对现在这种工程化webpack打包生成html,js,css的生产方式越来越有兴趣了。工作年限摆在这里的好处就是经历了不少技术的变革,能从纵向思考下技术的变革和趋势的路子。

想想很久以前刚开始接触php的时候,说为什么要使用php?前辈告诉我因为php能很方便地生成html,php文件中可以随便地内嵌html,这样你写一个页面就会行云流水。后来呢,大家发现写一个页面还行,但是写一个网站,这个写法就受不了了。又臭又长的代码,改一个头部颜色,需要去好几个文件里面找东西。不行,就需要把模版从php中分离出来。于是我就接触到了smarty,smarty很好地把模版渲染文件隔离开了,我们可以把模版文件放在一个文件夹中,再也不需要和php代码放在一起了。

现在呢?前端隔离到一个模版中还是不够好,数据和模版的结合放在服务端,导致至少php代码和smarty模版需要放在同一个机器上,好吗?现在的做法,在服务端只留一个最简单的index.html,这个叫做单页。我们使用各种前端框架,react,vue,angular等,实际上是把数据和模版的结合放在了浏览器端,也就是前端。

前后端分离的路子基本就是这样走的,在上一家公司的时候,我碰到了另外一个“有年龄”的工程师,他告诉我,其实,php这边的后端发展也是这样发展的。

php这边现在比较流行的还是MVC的路子。比较复杂的逻辑,都是在Controller层中做的。但是实际上,据说有一段时间,逻辑层是流行写在数据库中的,数据库中会存在大量的存储过程。这种方式我尝试过一段时间,最后苦不堪言告终,当你一个金额结果出错的时候,你需要一个一个地方思考各个表的存储过程中的逻辑是否有冲突的情况存在。所以我很庆幸我没有经历过当时那种写存储过程的时期。

现在后端的逻辑也逐渐往代码层转移了。在代码层进行增删改查的行为。数据库只是单纯的作为存储使用了。

现在流行的微服务,其实也是一种演进,把后端逻辑层和数据层按照模块进行横向分离。

当然,趋势就是不可逆的。纵向思考下来,web技术的趋势也是非常明显了。分层,并且分的越来越彻底。存储+逻辑+模版,按照这样的层级基本上存储层已经是mysql或者pg的战场了。逻辑层现在还是php,node,golang的战场,模版层现在还在php和js框架过渡中。基本上会是js框架的胜利了。

这种分层机制是双刃剑。对于人员来说,它按照分层,把人分做了不同的工种。原先只有一种“网站开发员”的职位,现在已经分为DBA+PHP开发+JS开发+切图仔了。每个人只有半分不到的地,慢慢种。对于工程来说,却是好很多了,每个层级分工明确,各专其事。各专其事的好处就是越底层越容易固化和自动化。比如现在存储,基本上已经可以固话为一套流程了,一个小公司,即使没有dba,普通开发也能做了,一些基本的优化和数据库搭建等。接口api开发,我认为迟早也会固化下来,然后一些前端开发人员也会渐渐很容易开发api,或许现在的nodejs已经是在这个方面在做了。

总而言之,前后端分离的趋势是越来越明显了。这个趋势估摸不可逆,只有顺着这个趋势,慢慢适应了。

原文地址:http://www.cnblogs.com/yjf512/p/6368949.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算设计模式(五)——计算资源整合模式

合并多个任务或操作成一个单一的计算单元。这种模式可以提高计算资源的利用率,并降低与云托管的应用程序进行计算处理相关的成本和管理开销。 背景和问题 云应用程序频繁执行各种操作。在某些解决方案也可能是有意义的最初遵循的关注点分离的设计原则,并…

Visual Studio 2017 RC3支持.NET Core,延迟对Python的支持

Visual Studio 2017第三个候选版本上周发布,解决了之前发现的安装程序的小问题。由于这些问题得到了解决,现在值得关注的就是这次版本中更新了什么内容。(版本是发布于1月27日的build 26127.00) RC3版本中最值得关注的部分就是对N…

虚拟研讨会:.NET的未来在哪里?

.NET生态系统在过去的一年中发生了很多事情。在几个方面发展非常迅速:Xamari、UWP、.NET Core、.NET native、F#和开源等等。 如果要关注细节,那大的景象难以描绘。因为在每个方面都有新的动作:跨平台、云、移动、Web应用和通用应用。开发人员…

使用Servlet上传多张图片——访问提示

上传文件,我们在做项目中补课避免的,有时候我们需要上传单张或者单个文件,但是有时候我们就需要上传多个文件或者多张图片了,我们这里以多张(4张)图片为例,再多也都是一样的概念,接下…

云计算设计模式(六)——命令和查询职责分离(CQRS)模式

隔离,通过使用不同的接口,从操作读取数据更新数据的操作。这种模式可以最大限度地提高性能,可扩展性和安全性;支持系统在通过较高的灵活性,时间的演变;防止更新命令,从造成合并在域级别上的冲突。 背景和问题 在传统的…

Intellij IDEA 那些隐藏好用的小技巧

转载自 Intellij IDEA 那些隐藏好用的小技巧 概述 之前写了一篇介绍IntellIJ IDEA的文章《 Intellij Idea非常6的10个姿势 》,主要是列出一些平时大家可能没用过或者没怎么用,但是又非常好用的IntellIJ IDEA小技巧。由于篇幅原因,只是列出了…

约瑟夫(环)问题(Josephu)(单向环形链表)

问题描述 代码实现 package com.atguigu.linkedlist;import com.sun.org.apache.bcel.internal.generic.NEW;/*** 创建人 wdl* 创建时间 2021/3/19* 描述*/ public class Josepfu {public static void main(String[] args) {//测试一把看看构建的环形链表和遍历是否正确Circle…

vue+vscode+nodejs 开发环境搭建

参考文献 vuevscodenodejs 开发环境搭建 - Desperador - 博客园 nodejs 指定全局安装路径和缓存路径 - Curedfisher - 博客园 安装配置nodejs并创建Vue项目 vscode下载地址: Documentation for Visual Studio Code nodejs安装配置 1.下载 地址: …

用数组模拟栈

思路分析 代码实现 package com.atguigu.stack;import com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM2;import java.net.ServerSocket; import java.util.ArrayList; import java.util.Scanner; import java.util.Stack;/*** 创建人 wdl* 创建时间 2021/3/20* 描述…

Redis PK Memcached,哪个更牛叉

转载自 Redis PK Memcached,哪个更牛叉 说到 redis 就会联想到 memcached,反之亦然。了解过两者的同学有那么个大致的印象: redis 与 memcached 相比,不仅支持简单的 key-value 数据类型,同时还提供 list,set,zset,ha…

CoreCLR源码探索(三) GC内存分配器的内部实现

在前一篇中我讲解了new是怎么工作的, 但是却一笔跳过了内存分配相关的部分.在这一篇中我将详细讲解GC内存分配器的内部实现.在看这一篇之前请必须先看完微软BOTR文档中的"Garbage Collection Design",原文地址是: https://github.com/dotnet/coreclr/blob/master/Doc…

vue学习1

P1 01_Vue学习目标03:50 P2 02_前端知识体系16:27 P3 03_前后端分离的演变史17:13 P4 04_前端MVVM模式09:31 P5 05_Vue是什么07:23 P6 06_第一个Vue应用程序07:06 P7 07_Vue实例声明周期05:35 P8 08_条件渲染06:59 P9 09_列表渲染03:34 P10 10_事件处理03:44…

Tomcat 的 Server 文件配置详解

转载自 Tomcat 的 Server 文件配置详解 前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛。server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中…

.Net基础体系和跨框架开发普及

.net体系经过十几年发展,发生了很多变化。特别是在最近两年,随着开源和跨平台的发展,衍生出很多概念,像标准库,可移植库,.Net Core等,相信有不少同学对他们之间的关系是有一些困惑的&#xff0c…

‘1‘ VS 1

‘1’-481; 把字符转换为数字,利用ASCALL表

一次恐怖的 Java 内存泄漏排查实战

转载自 一次恐怖的 Java 内存泄漏排查实战 最近在看《深入理解Java虚拟机:JVM高级特性与最佳实践》(第二版)这本书,理论实践结合,深入浅出,强烈推荐给大家。 这两天对JVM内容进行了一个讨论,…

ASP.NET与ASP.NET Core用户验证Cookie并存解决方案

在你将现有的用户登录(Sign In)站点从ASP.NET迁移至ASP.NET Core时,你将面临这样一个问题——如何让ASP.NET与ASP.NET Core用户验证Cookie并存,让ASP.NET应用与ASP.NET Core应用分别使用各自的Cookie?因为ASP.NET用的是…