为什么前端从简单的写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是如何被编写出来的,当然我们仍然需要抱着一颗好学的心,不断尝试去了解它的原理。

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


相关文章
|
3月前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
119 9
|
8天前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
26 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
1月前
|
移动开发 前端开发 搜索推荐
《前端技术基础》第01章 HTML基础【合集】
超文本标记语言(HyperText Markup Language,简称 HTML)是构建网页结构的基础标记语言。它与 CSS、JavaScript 协同,负责搭建网页“骨架”,用标签组织内容,像标题、段落、图片等元素,通过起始与结束标签(部分可单用,如`<img>`)界定层级与布局,将信息有序整合。标签含特定语义,向浏览器传达展示方式,为网页准确呈现及后续美化、交互筑牢根基。
83 25
|
2月前
|
人工智能 前端开发 JavaScript
前端基础之HTML
Web1.0、Web2.0 和 Web3.0 标志着互联网发展的三个阶段。Web1.0(静态互联网,1990年代初至2000年代初)以静态内容和单向信息流为主,用户仅能浏览。Web2.0(互动互联网,2000年代初至2010年代初)引入了用户生成内容和社交网络,内容动态且互动性强。Web3.0(语义互联网,2010年代至今)强调语义化、个性化、智能化及去中心化,结合AI、区块链等技术,提供沉浸式体验。HTTP和HTML作为互联网基础协议和技术,在各阶段不断演进,共同推动了现代互联网的发展。
前端基础之HTML
|
2月前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
3月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
68 6
HTML 框架2
iframe标签用于在当前页面中嵌入另一个HTML页面。通过设置frameborder属性为&quot;0&quot;,可以移除iframe边框。iframe的src属性用于指定要嵌入的页面URL。例如,使用`&lt;iframe src=&quot;https://www.runoob.com&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;`可以无边框地显示RUNOOB.COM页面。
|
3月前
|
前端开发 JavaScript API
前端界的秘密武器:掌握这些框架,让你轻松秒杀99%的同行!
前端开发日新月异,掌握几个明星框架如React、Vue.js和Angular,不仅能让工作更得心应手,还能轻松超越同行。React以高效的虚拟DOM和组件化著称;Vue.js简洁易懂,灵活性高;Angular提供全面的解决方案,适合大型应用。此外,轻量级的Svelte也值得关注,其编译时处理设计提升了应用性能。掌握这些框架,结合深刻理解和灵活运用,助你在前端领域脱颖而出。
49 9
HTML 框架1
HTML框架允许在同一个浏览器窗口中同时显示多个页面。`&lt;iframe&gt;`标签用于嵌入其他网页,基本语法为 `&lt;iframe src=&quot;URL&quot;&gt;&lt;/iframe&gt;`。可以通过设置 `height` 和 `width` 属性来调整 iframe 的大小,例如:`&lt;iframe src=&quot;demo_iframe.htm&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;&lt;/iframe&gt;`。属性值可以是像素或百分比。
|
4月前
|
JavaScript 前端开发 测试技术
前端全栈之路Deno篇(五):如何快速创建 WebSocket 服务端应用 + 客户端应用 - 可能是2025最佳的Websocket全栈实时应用框架
本文介绍了如何使用Deno 2.0快速构建WebSocket全栈应用,包括服务端和客户端的创建。通过一个简单的代码示例,展示了Deno在WebSocket实现中的便捷与强大,无需额外依赖,即可轻松搭建具备基本功能的WebSocket应用。Deno 2.0被认为是最佳的WebSocket全栈应用JS运行时,适合全栈开发者学习和使用。
213 7

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 4
    详解智能编码在前端研发的创新应用
  • 5
    巧用通义灵码,提升前端研发效率
  • 6
    智能编码在前端研发的创新应用
  • 7
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 8
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 9
    抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
  • 10
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡