为什么前端从简单的写html变成如今各种框架与模块,看起来如此复杂?

简介: 为什么前端从简单的写html变成如今各种框架与模块,看起来如此复杂?

目录


前言


本来是想记录一下npm的包管理,发现既然想要做个包管理介绍,肯定要先知道模块是什么,而谈到模块就想到,正是模块的思想让我们现在的前端看起来如此复杂,框架离不开依赖包,而依赖包管理也就是一个个逐渐封装起来的模块而已,它们看起来复杂,却带领前端走向新的时代,我们谈谈模块,谈谈我们现在所说的框架到底是什么。


模块是什么


大概就是将比较庞大的东西分割成一个个部分,而我们编写js,当然是将复杂的js代码分成多个js,所以不严谨的说,就是一个js文件就是一个模块。

为什么需要分割出模块?假设我们有一个方法是某种复杂的算法,这个算法在很多文件中都需要用到,如果不将这个方法写成一个模块的话,你就需要在不同文件中每次使用时编写一遍该算法,显然模块就是为了消除这种冗余的代码,将可能会重复的代码内容封装成一个模块。


模块的导出与导入



既然分出了模块,那模块与模块之间又是如何工作呢,必须要有东西将它们串起来,用es6的模块为例,也就是我们的导入import与导出export。

导出


我们写好一个count对象,count中间有两个我们写好的简单加减方法,使用export default暴露出去。

这里涉及到es6模块的两种导出方式,一种是默认导出export default,默认导出只能导出一次,当导入时就没有用花括号获取到的就是默认导出的唯一内容。

另一种就是直接export导出属性,可以导出任意个,需要在声明属性的同时导出或者使用花括号导出.

下面这样导出的结果等于,导出一个默认的count与一个包含所有直接导出属性的集合对象{ add, del, add2, del2 }

//count.js
const count = {
  add: (a, b) => {
    return a + b;
  },
  del: (a, b) => {
    return a - b;
  },
};
export const add = Count.add;
export const del = Count.del;
const add2 = count.add
const del2 = count.del
export const { add2, del2 };

导入

  1. 导入时,使用import count from "./count.js"可以获取到export default默认导出的东西,也就是count。
  2. 如果需要获得直接导出的属性,得需要用花括号{}
//test.js
import count, { add, del } from "./count.js";
console.log(Count.add(1, 2));//3
console.log(add(1, 2));//3
console.log(del(1, 2));//-1

依赖关系与依赖包管理


上面的例子中我们可以知道,我们封装了count模块,用于做计算,而test模块需要导入count,它依赖于count,如果count这个东西不存在,那test便无法正常工作了。

那假设我将count做的更强大,并非只是简单的加减法,然后将它发布为npm包供人下载,他们使用npm下载完我们的count包,导入我们的模块它们就可以使用了,这也就是依赖包管理的由来。

为什么模块让我们的前端变得复杂


而现在很多流行的前端框架,比如我们编写react代码时,需要import ... from 'react',会发现它也是封装好的模块作为依赖包。

这些流行的框架其实都是js,利用js可以生成dom的原理,设计出了他们的虚拟dom,因此我们前端从简单的html变成了复杂的项目,需要下载一堆包。

它们看起来是变得复杂了,但是它们的诞生让前端迈入了新的时代,能做的事情更多也更容易。好比我们从自行车换成了汽车,汽车肯定比自行车来的庞大内部结构也更加复杂,但是它的确能让我们到目的地的速度变快,现在我们使用react编写项目时,我们更在乎的是如何使用react编写出项目,而不是react是如何被编写出来的,当然我们仍然需要抱着一颗好学的心,不断尝试去了解它的原理。

我们编写前端项目需要依赖于这些框架的包,而这些框架也有它们运行时需要依赖的包,技术力提升是一个踩在过去巨人肩膀上不断上升的过程,我们不停探索原理,不断去找寻巨人脚底下的更大的巨人时必然发现自己如此渺小。


相关文章
|
17天前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
48 9
|
1月前
|
人工智能 前端开发 JavaScript
前端架构思考 :专注于多框架的并存可能并不是唯一的方向 — 探讨大模型时代前端的分层式微前端架构
随着前端技术的发展,微前端架构成为应对复杂大型应用的流行方案,允许多个团队使用不同技术栈并将其模块化集成。然而,这种设计在高交互性需求的应用中存在局限,如音视频处理、AI集成等。本文探讨了传统微前端架构的不足,并提出了一种新的分层式微前端架构,通过展示层与业务层的分离及基于功能的横向拆分,以更好地适应现代前端需求。
|
20天前
HTML 框架2
iframe标签用于在当前页面中嵌入另一个HTML页面。通过设置frameborder属性为"0",可以移除iframe边框。iframe的src属性用于指定要嵌入的页面URL。例如,使用`<iframe src="https://www.runoob.com" frameborder="0"></iframe>`可以无边框地显示RUNOOB.COM页面。
|
11天前
|
前端开发 JavaScript API
前端界的秘密武器:掌握这些框架,让你轻松秒杀99%的同行!
前端开发日新月异,掌握几个明星框架如React、Vue.js和Angular,不仅能让工作更得心应手,还能轻松超越同行。React以高效的虚拟DOM和组件化著称;Vue.js简洁易懂,灵活性高;Angular提供全面的解决方案,适合大型应用。此外,轻量级的Svelte也值得关注,其编译时处理设计提升了应用性能。掌握这些框架,结合深刻理解和灵活运用,助你在前端领域脱颖而出。
26 9
|
1月前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
69 41
|
20天前
HTML 框架1
HTML框架允许在同一个浏览器窗口中同时显示多个页面。`<iframe>`标签用于嵌入其他网页,基本语法为 `<iframe src="URL"></iframe>`。可以通过设置 `height` 和 `width` 属性来调整 iframe 的大小,例如:`<iframe src="demo_iframe.htm" width="200" height="200"></iframe>`。属性值可以是像素或百分比。
|
29天前
|
JavaScript 前端开发 测试技术
前端全栈之路Deno篇(五):如何快速创建 WebSocket 服务端应用 + 客户端应用 - 可能是2025最佳的Websocket全栈实时应用框架
本文介绍了如何使用Deno 2.0快速构建WebSocket全栈应用,包括服务端和客户端的创建。通过一个简单的代码示例,展示了Deno在WebSocket实现中的便捷与强大,无需额外依赖,即可轻松搭建具备基本功能的WebSocket应用。Deno 2.0被认为是最佳的WebSocket全栈应用JS运行时,适合全栈开发者学习和使用。
103 7
|
29天前
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
|
30天前
|
前端开发 JavaScript 中间件
前端全栈之路Deno篇(四):Deno2.0如何快速创建http一个 restfulapi/静态文件托管应用及oak框架介绍
Deno 是由 Node.js 创始人 Ryan Dahl 开发的新一代 JavaScript 和 TypeScript 运行时,旨在解决 Node.js 的设计缺陷,具备更强的安全性和内置的 TypeScript 支持。本文介绍了如何使用 Deno 内置的 `Deno.serve` 快速创建 HTTP 服务,并详细讲解了 Oak 框架的安装和使用方法,包括中间件、路由和静态文件服务等功能。Deno 和 Oak 的结合使得创建 RESTful API 变得高效且简便,非常适合快速开发和部署现代 Web 应用程序。
|
1月前
|
前端开发 JavaScript 开发者
qiankun(乾坤)微前端框架简介
qiankun(乾坤)微前端框架简介
137 1
下一篇
无影云桌面