首页 > 编程语言 >JavaScript模块化开发

JavaScript模块化开发

时间:2024-10-25 12:02:56浏览次数:1  
标签:Node CommonJS 模块化 JavaScript 规范 开发 模块

什么是模块化?

◼ 到底什么是模块化、模块化开发呢?
  事实上模块化开发最终的目的是将程序划分成一个个小的结构;
  这个结构中编写属于自己的逻辑代码,有自己的作用域,定义变量名词时不会影响到其他的结构;
  这个结构可以将自己希望暴露的变量、函数、对象等导出给其结构使用;
  也可以通过某种方式,导入另外结构中的变量、函数、对象等;
◼ 上面说提到的结构,就是模块;按照这种结构划分开发程序的过程,就是模块化开发的过程;
◼ 无论你多么喜欢JavaScript,以及它现在发展的有多好,它都有很多的缺陷:
  比如var定义的变量作用域问题;
  比如JavaScript的面向对象并不能像常规面向对象语言一样使用class;
  比如JavaScript没有模块化的问题;
◼ 对于早期的JavaScript没有模块化来说,确确实实带来了很多的问题;

模块化的历史

◼ 在网页开发的早期,Brendan Eich开发JavaScript仅仅作为一种脚本语言,做一些简单的表单验证或动画实现等,那个时候代码还是很少的:
  这个时候我们只需要讲JavaScript代码写到<script>标签中即可;
  并没有必要放到多个文件中来编写;甚至流行:通常来说JavaScript 程序的长度只有一行。
◼ 但是随着前端和JavaScript的快速发展,JavaScript代码变得越来越复杂了:
  ajax的出现,前后端开发分离,意味着后端返回数据后,我们需要通过JavaScript进行前端页面的渲染;
  SPA的出现,前端页面变得更加复杂:包括前端路由、状态管理等等一系列复杂的需求需要通过JavaScript来实现;
  包括Node的实现,JavaScript编写复杂的后端程序,没有模块化是致命的硬伤;
◼ 所以,模块化已经是JavaScript一个非常迫切的需求:
  但是JavaScript本身,直到ES6(2015)才推出了自己的模块化方案;
  在此之前,为了让JavaScript支持模块化,涌现出了很多不同的模块化规范:AMD、CMD、CommonJS等;
◼ 在我们的课程中,我将详细讲解JavaScript的模块化,尤其是CommonJS和ES6的模块化。

没有模块化带来的问题

◼ 早期没有模块化带来了很多的问题:比如命名冲突的问题
◼ 当然,我们有办法可以解决上面的问题:立即函数调用表达式(IIFE)
   IIFE (Immediately Invoked Function Expression)
◼ 但是,我们其实带来了新的问题:
  第一,我必须记得每一个模块中返回对象的命名,才能在其他模块使用过程中正确的使用;
  第二,代码写起来混乱不堪,每个文件中的代码都需要包裹在一个匿名函数中来编写;
  第三,在没有合适的规范情况下,每个人、每个公司都可能会任意命名、甚至出现模块名称相同的情况;
◼ 所以,我们会发现,虽然实现了模块化,但是我们的实现过于简单,并且是没有规范的。
  我们需要制定一定的规范来约束每个人都按照这个规范去编写模块化的代码;
  这个规范中应该包括核心功能:模块本身可以导出暴露的属性,模块又可以导入自己需要的属性;
  JavaScript社区为了解决上面的问题,涌现出一系列好用的规范,接下来我们就学习具有代表性的一些规范。

CommonJS规范和Node关系

◼ 我们需要知道CommonJS是一个规范,最初提出来是在浏览器以外的地方使用,并且当时被命名为ServerJS,后来为了体现它
的广泛性,修改为CommonJS,平时我们也会简称为CJS。
  Node是CommonJS在服务器端一个具有代表性的实现;
  Browserify是CommonJS在浏览器中的一种实现;
  webpack打包工具具备对CommonJS的支持和转换;
◼ 所以,Node中对CommonJS进行了支持和实现,让我们在开发node的过程中可以方便的进行模块化开发:
  在Node中每一个js文件都是一个单独的模块;
  这个模块中包括CommonJS规范的核心变量:exports、module.exports、require;
  我们可以使用这些变量来方便的进行模块化开发;
◼ 前面我们提到过模块化的核心是导出和导入,Node中对其进行了实现:
  exports和module.exports可以负责对模块中的内容进行导出;
  require函数可以帮助我们导入其他模块(自定义模块、系统模块、第三方库模块)中的内容;

模块化案例

标签:Node,CommonJS,模块化,JavaScript,规范,开发,模块
From: https://www.cnblogs.com/hdc-web/p/18502215

相关文章

  • 为什么 Spring Boot 的微服务架构被称为“现代应用开发的曙光”?这种设计真的解决了传
    目录1.微服务架构为何被称为“现代应用开发的曙光”1.1单体架构的问题1.2微服务架构的诞生与发展1.3微服务架构的挑战2.SpringBoot在微服务中的角色2.1自动化配置与微服务开发2.2SpringCloud生态中的微服务3.微服务架构是否真的解决了传统单体架构中的所......
  • 中国CRM市场深度解析:本土化定制开发的领军厂商与未来趋势
    目前,国内的CRM软件企业本土定制的需求愈来愈凸显,这深刻考验着服务商的综合水平。企业不再满足于通用化的CRM解决方案,而是期望系统能够深度融入其独特的业务流程、企业文化和市场环境中,实现精准匹配与高效运作本文将深入解析中国CRM市场的当前状况,探讨领军厂商的特色与优势,并预测......
  • 低代码开发平台有哪些功能
    低代码开发平台具备多种功能,主要包括:一、可视化开发界面;二、预置组件库;三、自动化代码生成;四、集成开发和部署工具;五、自定义业务逻辑;六、移动应用支持。其中,可视化开发界面使开发过程更直观,无需深入编码,通过拖放操作即可构建用户界面,提高开发效率。一、可视化开发界面低代码......
  • Go语言的移动开发能力和工具
    ###Go语言的移动开发能力和工具在探讨Go语言的移动开发能力和工具时,可以明确地说,Go语言支持移动开发,并提供了一系列工具和库来支持这一过程。Go的移动开发能力主要体现在其对Android和iOS平台的应用开发支持、提供的gomobile工具、以及对跨平台开发的支持。特别地,gomobile工具......
  • Spring Boot框架下中小企业设备管理系统开发
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理中小企业设备管理系统的相关信息成为必然。开发合适的中小企业设备管理系统,可以方便管理人......
  • 鸿蒙开发:什么是ArkTS语言
    ArkTS(也称为ArkTypeScript)是HarmonyOS的主力应用开发语言。面向万物互联时代,华为提出了“一次开发多端部署、可分可合自由流转、统一生态原生智能”三大应用与服务开发理念。针对多设备、多入口、服务可分可合等特性,华为提供了多种能力协助开发者降低开发门槛。HarmonyOS......
  • H5网页App开发和纯原生的App的差距是什么
    H5网页App和纯原生App有一系列显著的差异,主要体现在性能、用户体验、开发成本和平台独立性等方面。纯原生App通常提供更流畅的用户体验和更高的性能,但开发和维护成本相对较高。相比之下,H5网页App易于开发和维护,但可能在性能和用户体验上存在不足。在性能方面,纯原生App可以更有效......
  • 如何进行聊天机器人开发?
    开发聊天机器人需要遵循以下步骤:1.确定机器人的目标与功能;2.选择合适的技术和平台;3.设计对话流程;4.集成自然语言处理技术;5.持续优化与学习。首先,确定机器人的主要任务和目的是关键。1.确定机器人的目标与功能在开发聊天机器人前,首先要明确其目的。是为了客服支持、销售助手、......
  • 实战篇:(二十一)Java 开发指南:避免 18个常见错误,提升你的编码效率
    实战篇:(二十一)Java开发指南:避免18个常见错误,提升你的编码效率Java作为一门成熟的编程语言,拥有丰富的生态系统与广泛的应用。然而,即使是经验丰富的开发者,也时常会在日常开发中犯一些常见的错误。这些错误不仅会影响代码的可读性,还可能造成性能问题甚至难以调试的Bug。本......
  • JavaScript 与 Rust 和 WebAssembly 集成
    偶然一次机会,接触了Rust的代码。当时想给团队小伙伴做演示,发现自己并不能在移动端按照文档生成演示demo。我就想,要是Rust代码能转化成JavaScript就好了。结果一搜,还真有。下面整理成文档,分享给大家。为大家解决问题,多提供一种思路、方式、方法。 一、分享的目的:▪由Rust、We......