前端工程化的理解

简单来说,前端工程化是对前端开发流程的改良,是效率工具。

可以通过一下四个块来理解前端工程化

  1. 模块化:

    就是将代码拆分,分成独立的单独的相互依赖的片段

    首先说JS,CommonJS和ES Module都是JS模块化的一种表现形式,ES6 使用 import 和 export 来进行导入导出;CommonJS使用 require 和 module.exports 或 exports

    CSS的话,是不支持选择器嵌套的,因此我们可以使用CSS预编译器(Less、Sass)去写CSS,然后在浏览器运行时候会被打包为CSS

    HTML通常都是模块化的,服务端可以使用模版引擎(template),将数据注入到占位符中,在Vue框架中,通常使用template,React中可以使用TSX、JSX等

    但是还有一个问题就是,不同资源无法组织在一起,这时就需要用到Webpack了,Webpack是一个模块打包工具,具有很高的可配置型和灵活性,可以配置相关的loader和plugins来优化我们的项目

  2. 组件化:

    目前前端开发的主要思想就是组件化开发,组件是UI层面的更加细粒度的拆分,每个组件都有自己的HTML、CSS、JS,同时又有自己的状态,而且支持嵌入到其他组件中并接受外部数据

  3. 规范化:

    即项目开发时一些通用式的规范,比如

    目录结构的规定

    代码的风格

    代码注释

    git 提交信息

    接口封装规范

    使用ESLint来检查代码等

    使用TS来进行来避免类型错误等

  4. 自动化:
    一个小概率事件只要做的次数足够多,它就会变成大概率事件。这也是为什么分布式系统中容错机制是非常重要的原因。
    首先想到的自然是 CI/CD(持续集成和持续交付/部署)。我们将代码提交到远端仓库时,或者是给一个分支打了 tag 后,能够触发一些脚本,将我们的项目代码做打包编译,发布成制品,然后发布到生产环境。这些都是自动化的,流程化的。
    CI/CD 工具有很多:Jenkins(比较古老了)、GitLab CI/CD、GitHub Action、Docker(发布制品) 和 k8s(容器编排)等。

    前面说的 git hook,在本地 commit 时进行一些操作,也算是一种简单的自动化。
    打包工具
    前端工程化的核心是打包工具。
    打包工具需要支持的 几种重要的能力:
    1.代码分割:指的将代码划分为可以按需 / 同时加载的多个bundles 或组件的能力。比如动态 import、提取公共依赖模块代码、多个入口文件没有重复代码、支持 ESM 的值引用模拟等。
    2.哈希:资源更新时做哈希,防止资源缓存。哈希分很多种,比如文件路径名哈希、内容哈希等。
    3.包引入:ES Module、CommonJS 以及从 node_modules 目录引入包的支持。
    4.非 JS 资源:导入非 JS 资源的支持,像是 webpack 需要使用各种 loader 来支持,有些打包工具是内置的。
    5.输出的模块格式:支持导出为 ES Module、CommonJS 等模块。
    6.转换处理:比如对图片压缩、代码压缩、JS 版本降低等,在 webpack 中是使用 plugins 来实现的。

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

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

相关文章

TS + Vue3 elementUI 表格列表中如何方便的标识不同类型的内容,颜色区分 enum

TS Vue3 elementUI 表格列表中如何方便的标识不同类型的内容,颜色区分 enum 本文内容为 TypeScript 一、基础知识 在展示列表的时候,列表中的某个数据可能是一个类别,比如: enum EnumOrderStatus{"未受理" 1,"…

SQL执行原理

文章目录 SQL执行原理慢SQL分析优化案例优化步骤: 分库分表实施分库分表时,如何保证数据一致性?实践案例案例实施垂直拆分的步骤: SQL执行原理 SQL(Structured Query Language)是一种用于管理与查询关系数…

【LeetCode-74.搜索二维矩阵】

题目详情: 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则&am…

Csharp学习Linq

Linq的学习 这里继续使用之前文章创建的学生类,首先简单介绍一下linq的使用。 Student.cs public class Student{public int Id { get; set; }public int ClassId { get; set; }public string Name { get; set; }public int Age { get; set; }public string Descr…

基于python+vue 的一加剧场管理系统的设计与实现flask-django-nodejs-php

二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…

Kubernetes自动化配置部署

在新建工程中,使用k8s的devops服务,自动化部署项目 1、在搭建好k8s的集群中,确认已开启devops服务; 2、新建Maven项目之后,创建dockerfile、deploy和Jenkins文件 例如: Dockerfile FROM bairong.k8s.m…

【思维】第十四届蓝桥杯省赛C++ C组/研究生组 Python A组/C组《翻转》(C++)

【题目描述】 小蓝用黑白棋的 n 个棋子排成了一行,他在脑海里想象出了一个长度为 n 的 01 串 T,他发现如果把黑棋当做 1,白棋当做 0,这一行棋子也是一个长度为 n 的 01 串 S。 小蓝决定,如果在 S 中发现一个棋子和它…

突破编程_C++_面试(STL 编程 stack)

1 请简述 std::stack 在 C STL 中的基本功能和使用场景 std::stack在C STL(标准模板库)中是一个容器适配器,专门用于实现后进先出(LIFO,Last-In-First-Out)的数据结构。其基本功能和使用场景如下&#xff…

【WPF应用9】 基本控件-Grid的对其和属性详细说明及示例

在WPF(Windows Presentation Foundation)中,Grid是一种强大的布局控件,它可以用来对齐和排列容器中的子元素。Grid控件允许您以行列的形式组织UI元素,并且可以指定行列的数量、大小和布局方式。在本文中,我…

C#,图论与图算法,有向图(Direct Graph)广度优先遍历(BFS,Breadth First Search)算法与源程序

1 图的广度优先遍历 图的广度优先遍历(或搜索)类似于树的广度优先遍历(参见本文的方法2)。这里唯一需要注意的是,与树不同,图可能包含循环,因此我们可能再次来到同一个节点。为了避免多次处理节点,我们使用布尔访问数组。为简单起见,假设所有顶点都可以从起始顶点到达…

ideaSSM 学员信息管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 学员信息管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&#xff…

C语言基础知识复习(考研)

(1)C语言文件操作 1 什么是文件 文件有不同的类型,在程序设计中,主要用到两种文件: (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。 (2)数据文件。文件的内容不是…

软件测试相关内容第五弹 -- 自动化测试Selenium

写在前:hello这里是西西~ 这边博客主要学习关于自动化测试的相关内容,首先了解自动化测试的相关理论知识,其次学习web应用中基于UI的自动化测试框架 - selemium[需要重点掌握selenium工作原理],实操selenium,最后学习Junit相关知识…

当我想用ChatGPT-Next-Web来套壳Azure OpenAI Service时

使用Cloudflare worker来代理Azure OpenAI API, 并将其转换为兼容OpenAI的API 一直没能搞定OpenAI的订阅, 就因为没有搞定国外的信用卡, 所以就一直使用GPT-3.5来处理日常的文字生成工作, 例如写文档, 生成一些简单的脚…

AI助力生产制造质检,基于轻量级YOLOv8n模型开发构建工业生产制造场景下的瓷砖瑕疵检测识别分析系统

瓷砖生产环节一般经过原材料混合研磨、脱水、压胚、喷墨印花、淋釉、烧制、抛光,最后进行质量检测和包装。得益于产业自动化的发展,目前生产环节已基本实现无人化。而质量检测环节仍大量依赖人工完成。一般来说,一条产线需要配数名质检工&…

论文阅读-MIPD:一种用于分布式深度神经网络训练的自适应梯度稀疏化框架

摘要—基于参数服务器架构的异步训练广泛应用于大规模数据集和深度神经网络模型的扩展训练。在大规模分布式深度学习系统中,通信一直被认为是主要瓶颈。最近的研究尝试通过梯度稀疏化和量化方法来减少通信流量。我们发现前期研究存在三个限制。首先,他们…

秋招企业面经

元戎启行 牛客 岁月如歌(关注) 算法:回文子串,二叉树寻找最小路径(回溯比较简单)。跳楼梯 八股: delete会把内存还给操作系统吗? 进程调用delete或者free释放资源后&#xff0c…

作为前端,如何利用机器学习

当涉及到前端开发与机器学习(Machine Learning)的结合时,我们进入了一个充满创新和前沿技术的领域。机器学习作为人工智能的一个重要分支,已经在各个领域展示了惊人的应用潜力,而将其融入前端开发则为我们带来了无限可…

YOLOv5-Y5周:yolo.py文件解读

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 我的环境: 1.语言:python3.7 2.编译器:pycharm 3.深度学习框架Tensorflow/Pytorch 1.8.0cu111 一、代码解读 import argparse i…

python实现生成多种文件格式:excel、csv、pdf

python实现生成多种文件格式:excel、csv、pdf import data_util, time_util import pandas as pd import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPagesif __name__ __main__:data data_util.get_superset_data()df if (len(data) > …