前端--阶段笔记(五)前端工程化

前端工程化详解——理解与实践前端工程化 前端工程化一直是一个老生常谈的问题,不管是面试还是我们在公司做基建都会经常提到前端工程化,那么为什么经常会说到前端工程化,并没有听过后端工程化、Java工程化或者Python工程化呢?我们理解的前端工程化是不是一直都是Webpack的性能调优,或者是一个cli工具呢?今天我们带着问题来一起寻找一下答案吧! 阅读详情

前端工程化

webpack

如果手动开发前端,需要一个一个凑各种文件。

实际的前端开发:

  • 模块化(js 的模块化、css 的模块化、其它资源的模块化)
  • 组件化(复用现有的 UI 结构、样式、行为)
  • 规范化(目录结构的划分、编码规范化、接口规范化、文档规范化、 Git 分支管理)
  • 自动化(自动化构建、自动部署、自动化测试)

前端工程化,就是要实现以上四个现代化。

文件依赖关系复杂,静态资源请求效率低,模块化知识

webpack是前端项目构建工具(打包工具),提供了模块化支持,代码压缩混淆,处理js兼容问题,性能优化等。程序员集中在具体功能实现上。

webpack.config.js是 webpack 的配置文件。webpack 在真正开始打包构建之前,会先读取这个配置文件,从而基于给定的配置,对项目进行打包。

使用:

1 .运行npm install webpack webpack-cli -D命令 安装webpaclk相关包

2 .项目根目录中 创建名为webpack.config.js的webpack配置文件。

3 .在webpack的配置文件初始化一下配置:

module.exports = {
mode:'development'//mode用来指定构建模式,
  //开发中使用dev模式,上线使用 production
}

4 .在package.json 配置文件中的scripts节点下,新增dev脚本:

npm run dev.即可执行这个脚本。webpack是本体不能改,dev是名字可以随便改。

"scripts":{
  "dev":"webpack"//script节点下的脚本可通过npm run执行。
}

5 .终端中运行 npm run dev命令来启动webpack打包项目。

修改打包出入口

const path = require('path')

module.exports = {
    mode: 'development',
    entry: path.join(__dirname, 'src/index.js'),
    output: {
        path: path.join(__dirname, './dist'),
        filename: 'bundle.js'
    }
}

常用插件

常用的有两个:1 webpack-dev-server ,用于自动打包,2 html-webpack-plugin ,html插件,可用于定制index,html页面内容。

1 webpack-dev-server 只要修改了源码就自动打包和构建。文件生成到内存中。
webpack-dev-server的使用步骤:

  • 1 安装:npm install webpack-dev-server -D
  • 2 配置:将dev命令改为"dev":"webpack serve"
  • 3 查看:http://localhost:8080

注意:实时打包生成的文件存放在内存中,无法在磁盘上找到。可以被访问到,如:http://localhost:8080/bundle.js

2 html-webpack-plugin ,webpack中的html插件,可用于定制index.html页面内容。
使用步骤:

  • 1 安装:npm i html-webpack-plugin -D

  • 2 导入:const HtmlPlugin = require('html-webpack-plugin')

  • 3 创建实例对象 :

    const htmlPlugin = new HtmlPlugin({
      //指定源文件独立与生成文件的路径
        template: './src/index.html',
        filename: './index.html'
    })
    
  • 4 挂载实例对象

    module.exports = {
        mode: 'development',
        plugins:[htmlPlugin]
    }
    

注意:复制出来的index首页放进内存中,不能在目录树中找到。插件生成的index.html首页的底部已经生成了导入bundle.js的代码

其他设置

//devServer节点写在webpack.config.js里面,与module节点平级
plugins:[htmlPlugin],
devServer:{
        open:true,
        host:'127.0.0.1',
        port:80
    }

loder加载器

webpack只能处理js文件,不能处理其他。需要调用loader加载器才能正常打包。
css-loader和less-loader打包处理css与less文件。
babel-loader打包处理webpack无法处理的高级语法。

1 css-loader

  • 1 安装:npm i style-loader@2.0.0 css-loader@5.0.1 -D
  • 2 配置:在module.exports中,声明 module: {rules: [{ test: /\.css$/, use: ['style-loader', 'css-loader'] }]}

注意:use数组中的顺序是固定的,只能从后往前调用。

设置要生效需要重启自动打包服务。

2 less-loader

  • 1 安装:npm i less-loader less -D

  • 2 配置:在module.exports中,声明

    module: {rules: [ { test: /\.less$/, use: ['style-loader', 'css-loader','less-loader'] }]}
    

使用之前需要在js中导入:import './css/index.less'

3 url-loader

打包处理样式表中与url路径有关的文件。如png jpg gif等。

  • 1 安装:npm i url-loader@4.1.1 file-loader@6.2.0 -D
  • 2 配置:{ test: /\.jpg|png|gif/, use: 'url-loader?limit=22229'}
    ?后面是loader的参属项,单位为byte,只有小于这个值的才会被转为base64。

小图片可以考虑转为base64,大图不要转。

4 打包处理高级JS语法

借助babel-loader处理高级语法。

包名:babel-loader@8.2.1 @babel/core@7.12.3 @babel/plugin-proposal-class-properties@7.12.1

webpack.config.js中的module -> rule数组中,添加

{ test: /\.js$/, //exclude为排除项目,这里不编译node_modules下的js文件
  exclude: /node_modules/, 
  //指定使用babel-loader
  use: { 
  	loader: 'babel-loader', 
  //参数项目,使用babel-loader调用此插件,此插件用来处理转化class中的高级语法
 	 options: { plugins: ['@babel/plugin-proposal-class-properties'] } } }

打包发布

1 开发环境下,打包生成的文件存放于内存中,无法获取到最终打包生成的文件开发环境下,
2 打包生成的文件不会进行代码压缩和性能优化
为了让项目能够在生产环境中高性能的运行,因此需要对项目进行打包发布。

步骤:

1 在package.json文件中的,script节点下,新增命令:

 "scripts": {
    "build":"webpack --mode production"
  }

–mode 是一个参数项,用来指定 webpack 的运行模式。production 代表生产环境,会对打包生成的文件进行代码压缩和性能优化。注意:–mode 优先级较高,通过 --mode 指定的参数项,会覆盖 webpack.config.js 中的 mode选项。这里已经修改为了生产环境,不是开发环境。

运行npm run build 命令后,会在文件夹下生成dist目录,内部存放的是发布所需的文件。

归纳不同文件,使得js文件放入js文件夹,png等放入png文件夹

module.exports = {
    mode: 'development',
    entry: path.join(__dirname, 'src/index.js'),
    output: {
        path: path.join(__dirname, './dist'),
        filename: 'js/bundle.js'
    }
}

    module: {
        rules: [
            {
                test: /\.jpg|png|gif/, use: {
                    loader: 'url-loader',
                    options: {
                        limit: 22228,
                        outpath: 'image'
                    }
                }
            },
          ]
    }

自动清理打包过程的旧文件

安装 clean-webpack-plugin 插件。

  • 1 安装:npm i clean-webpack-plugin -D
  • 2 导入:const {CleanWebpackPlugin}= require ('clean-webpack-Plugin')
  • 3 创建实例:const cleanPlugin = new CLeanWebpackPlugin()
  • 4 把实例放入plugins: [htmlPlugin]

企业级项目非常复杂,后续vue项目中会讲。

source Map

代码上线前会进行混淆压缩。出错后debug是非常困难的。无法定位。

Source Map 就是一个信息文件,里面储存着位置信息,即Source Map 文件中存储着代码压缩混淆前后的对应关系。
出错的时候,除错工具将直接显示原始代码,而不是转换后的代码,能够极大的方便后期的调试 。

开发环境下, webpack.config.js 中添加如下的配置,可保证运行时报错的行数与源代码的行数保持一致:

module.exports = {
  devtool:'eval-source-map'
}

在生产环境下,需要省略 devtool 选项,生成的文件中不包含 Source Map。如果只想定位报错的具体行数,且不想暴露源码。此时可以将 devtool 的值设置为 nosources-source-map。如果想在定位报错行数且展示具体报错的源码。此时可以将 devtool 的值设置为 source-map。采用此选项后:应该将你的服务器配置为,不允许普通用户访问 source map 文件。

什么是前端工程化? 虽然前端工程化的概念兴起还没几年的时间,但是对于“工程化”这个词并不是一个新鲜词了,在其他软件开发的领域很早就已经有了高度的工程化,例如Web服务端开发。只不过那个时候,前端工程师并没有工程化的意识,也没有必要对前端进行工程化的操作,毕竟在那个时期,前端的开发工作只能算是整个项目开发过程中的“附属品”。那为什么这几年,前端工程化的概念又突然成为了热点话题了呢?要想讲好前端工程化其实并不容易,我就从下面几个方面入手,对前端工程化的概念做个简单的讲解,仅仅是个人理解,希望大家多多交流讨论。 1、前端为什么要工程 阅读详情

相关推荐

浅谈前端工程化

1. 什么是前端工程化 自有前端工程师这个称谓以来,前端的发展可谓是日新月异。相比较已经非常成熟的其他领域,前端虽是后起之秀,但其野蛮生长是其他领域不能比的。虽然前端技术飞快发展,但是前端整体的工程生态并没有同步跟进。目前绝大多数的前端团队仍然使用非常原始的“切图(FE)->套模板(RD)”的开发模式,这种模式下的前端开发虽说不是刀耕火种的原始状态,但是效率非常低下。 前端的工程化问题与...

蜉蝣的博客 693

前端工程化知识总结

前端工程化知识总结

XZZXBC的博客 1797

vue前端工程化

前端工程化,如何利用weback构建前端项目,从零开始。

前端工程化最佳实践:项目结构、代码规范和文档管理

前端工程化是指以工程化的方式组织、开发和交付前端项目的过程。包管理器:熟悉常用的包管理工具(如npm、Yarn),能够有效管理项目依赖,进行包安装、更新和版本控制。模块化开发:了解和使用模块化开发的概念和技术,如CommonJS、ES6模块等,可以更好地组织和复用代码。构建工具:熟悉常见的构建工具(如Webpack、Rollup、Parcel等),能够进行资源打包、代码转换、压缩和优化等,提高项目的性能和可维护性。自动化任务。

你若盛开,清风自来 1673

单细胞RNA测序数据分析与可视化:从基础原理到高级应用

单细胞RNA测序(scRNA-seq)技术通过解析单个细胞的基因表达谱,显著提升了我们对细胞异质性的理解。本文详细介绍了scRNA-seq数据分析的完整流程,包括数据预处理、质量控制、降维、聚类、差异表达分析、细胞类型注释、细胞周期分析、轨迹分析、RNA速率分析、基因集富集分析、细胞通讯分析、批次效应校正以及空间转录组学整合。文章还展示了scrna_toolkit包在简化分析流程和增强数据可视化方面的应用。通过这一工具,研究者可以更高效地处理单细胞数据,揭示复杂的生物学信息。未来,该工具将进一步整合多组学分

2301_80338712的博客 4132

SAP PS模块预算控制实战:为什么你的采购订单金额和预算占用对不上?

本文深入解析SAP PS模块中采购订单金额与预算占用偏差的常见问题,揭示承诺成本与实际成本的分流处理机制。通过实战案例和六步定位法,提供发票拆分、跨年度预算等典型场景的解决方案,并分享预防性配置框架和最佳实践,帮助企业有效控制预算偏差。

weixin_30363981的博客 516

前端工程化学习

title: 前端工程化 tags: gulp notebook: 学习笔记 2022年3月19日 对文件进行自动化操作使用gulp 全局安装gulp : npm i gulp -g 初始化项目:npm init --yes 开发者模式安装gulp : npm i gulp -D 建立gulpfile.js文件:在项目中建立gulpfile.js文件 在gulpfile.js文件中写自动化代码 在gulpfile文件中写自动化代码 先通过require引入gulp 在gulpjs.com网站.

qq_43174912的博客 329

手把手教你用Origin拟合真应力-真应变曲线:从数据到加工硬化指数n的完整流程

本文详细解析了如何使用Origin软件拟合真应力-真应变曲线并计算加工硬化指数n的全流程。从数据预处理、曲线绘制到Hollomon方程拟合,逐步指导材料科学研究人员完成实验数据分析,帮助准确评估金属材料的力学性能与强化特性。

view3的博客 716

关于前端工程化的一些理解,以及配置gulp自动化和自定义一个前端脚手架

文章内容输出来源:拉勾教育前端高薪训练营 关于前端工程化 前端工程化是什么 工程化是使用软件工程的技术和方法来进行前端的开发流程、技术、工具、经验等规范化、标准化,其以提高效率、降低成本、质量保证为目的。工程化不等于某个具体的工具,工程化是指项目整体的规划和架构,工具只是落地实施的手段。 工程化主要解决的问题 传统语言或语法的弊端,如需要使用ES6+的新特性,但是存在兼容问题,亦或是使用Less/Sass/PostCSS时,运行环境不能支持支持 无法使用模块化/组件化,来提高项目的可维护性,但运行环境.

yhzzy的博客 387

DSMA时序修复避坑指南:当Setup和Hold互卡时,除了调Margin还能做什么?

本文深入探讨DSMA时序修复中的Setup与Hold互锁问题,提供7种高阶策略,包括优先级判断、高级参数组合、单元类型智能替换等,帮助工程师突破时序收敛瓶颈。特别针对fix_eco_timing命令的隐藏参数和物理协同优化进行详细解析,助力芯片设计实现时序收敛。

weixin_30162121的博客 297

WinCC与施耐德PLC的Modbus TCP通信实战指南

本文详细解析了西门子WinCC与施耐德PLC通过Modbus TCP协议实现通信的完整实战流程。内容涵盖硬件网络配置、Modbus地址映射核心规则、WinCC驱动连接建立、变量创建及高级数据访问技巧,并提供了常见故障排查思路,帮助工程师高效解决跨品牌设备通信难题。

weixin_29194693的博客 1001

前端工程化的理解

很久没写过博客沉淀下,最近看了几篇前端工程化的文章,结合自己实践所学,阐述下什么是前端工程化。 大前端其实分为很多种 移动应用开发的前端 web前端 本篇主要是说下web前端的工程化 什么是前端工程化 在回答前端工程化这个问题之前,我们应该先考虑另外一个问题:前端开发中会不会涉及到业务?再详细一点,就是前端工程师到底需不需要了解服务端的业务逻辑,再或者说,要不要将一部分服务端的业务逻辑放到前端来实现。这个问题没有标准的答案,实际上应该属于工程协作问题,就是谁该干什么的问题。 最早的前端开发就是实

Emoji的博客 9418

1、机器学习在环境科学中的应用与经典数据分析基础

本文介绍了机器学习在环境科学中的广泛应用,包括卫星遥感、气候预测、空气质量预报等领域,并系统回顾了经典数据分析的基本概念,如期望、方差、协方差和相关性及其显著性检验。同时,文章阐述了贝叶斯定理、判别函数与分类、聚类分析等方法的原理与应用,强调了经典统计方法与机器学习技术的互补关系。最后展望了未来环境科学中数据分析的发展方向,强调多学科融合与方法创新的重要性。

stone的博客 145

何为前端工程化?一文给你说透前端工程化

什么是前端工程化?简单来说,前端工程化可以提升开发体验、提高开发效率和质量、提升应用的访问性能,一切以提高效率、降低成本、质量保证为目的的手段都属于工程化。前端工程化不等同于Webpack,它主要包含从编码、发布到运维的整个前端研发生命周期,把软件工程相关的方法和思想应用到前端开发。

青春木鱼的博客 5481

Python 爬虫实战:全面解析雪球网用户投资组合数据采集

本文介绍了如何使用 Python 爬虫技术,抓取雪球网用户的投资组合信息。通过模拟登录、解析页面内容等步骤,获取了用户的持仓数据。未来,可以进一步探索以下方向:

2201_76125261的博客 1304

virtuoso如何导出def?

在DEF Out界面,填写def name,library name以及cell name ,cell view既layout,把Output "Floating Shapes" into SPECIAL NETS Section勾上,OK即可。2)在要导出的layout界面选中PAD和prBoundary(shift+左键),快捷键C copy到空cell里,这时需要调整copy过来的object坐标,让两边prBoundary的坐标相同。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 2307

前端工程化学习笔记-01(前端模块化)

前端模块化是一种将复杂的程序根据规则或规范拆分成若干模块的方法,每个模块内部的数据和实现是私有的,对外暴露一些接口与其他模块进行通信。‌ 这种技术有助于提高代码的可读性、可维护性、灵活性和复用性,是前端工程化的重要组成部分

weixin_41016739的博客 1653

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

前端工程化的理解与实现

前端工程化是现代Web开发的重要趋势,旨在通过标准化、模块化和自动化的手段,提高开发效率、代码质量和项目可维护性。最早的前端开发就是实现页面,顶多再写写JS让页面可以有交互的特效。属于前后端未分离的时代。但是随着需求的增加,我们不仅要做Web应用,还要做App、小程序以及各种端。前后端分离的时代开始,在这种需求日增的情况下,必须得考虑一种新的方式,优化前端的开发工作,例如,解决代码冗余,项目可维护性,提升版本迭代速度等等一系列的问题。前端工程化的概念也就是在这中情况下被提出了。

m0_56344834的博客 1545

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

谈谈前端工程化

看过博主最近半年文章的小伙伴都知道,博主都在投入于一个开源项目——concis react组件库。这篇文章博主想从一个组件库项目的角度,谈一谈自己对于前端工程化的理解和实践。

量子前端的博客 2187

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

前端工程化

前端工程化

m0_70709621的博客 1325

自学前端到底要学什么?五年老前端现身说法

其实,十年前,在业界前端开发都不配叫工程师,因为很多人感觉前端开发的工作很简单,就是写个样式,设计师就顺便把这个活干了,所以,当时前端开发在程序员心里地位是很低的。 但是,随着移动互联网的发展,随着前端和移动端相结合,大前端概念应运而生的同时,前端面对的工作是越来越复杂,尤其是在前后端分离的今天,前端不仅仅要应对界面的开发,也涉及到复杂的业务逻辑的处理,对于前端的开发要求是越来越高了。 我顺便要为前端工程师正名:前端工程师的工作量,相对于后端来讲比较大一些,不仅仅要应对前端界面和设计,以及应对产品经理的挑剔

BOM485480的博客 7379

对前端工程化的粗浅理解

新年将至,前段时间给公司开发了抽奖和投票系统,用的 HTML5 + jQuery + CSS3 技术栈,由于是公司内部使用,就没有打包构建,近期封版空闲下来后,刚好利用这个项目进行了工程化的理解。

qq_43753152的博客 2063

前端工程化详解 & 包管理工具

前端工程化,配置文件详解,包管理工具npm,Yarn,pnpm

yolo 2038

前端工程化:从小白到高手的进阶之路

在当今的Web开发领域,前端工程化已经从一种“高级技巧”变成了“必备能力”。无论是大型企业级应用还是小型个人项目,采用工程化的开发方式都能显著提高代码质量、开发效率和用户体验。

wenyang12的博客 1152
上一篇: 前端--阶段笔记(五)ES6模块化与异步编程高级
codeMoonkey
博客等级 码龄8年 5粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值