谈一谈工作中的前后端功能开发范围

在BS开发中,往往都是团队开发,分为前端和后端,往往经常会遇到此处功能是前端进行功能开发还是后端进行功能开发的讨论,本文以我自己的观点进行论述。

笔者的观点是:

  1. 功能实现的优先性:您强调,无论是前端还是后端开发,重要的是能够实现功能。这种实用主义的观点强调了结果的重要性,而不是过程中的具体实现细节。【不论黑猫白猫,能抓老鼠的就是好猫】

  2. 团队和技术栈的考虑:应该基于团队的技术能力和项目的特点来决定功能的实现方。这表明,技术选择不应仅仅基于技术本身,而应结合团队能力和项目需求。

  3. 前后端分工的考虑

    • 技术特点:如JavaScript在处理计算密集型任务和精确数值计算方面的局限性,这些因素应在分配前后端任务时考虑。
    • 项目需求:并发性和需求的变动性是决定前后端分工的重要因素。例如,高并发应用可能需要将一些任务分配到前端以减轻后端负担。
    • 技术生态:对技术生态的了解也是重要的,因为它可以帮助开发人员利用现有的工具和库来补充他们的解决方案。
  4. 团队成员的态度和能力

    • 一些团队成员可能会推脱责任,而优秀的开发人员应相信自己的技术栈可以完成各种任务。
    • 同时,如果有合理的原因,某些任务可能确实不适合某一端来完成。

1.一般情况说明

笔者个人认为以下情况或多或少说明了一些人物的特点和立场问题

2.1.干不了

干不了,这个不属于我方的范围,应该给到另一端。

在这种情况下并且无法拿出一些实际和理论的说明

  • 我80%认定此类人都在推脱
  • 没有主观能动性,好的开发是相信自己的技术栈可以干任何的事情。

下结论:此类人80%是喜欢推脱的人,10%是大神、10%技术不扎实。

2.2. 不可以做,因为…

此类人,一般可以拿出一定的原因进行问题说明。有的原因是可取的有的原因是不可取的。

3. 前后端工作分工说明

3.1. 功能实现的优先性

在软件工程的实践中,功能的实现是首要任务。在这个阶段,最关键的是确保所需功能得以实现,而不必过于纠结于是否以最优雅或最理想的方式实现。这种实用主义的方法强调了可操作性和实际效果,为项目提供了明确的方向和目标。

3.2. 评估实现的优质和合理性

一旦功能实现的可行性得到确认,下一步是评估其实现方式的优质性和合理性。这涉及到多个方面的考量:

3.2.1. 技术特点的考量
  • 前端限制:诸如JavaScript的单线程模型和执行速度限制等因素,对于某些类型的任务(如计算密集型任务)可能不是最佳选择。在这些情况下,考虑将这些任务分配给后端可能更为合适。
    • JavaScript并不擅长计算密集型操作
  1. 单线程执行模型: JavaScript在浏览器中运行时通常是单线程的,这意味着它在执行长时间运行的复杂计算时可能会阻塞用户界面。虽然现代JavaScript引擎(如V8)进行了优化以提高性能,但它们仍然受限于单线程的限制。

  2. 执行速度: 相比于编译语言如C++或Java,JavaScript作为一种解释型语言,在执行速度上通常较慢。这是因为JavaScript代码在执行前需要先被解释或即时编译,而编译语言在运行前已经被编译为机器码。

  3. 优化限制: 虽然JavaScript引擎如V8进行了大量优化,但它们在优化计算密集型任务方面的能力仍然有限,特别是当与专门为此类任务设计的语言或环境相比。

  4. 内存管理: JavaScript的自动内存管理(垃圾回收)可能导致性能开销,尤其是在进行大规模或复杂的计算时。

    • JavaScript无法进行银行数值计算

JavaScript中的所有数字都是以64位浮点数的形式存储的(遵循IEEE 754标准),这意味着在处理非常大或者需要非常高精度的数字时可能会遇到精度问题。这在金融计算中尤为重要,因为金融计算通常要求非常高的精确度。

  • 后端的强项:后端通常处理更为复杂的逻辑,数据存储和安全问题。对于需要快速处理大量数据,或者需要保证数据安全和完整性的任务,后端是更合适的选择。

3.2.2. 项目需求的考量

  • 并发性能:高并发应用要求后端具备强大的处理能力。前端可以通过承担一些非关键任务来减轻后端的负担。

在软件并发较高的项目中,可以将一些非必要的操作交到前端去实现,尽量减少后端的并发压力,比如读取Shapefile文件中的图形(往往这样的项目并发不高,只是举例,不必争论),就不要把文件上传到后端,后端再解析为WKT或者GeoJson等再返回给前端了,前端可以使用第三方包自己获取其中的矢量空间范围。

  • 需求的动态性:如果一个项目的需求频繁变更,那么将某些功能实现为可配置和由后端数据驱动可能更为合适,以便快速适应这些变化。

对于此类便需要将需求中经常变化的内容开发为可配置,并由后端数据驱动。前端进行变化,如此就可以使需求的变化不会导致项目的重复部署。

3.2.3. 技术生态的考量

  • 库和工具的支持:了解所使用的技术栈及其生态系统是至关重要的。某些任务可能由于缺乏适当的库或工具支持而更适合在特定端(前端或后端)实现。

  • 社区和文档:一个强大且活跃的开发社区以及丰富的文档资源,可以为开发人员在特定技术选择上提供更多的支持和便利。

综上所述,前后端工作分工不仅仅是一种技术决策,更是一种战略考量,涉及到技术特点、项目需求和技术生态等多个方面。有效的分工可以提高开发效率,优化资源利用,并增强最终产品的性能和用户体验。

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

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

相关文章

深度测试:指定DoC ID对ES写入性能的影响

在[[使用python批量写入ES索引数据]]中已经介绍了如何批量写入ES数据。基于该流程实际测试一下指定文档ID对ES性能的影响有多大。 一句话版 指定ID比不指定ID的性能下降了63%,且加剧趋势。 以下是测评验证的细节。 百万数据量 索引默认使用1分片和1副本。 指定…

Springcloud Alibaba 架构搭建文档

首先看一下阿里中文文档: 概述 | Spring Cloud Alibaba 使用阿里自动脚手架进行版本对应: Cloud Native App Initializer sentinel文档地址:introduction | Sentinel nacos文档地址:Nacos 快速开始 分布式事务seata 如果使…

分布式存储 ZBS 的 RoCE 技术支持与大数据应用场景性能评测

作者:深耕行业的 SmartX 金融团队 闫海涛 在《解决 SAN 交换机“卡脖子”并升级存储架构?一文解析 RoCE 与相关存储方案趋势》文章中,我们分析了如何利用支持 RoCE 技术的分布式存储,同步实现 IT 基础架构的信创转型与架构升级&a…

双流机场到天府机场ADS-B数据导入MATLAB

MATLAB导入数据 导入的数据Excel部分截图: 一些处理 % 导入外部轨迹数据并转成标准形式 clear;clc; %% 导入&预处理 [NUM,TXT,RAW]xlsread(2021年10月31日CTU-TFU); time_cell RAW(3:end,1); %拉取时间数据(cell) time_char char(t…

Vue单文件组件(SFC)规范

Vue 单文件组件 (SFC) 规范 文件地址&#xff1a;Vue单文件组件规范 简介 .vue 文件是一个自定义的文件类型&#xff0c;用类 HTML 语法描述一个 Vue 组件。每个 .vue 文件包含三种类型的顶级语言块 <template>、<script> 和 <style>&#xff0c;还允许添加…

武器大师——操作符详解(上)

目录 一、操作符的分类 二、二进制和进制转换 2.1.二进制与十进制的互相转化 2.1.1 二进制转十进制 2.1.2 十进制转二进制 ​编辑 2.2.二进制转8进制和16进制 2.2.1 转8进制 2.2.2 转16进制 三、原码、反码、补码 四、移位操作符 4.1.左移操作符&#xff08;<…

【北京迅为】《iTOP-3588开发板网络环境配置手册》第2章 电脑、开发板直连交换机或路由器

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

云原生架构技术揭秘:探索容器技术的奥秘

云原生的概念和演进都是围绕云计算的核心价值展开的&#xff0c;比如弹性、自动化、韧性&#xff0c;所以云原生所涵盖的技术领域非常丰富。 随着云计算技术的不断发展&#xff0c;云原生架构已经成为了新一代软件开发的重要趋势。本文将为您介绍云原生架构的相关技术&#xf…

二叉搜索树在线OJ题讲解

二叉树创建字符串 我们首先进行题目的解读&#xff1a; 大概意思就是用&#xff08;&#xff09;把每个节点的值给括起来&#xff0c;然后再经过一系列的省略的来得到最后的结果 大家仔细观察题目给出的列子就可以发现&#xff0c;其实这个题目可以大致分为三种情况&#xff1…

Vue 环境安装以及项目创建

环境安装 nodejs 安装 下载地址&#xff1a;https://nodejs.org/dist/v18.16.1/ 根据系统类型选择对应安装包&#xff0c;选择安装路径那个后一直下一步即可安装完成。 配置npm 代理镜像,设置为淘宝的镜像地址&#xff08;后面按照依赖可以加速下载安装包&#xff09; npm c…

React 函数组件配置 websocket 封装【长链接】

websocket 封装示例 import { useEffect, useRef } from "react";interface WebSocketService {send: (message: string) > void;addMessageListener: (listener: (message: string) > void) > void; }const useWebSocket (url: string): WebSocketServic…

★【递归】【链表】Leetcode 21. 合并两个有序链表

★【递归】【链表】Leetcode 21. 合并两个有序链表 解法1 &#xff1a;递归链表 简直是好题啊好题多做做 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 解法1 &#xff1a;递归链表 简直是好题啊好题多做做 >>>…

搭建LNMP环境并配置个人博客系统

LNMP是Linux&#xff08;操作系统&#xff09;、Nginx&#xff08;Web服务器&#xff09;、MySQL&#xff08;数据库&#xff09;和PHP&#xff08;脚本解释器&#xff09;的组合&#xff0c;常用于部署高性能的动态网站&#xff0c;如WordPress等博客平台 一、安装Linux操作系…

Vue 2 的核心模块和历史遗留问题以及vue3新特性

从下图你能看到&#xff0c;Vue 2 是一个响应式驱动的、内置虚拟 DOM、组件 化、用在浏览器开发&#xff0c;并且有一个运行时把这些模块很好地管理起来的框架。 vue 2 能把上面所说的这些模块很好地管理起来&#xff0c;看起来已经足够好了。不过事实真的如 此么&#xff1f;…

前端-AJAX

之前在文章里写过一点&#xff0c;这里就接着写喽 jQuery怎样获得内容和属性&#xff1f;-CSDN博客 一、Axios 库 1.引入axios.js: https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js 2.使用 axios 函数 1&#xff09;传入配置对象 2&#xff09;再用 .then 回调函数接…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-33-处理https 安全问题或者非信任站点-上篇

1.简介 这一篇宏哥主要介绍playwright如何在IE、Chrome和Firefox三个浏览器上处理不信任证书的情况&#xff0c;我们知道&#xff0c;有些网站打开是弹窗&#xff0c;SSL证书不可信任&#xff0c;但是你可以点击高级选项&#xff0c;继续打开不安全的链接。举例来说&#xff0c…

多模态论文阅读--V*指导视觉搜索成为多模态大语言模型的核心机制

V*&#xff1a;Guided Visual Search as a Core Mechanism in Multimodal LLMs 摘要IntroductionRelated WorkComputational Models for Visual Search多模态模型 MethodVQA LLM with Visual Working MemoryModel StructureData Curation for VQA LLM V*&#xff1a;LLM-guided…

计算机网络-网络互连和互联网(四)

1.TCP协议&#xff1a; 传输控制协议&#xff0c;面向字节流按顺序连接&#xff0c;可靠&#xff0c;全双工&#xff0c;可变滑动窗口&#xff0c;缓冲累积传送。协议号为6。下面是TCP段&#xff08;段头&#xff09;&#xff0c;TCP头&#xff08;传输头&#xff09;&#xf…

【重要公告】BSV区块链协会全新推出“网络访问规则NAR”

​​发表时间&#xff1a;2024年2月15日 BSV区块链协会正式宣布已为BSV区块链推出一套全新的网络访问规则&#xff08;Network Access Rules&#xff0c;以下简称“NAR”&#xff09;。 NAR是一整套规则&#xff0c;用于规范BSV协会与BSV网络节点之间的关系。它基于比特币最初…

【LeetCode】每日一题:使二叉树所有路径值相等的最小代价

该题采用自底向上的思路的话&#xff0c;很容易想到使用贪心的思想&#xff0c;但是如何进行具体操作却有些难度。 这里补充一个重要的结论&#xff1a;二叉树的数组形式中&#xff0c;第i个节点的父节点是i/2&#xff1b;接下来只需要让自底向上让每个路径上的代价保持最低限…