前后端分离趋势谈

最近已经不止一个人和我提起过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,一经查实,立即删除!

相关文章

mybatis简单案例源码详细【注释全面】——Dao层映射文件(UserMapper.xml)【重要】

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"org.dao.UserMapper"><…

from + size must be less than or equal to: [10000] but was [10550]

from size must be less than or equal to: [10000] but was [10550]_绅士jiejie的博客-CSDN博客 以上错误是ElasticSearch分页搜索时出现的&#xff0c;这是因为ES默认支持的最大条数就是10000条&#xff0c;深度分页导致总条数超过10000&#xff0c;就会报这个错。 解决方…

java并发编程之4——Java锁分解锁分段技术

转载自 java并发编程之4——Java锁分解锁分段技术 并发编程的所有问题&#xff0c;最后都转换成了&#xff0c;“有状态bean”的状态的同步与互斥修改问题。而最后提出的解决“有状态bean”的同步与互斥修改问题的方案是为所有修改这个状态的方法都加上锁&#xff0c;这样也就可…

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

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

stream获取filter

Java集合Stream类filter的使用_黄嘉成的博客-CSDN博客 Java集合Stream类filter的使用 黄嘉成 2018-05-11 11:49:42 242767 收藏 116 分类专栏&#xff1a; Java高级编程 文章标签&#xff1a; java 集合 Stream filter 过滤 版权 Java高级编程 专栏收录该内容 4 篇文章0 订…

MySQL数据库开发的 36 条军规

转载自 MySQL数据库开发的 36 条军规 核心军规 尽量不在数据库做运算 控制单表数据量 纯INT不超过10M条&#xff0c;含Char不超过5M条 保持表身段苗条 平衡范式和冗余 拒绝大SQL&#xff0c;复杂事务&#xff0c;大批量任务 字段类军规 用好数值字段&#xff0c;尽量简化…

mybatis简单案例源码详细【注释全面】——测试层(UserMapperTest.java)

/** * Title: UserMapperTest.java * Package org.test * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-10-5 下午7:51:50 * version V1.0 */ package org.test;import java.io.IOException; import java.io.InputStr…

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

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

双向链表的(CRUD)

代码实现(CRUD) package com.atguigu.linkedlist;/*** 创建人 wdl* 创建时间 2021/3/19* 描述*/ public class DoubleLinkedListDemo {public static void main(String[] args) {//测试System.out.println("双向链表的测试");HeroNode2 hearo1 new HeroNode2(1, &q…

java读取Resources下文件

java读取Resources下文件_杰子的世界-CSDN博客_java获取resources下的文件 第四种&#xff0c; 读取路径 ResourceBundle bundle ResourceBundle.getBundle("config"); String url bundle.getString("url"); 1 2 该方法默认读取的是resources文件夹下的以…

达到年薪 40W 必需掌握的技术。

转载自 达到年薪 40W 必需掌握的技术。 很多人在问我&#xff0c;程序员如何拿高薪&#xff0c;如何做到年薪40W&#xff0c;其实总结出来还是一句话&#xff0c;你的技术决定你的能力已经薪资。 那么什么样的技术人才才能拿到一份Java行业里面的高薪呢&#xff1f;下面是我…

mybatis简单案例源码详细【注释全面】——Utils层(MybatisUtils.java)

/** * Title: MybatisUtils.java * Package org.util * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-10-5 下午8:38:14 * version V1.0 */ package org.util;import java.io.IOException; import java.io.InputStrea…

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

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

iOS Charles 抓包

iOS Charles 抓包指南 - 从入门到精通_VictorZhang-CSDN博客_charles ios 下载安装包 Download a Free Trial of Charles • Charles Web Debugging Proxy

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

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

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

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

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

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

约瑟夫(环)问题(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…