首页 > 编程语言 >前端构建工具与应用程序测试

前端构建工具与应用程序测试

时间:2023-02-08 20:35:50浏览次数:43  
标签:文件 测试 前端 Rollup 应用程序 Webpack 构建 模块


1、前端构建工具

什么是前端构建?

  • 什么是构建工具

自动构建工具

  • Npm Scripts(推荐)
    Npm Scripts(NPM脚本)是一个任务执行者。NPM是安装Node时附带的一个包管理器,Npm Script 则是 NPM 内置的一个功能,允许在 package.json 文件里面使用 scripts 字段定义任务。
    优点:npm scripts 的优点是内置,无需安装其他依赖
    缺点:功能太简单,虽然提供了 pre 和 post 两个钩子,但不能方便的管理多个任务之间的依赖。
  • Gulp
    Gulp 是一个基于流的自动化构建工具。除了可以管理任务和执行任务,还支持监听文件、读写文件。Gulp 被设计的非常简单,只通过下面5个方法就可以支持几乎所有构建场景:
    通过 gulp.task 注册一个任务;
    通过 gulp.run 执行任务;
    通过 gulp.watch 监听文件变化;
    通过 gulp.src 读取文件;
    通过 gulp.dest 写完文件
    Gulp 的优点:好用又不失灵活,既可以单独完成构建,也可以和其他工具搭配使用。
    缺点:集成度不高,要写很多配置后才可以用,无法做到开箱即用。

模块打包构建工具

  • Webpack(推荐)
    Webpack 是一个打包模块化的JavaScript的工具,在Webpack里一切文件皆模块,通过 loader 转换文件,通过Plugin 注入钩子,最后输出由多个模块组合成的文件。Webpack 专注于构建模块化项目。
    一切文件,如JavaScript、CSS、SCSS、图片、模板,对于Webpack 来说都是一个个模块,这样的好处是能清晰地描绘各个模块之间的依赖关系,以方便Webpack进行组合和打包,经过Webpack的处理,最终会输出浏览器能使用的静态资源。
  • Rollup
    Rollup 是一个和 Webpack 很类似但专注于ES6的模块打包工具。它的亮点在于,针对ES6源码进行 Tree Shaking,以去除那些已经被定义但没被使用的代码并进行 Scope Hoisting,以减少输出文件的大小和提升运行性能。然而 Rollup 的这些亮点随后就被 Webpack 模仿和实现了。由于 Rollup 的使用方法和 Webpakc 差不多,所以这里就不详细介绍如何使用 Rollup了,而是详细说明他们的差别:Rollup 是在Webpack 流行后出现的替代品;
    Rollup 生态链不完善,体验还不如Webpack;
    Rollup 的功能不如 Webpack 完善,但其配置和使用更简单;
    Rollup 不支持 Code Spliting, 但好处是在打包出来的代码中没有 Webpack 那段模块的加载、执行和缓存的代码。
    Rollup 在用于打包JavaScript库时比 Webpack 更有优势,因为其打包出来的代码更小、更快。但他的功能不够完善,在很多场景下都找不到现成的解决方案。

自动构建与模块打包构建的关系

  • 这两个构建工具功能上有重叠的地方,可单用,也可一起用,本质的区别没有那么清晰。
  • 自动构建:强调的是前端开发的工作流程,我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让gulp执行这些task,从而构建项目的整个前端开发流程。 简单说就一个Task Runner,就是用来跑一个一个任务的。
  • 模块打包:是一个前端模块化方案,更侧重模块打包,解决的是你写代码时候如何组织代码结构的问题。我们可以把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。

代码风格检查与代码规范

  • Prettier
    Prettier 声称自己是一个“有态度”的代码格式化工具。 它是唯一一个全自动的“风格指南”,也就是说,Prettier 提供的配置参数非常少,几乎所有代码风格都是固定的、不可调整的,你只能接受。 这样做的好处是节省了在代码风格上争吵的时间。
    官方网站:https://www.prettier.cn/
  • ESLint
    ESLint用于检查JavaScript代码是否符合规则,由Nicholas C. Zakas在2013年创建。 ESLint中的规则是可更改的,并且可以自行定义和加载规则。 ESLint想要解决关于代码质量和代码风格的问题。 ESLint支持ECMAScript当前标准以及草案中用于未来标准的实验语法。
    官方网站:https://cn.eslint.org/docs/user-guide/getting-started
  • Standard JS
    是一个整理出目前JS 社群中所流行coding style 的Lint 工具,采直接固定规则(不须、也不可自行设定),并且能够自动修正不合规范的程式码。
    官方网站:https://standardjs.com/readme-zhcn.html

2、应用程序测试

应用测试基础

  • 单元测试:又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件
  • 集成测试:也叫组装测试或联合测试。 在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。 一些局部反映不出来的问题,在全局上很可能暴露出来。
  • 功能测试:对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能

前端测试工具

  • Jest(主推)
    Jest 是 Facebook 出品的一个测试框架,相对其他测试框架,其一大特点就是就是内置了常用的测试工具,比如自带断言、测试覆盖率工具,实现了开箱即用。
    而作为一个面向前端的测试框架, Jest 可以利用其特有的快照测试功能,通过比对 UI 代码生成的快照文件,实现对 React 等常见框架的自动测试。
  • React Testing Library(推荐)
    React Testing Library 是一个DOM 测试库,这意味着它并不会直接处理渲染的React 组件实例,而是处理DOM 元素以及它们在实际用户面前的行为。 这是一个很棒的库,(相对)易于使用,并且鼓励良好的测试实践。 当然,你也可以在没有Jest 的情况下使用它。
  • Cypress(推荐)
    cypress是比较新的一个自动化测试工具,在github的star数目前已经是22k+,天然支持UI自动化,接口自动化的无缝融合,并且自带Mock Server,拥有独特的测试流水线实现方式,且上手简单,个人可以轻易搭建起企业级的前端自动化测试框架。
  • Enzyme (推荐)
    Enzyme 是 React 的测试类库。 Enzyme 提供了一套简洁强大的 API,并通过 jQuery 风格的方式进行DOM 处理,开发体验十分友好。
  • mocha与chai
    mocha是一个javascript的测试框架,chai是一个断言库,两者搭配使用更佳,所以合称“抹茶”(其实mocha是咖啡)。 “抹茶”特点是: 简单,node和浏览器都可运行。
  • Ava
    ava是mocha的替代品。虽然 JavaScript 是单线程,但在 Node.js 里由于其异步的特性使得 IO 可以并行。AVA 利用这个优点让你的测试可以并发执行,这对于 IO 繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,让每一个测试文件可以获得更好的性能和独立的环境。在 Pageres 项目中从 Mocha切换 到 AVA 让测试时间从 31 秒下降到 11 秒。
  • Jasmine
    Jasmine是一个行为驱动测试框架,它提供测试JavaScript 的一系列工具。


标签:文件,测试,前端,Rollup,应用程序,Webpack,构建,模块
From: https://blog.51cto.com/gwj1314/6044785

相关文章

  • 【大前端】使用html/css/javascript开发移动端(安卓,IOS)与桌面端(Win,mac,Linux)应用程序
    1、什么是大前端?传统上,Web应用可分为前端(在浏览器中执行的部分)和后端(在服务器中执行的部分)。前端工程师的职责是以Web技术(HTML、CSS、JavaScript、DOM、Ajax等)实现基于浏览......
  • 前端面试题(1) js
    keywords:JS深拷贝深拷贝:针对【引用】类型,传递的是地址,多变量同时指向同一块内存地址(比如某个对象)letobj1={ //1.不需要处理 //基本数据类型可以不做处理,typeof!==......
  • 前端页面分页算法 js+php
    实现效果: 实现思路:通过当前选中页码数值和总页码数量,计算返回结果,以数组的形式返回。遍历数组内容,完成页面渲染。 php算法:/***getNavigatePage**@......
  • 初识Sentry前端监控
    前言今早偶尔读到方神发表了一篇sentry(一)初探 的文章,正是我最近需要的,于是自己动手丰衣足食,搭建了一个属于自己的基于Sentry的前端监控平台。为什么要做前端监控?相信每......
  • 前端报表如何实现无预览打印解决方案或静默打印
    在前端开发中,除了将数据呈现后,我们往往需要为用户提供,打印,导出等能力,导出是为了存档或是二次分析,而打印则因为很多单据需要打印出来作为主要的单据来进行下一环节的票据支撑......
  • .net core 前端获取后台的datatable数据
    [email protected]((ViewBag.Data.Tables["keyset"]asSystem.Data.DataTable).SerializeObject());快捷翻译-快到离谱!  划词翻译自动发声自......
  • 构建亿级别的消息推送基础模型
    问题场景:当用户量增大的时候,系统内的消息推送(比如系统内短信推送,微信,钉钉,极光个推推送)将是我们常见业务场景。当系统中的用户量逐渐增大时候,群发用户消息的推送也将成为......
  • 前端(vue)导出pdf
    纯前端导出pdf实现方法如下:1.安装html2pdf、jspdfnpminstallhtml2canvasjspdf--save2.项目utils文件夹中新建一个html2pdf.js(文件名称自拟)文件,内容如下:imp......
  • maven概念、maven项目的一键构建
    maven概念一个对Maven比较正式的定义是这么说的:Maven是一个项目管理工具它包含了一个项目对象模型(POM:OrihectObjectModel)一组标准集合一个项目生命周期(ProjectLifec......
  • 小程序高级电商前端第3周电商系统分类页面客服商品详情页面开发<三>----为你推荐实现
    为你推荐实现:概述:接着https://www.cnblogs.com/webor2006/p/16645627.html继续往下学习,对于整个首页的功能,还差最后一个木有实现:而这块也是最麻烦的,推荐的商品是需要分......