首页 > 其他分享 >为什么前端技术栈如此复杂?

为什么前端技术栈如此复杂?

时间:2023-10-19 23:46:21浏览次数:31  
标签:为什么 复杂 前端 js 导入 工具 config 代码

为什么前端技术栈如此复杂?

来源: 投稿 作者: 卡卡西xi 2023-10-17 17:11:00  8 【源创会预告】1024 程序员节(的前两天),相约开源中国办公室,我们一起聊 AI!>>>

前端生态系统的复杂性是出了名的。在每一层,似乎都存在着不兼容的,相互竞争的标准。

没有通用的导入系统。ES 模块、CommonJS、异步模块定义(AMD)和通用模块定义(UMD)都是你可以导入或分享代码的不同方式。打包器试图通过支持多种方法来解决这个问题。但是代码经历了多层的压缩、混淆和转译。TypeScript 被编译成 JavaScript。网络上的代码会被压缩(以减少网络带宽)或混淆(以防止复制)。源映射可以解决其中一些问题,但这又是另一项需要配置的事情。获取正确的堆栈跟踪可能会很棘手。这需要语言、工具和运行时之间的协调。

极其不同的环境。一个特性和一个错误。前端代码预期在任何地方运行 - 不仅仅是浏览器。在不同环境中可用的上下文和 API 各不相同,很难知道你有哪些可用的上下文(更不用说知道你正在导入的库假设了什么)。这段代码能在服务器上运行吗?这段代码能在客户端上运行吗?这对开发者来说很困难(我可以使用什么代码)对于库维护者来说也很困难(我应该为哪些环境优化我的代码?)。

过度强调文件结构。太多的前端工具依赖于项目结构来进行行为设定。配置必须在项目的根目录中(导致了一长串的 tailwind.config.js、postcss.config.js、eslint.config.js、next.config.js 等)。文件结构对于导入代码是必要的恶,但在前端中,它却做了更多的事情。它可能是一个 API,用于将特定文件路由为网页,或者作为 API,或者作为静态网页,或者作为动态重新生成的网页。这些都很方便,但有时候很难调试,也很难发现代码库的部分内容。

配置地狱。开箱即用的工具有很多。长期以来,我们有 create-react-app,这是一个被赞誉的工具包,它集成了许多这样的工具,从一开始就为开发者提供了一个可用的配置。但是,如果你偏离了这条黄金路径,你就会被 20 多个开发工具和复杂的交互所困扰。几乎每个工具都在与其他工具争斗。ESLint(代码检查工具)和 Prettier(代码格式化工具)经常发生冲突。

开发失衡。在代码和部署之间有如此多的步骤,意味着热重载开发往往复杂。这导致了像 webpack-dev-server 这样的工具的出现,它为你处理了大部分问题。但是要警惕魔法。这些开发服务器中有太多的假设,它们可能会迅速偏离生产行为。

原文:https://matt-rickard.com/why-is-the-frontend-stack-so-complicated

作者:Matt Rickard

 

标签:为什么,复杂,前端,js,导入,工具,config,代码
From: https://www.cnblogs.com/sexintercourse/p/17775990.html

相关文章

  • 一个更复杂的 PHP 代码示例,我将展示一个购物车系统的基本实现,它包括商品类、购物车类
    一个更复杂的PHP代码示例,我将展示一个购物车系统的基本实现,它包括商品类、购物车类和一些基本的操作方法。<?php//定义商品类classProduct{private$name;private$price;publicfunction__construct($name,$price){$this->name=$name;$this->pri......
  • Javaweb前端-cnblog
    HTML+CSS+JS+Vue+Element目录HTML+CSS+JS+Vue+Element一、基本概念二、Web服务器三、HTMLCSS3.1官方文档四、JavaScript五、Vue六、Ajax七、前端工程化八、Element一、基本概念静态web:html,css缺点:无法动态更新;无法和数据库交互伪动态:轮播图、点击特效(JavaScript)......
  • 招前端开发
    职责:负责小程序界面设计和开发。与产品团队密切合作,了解产品需求,确保用户界面的友好性和可用性。与后端工程师合作,确保前端与后端之间的数据交互和接口调用的高效与稳定。对性能进行调优,确保小程序在各种设备上的流畅运行。对代码进行维护、测试和调试。基本要求:3年以上前......
  • 单片机为什么按下为0
    对于单片机,单片机上电后默认为高电平,所以对于按键,按下去之后变为低电平(因为按键接地了),未按下去则为高电平,而因为单片机不仅可以改变引脚电平,也可以读取引脚电平,所以可以根据读取引脚电平高低来判断按键是否按下。......
  • 第九章、web前端架构师
    目录十八、编辑器组件图层面板功能开发1、前言十八、编辑器组件图层面板功能开发1、前言*引言-......
  • celery包结构、celery延迟任务和定时任务、django中使用celery、接口缓存、双写一致性
    celery包结构project├──celery_task #celery包  这个包可以放在任意位置│├──__init__.py#包文件│├──celery.py#celery连接和配置相关文件,且名字必须叫celery.py│└──tasks.py#所有任务函数│├──add_task.p......
  • 为什么都说闺蜜劝分兄弟劝和?
    摘自:https://baijiahao.baidu.com/s?id=1739476912278948062想必有对象的朋友们都有过与自己的兄弟或闺蜜分享感情生活的经历,在感觉到幸福的时候秀恩爱,在闹别扭的时候吐槽对象的种种不是。但是,有一个奇怪的现象:当情侣之间闹矛盾向自己的至交好友倾诉时,女生的闺蜜经常扮演着劝分......
  • 算法之空间复杂度以及评判算法的标准(Java)
    一:概述//例如:给出一些整数n:31254972,其中//有两个整数是重复的,要找出这两个重复地整数。//对于这个简单的需求,可以使用很多的思路类解决,其中最朴素的就是//双重循环//遍历整个数列,每遍历一个新的整数就开始回顾//之前遍历过的所有整数。//即第1步:遍历整数3,前面没有......
  • docker入门加实战—部署Java和前端项目
    docker入门加实战—部署Java和前端项目部署之前,先删除nginx,和自己创建的dd两个容器:dockerrm-fnginxdd部署Java项目作为演示,我们的Java项目比较简单,提供了一个接口:配置文件连接docker里的mysql:打包如下:DockerFIle文件如下:#基础镜像FROMopenjdk:11.0-jre-buster......
  • 大规模语言LLaVA:多模态GPT-4智能助手,融合语言与视觉,满足用户复杂需求
    大规模语言LLaVA:多模态GPT-4智能助手,融合语言与视觉,满足用户复杂需求一个面向多模式GPT-4级别能力构建的助手。它结合了自然语言处理和计算机视觉,为用户提供了强大的多模式交互和理解。LLaVA旨在更深入地理解和处理语言和视觉信息,从而实现更复杂的任务和对话。这个项目代表了下一......