iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JavaScript 模块化如何理解
  • 853
分享到

JavaScript 模块化如何理解

2023-06-22 06:06:11 853人浏览 泡泡鱼
摘要

这期内容当中小编将会给大家带来有关javascript 模块化如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:1.概念将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并

这期内容当中小编将会给大家带来有关javascript 模块化如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

    前言:

    1.概念

    • 将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起;

    • 块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信。

    2.模块化的好处

    • 避免命名冲突(减少命名空间污染);

    • 更好的分离, 按需加载;

    • 更高复用性;

    • 更高可维护性。

    3.引入多个script标签后出现的问题

    • 请求过多(依赖的模块过多,请求就会过多);

    • 依赖模糊(不知道模块的具体依赖关系,导致加载顺序出错);

    • 难以维护(以上两个原因就会造成这个结果)。

    //index.html<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title>  <script src="Jquery.js"></script>  <script src="module.js"></script></head><body>  <div>123</div></body><script>  myModule.foo();  myModule.bar();  console.log(myModule.data) ;  myModule.data = 'xxxx';  myModule.foo();</script></html>
    //module.js IIFE(匿名函数自调用);(function(window,$){  let data = "www.baidu.com";  function foo() {    console.log(`foo() ${data}`);    //这里需要使用jQuery库    $('body').CSS('background', 'red')  }  function bar() {    console.log(`bar() ${data}`);    otherFun();  }  function otherFun() {    console.log(`otherFun()`);  }  window.myModule = { foo, bar };})(window, jQuery)

    一、CommonJS

    • node 就是基于commonJS模块规范,每一个文件就是一个模块;有自己的作用域;在服务器端,模块的加载是同步的;在浏览器端,模块需提前编译打包处理

    特点:

    • 所有代码都运行在模块作用域,不会污染全局作用域;

    • 模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。

    • 模块加载的顺序,按照其在代码中出现的顺序。

    语法:

    • 暴露模块:js module.exports = value 或者 js exports.xxx = value

    • 引入模块:js require('xxx') 如果是第三方模块,xxx为模块名;如果是自定义模块,xxx为模块文件路径

    CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

    require命令用于加载模块文件。require命令的基本功能是,读入并执行一个JavaScript文件,然后返回该模块的exports对象。如果没有发现指定模块,会报错。

    CommonJS模块的加载机制是,输入的是被输出的值的拷贝。也就是说,一旦输出一个值,模块内部的变化就影响不到这个值

    二、AMD

    • 相比于CommonJS的同步加载模块,AMD更适合于浏览器端的非同步模块加载,因为AMD允许指定回调函数

    • 目录结构

    JavaScript 模块化如何理解

    使用require.js

    <!-- index.html --><script src="https://cdn.bootcdn.net/ajax/libs/require.js/2.3.6/require.js"></script>
    //定义一个没有依赖的module1模块define('module1', () => {  let count = 0;  const add = () => ++ count;  const reset = () => count = 0;  const upperCase = string => string.toUpperCase()  return {    add,    reset,    upperCase  }})
    //定义一个有依赖的module2模块,依赖module1define('module2',['module1'], (module1) => {  const showMsg = () => module1.upperCase('hello-amd');  return {    showMsg  }})
    <!-- 在html文件中使用模块 --><body><script>  require.config({    paths: {      module1: './modules/module1',      module2: './modules/module2'    }  })  require(['module1', 'module2'], (module1, module2) => {    console.log(module1.add()) // 1    console.log(module1.reset()) //0    console.log(module2.showMsg()) //HELLO-AMD  })</script></body>

    三、CMD

    • CMD集CommonJS与AMD的优点于一身,cmd 规范专门用于浏览器端,模块的加载是异步的,模块使用时才会加载执行(实现了按需加载,而AMD是不支持按需加载的)

    • 目录结构

    JavaScript 模块化如何理解

    使用sea.js

    <script src="Https://cdn.bootcdn.net/ajax/libs/seajs/3.0.3/sea.js"></script>
    //定义模块module1define((require, exports, module) => {  let string = 'I am a string';  const readString = () => 'module1 show() ' + string;  //向外暴露  exports.readString = readString;})
    //定义模块module2define((require, exports, module) => {  exports.msg = "正是在下啊"})
    //定义模块moduledefine((require, exports, module) => {  //引入依赖模块(同步)  var module1 = require('./module1');  console.log(module1.readString()) // module1 show() I am a string  //引入依赖模块(异步)  require.async('./module2', md2 => {    console.log(`这是异步引入的:${md2.msg}`) //这是异步引入的:正是在下啊  })})
    <!-- html文件使用module --><body><script>  seajs.use('./modules/module')</script>

    四、es6模块化

    ES6 模块的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS 和 AMD 模块,都只能在运行时确定这些东西。
    两个关键字 import和export

    • import 导入

    • export 导出

    //mian.jsexport default {  showMsg() {    console.log('hahahahahah')  }}export const msg = "正是花好月圆时!"//index.jsimport module1 from "./module1"; //对应export defaultmodule1.showMsg()import { msg } from './module1'; //对应exportconsole.log(msg)

    上述就是小编为大家分享的JavaScript 模块化如何理解了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: JavaScript 模块化如何理解

    本文链接: https://www.lsjlt.com/news/302925.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 如何理解JavaScript模块化
      目录1. 浏览器支持2. export 导出模块3. import 导入模块4. 创建模块对象5. export import 中转站6. 动态加载模块1. 浏览器支持 使用Java...
      99+
      2022-11-12
    • JavaScript 模块化如何理解
      这期内容当中小编将会给大家带来有关JavaScript 模块化如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:1.概念将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并...
      99+
      2023-06-22
    • JavaScript 模块化详解
      目录前言:1.概念2.模块化的好处3.引入多个script标签后出现的问题一、CommonJS二、AMD三、CMD四、ES6模块化前言: 1.概念 将一个复杂的程序依据一...
      99+
      2022-11-12
    • 如何理解Node.js模块化
      本篇内容主要讲解“如何理解Node.js模块化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Node.js模块化”吧!正文在Node.js中,内置了两个...
      99+
      2022-10-19
    • 如何理解JavaScript中的ES模块
      如何理解JavaScript中的ES模块,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。模块在每个编程语言中都能找到。它是一种能在一个代码块...
      99+
      2022-10-19
    • 如何理解Go语言的模块化
      本篇内容介绍了“如何理解Go语言的模块化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!环境变量学习 go 语言的第一步,当然是安装以及环境变...
      99+
      2023-06-15
    • JavaScript高级语法中的模块化怎么理解
      这篇文章将为大家详细讲解有关JavaScript高级语法中的模块化怎么理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是模块化?到底什么是模块化、模块...
      99+
      2022-10-19
    • python的二进制转化模块如何理解
      这篇文章将为大家详细讲解有关python的二进制转化模块如何理解,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在pyton中,通过struct模块来对二进制进行转换,主要包括两大类函数,即用...
      99+
      2023-06-22
    • webpack模块化的原理解析
      目录commonjs编译结果require 函数ES Module编译结果v5 的变化两种模块化交互编译结果总结commonjs 在webpack中既可以书写commonjs模块也可...
      99+
      2023-02-28
      webpack模块化 webpack模块化原理
    • JavaScript实现组件化和模块化方法详解
      目录组件化和模块化模块化组件化Vue中的组件化组件化和模块化 为什么会有组件化和模块化?当我们的项目复杂度不断上升,项目维护成本逐渐提高之后,对于旧项目的维护就变得格外困难。前端如果...
      99+
      2023-05-20
      JS组件化和模块化 JS组件化 JS模块化
    • JavaScript模块化开发流程分步讲解
      目录1、使用传统的全局命名空间2、使用对象的写法3、使用命名空间的写法4、使用IIFE的写法接触了Vue模块化开发才发现JavaScript组件化开发的演变一直在继续,以前也没有特别...
      99+
      2023-01-28
      JS模块化开发 JS模块化
    • 如何通过JavaScript实现组件化和模块化
      今天小编给大家分享的是如何通过JavaScript实现组件化和模块化,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。组件化和模块化为什么会有组件化和模块化?当我们的项目复杂度不断上升,...
      99+
      2023-07-06
    • 如何解决Systemjs模块化问题
      这篇文章主要介绍“如何解决Systemjs模块化问题”,在日常操作中,相信很多人在如何解决Systemjs模块化问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决Sy...
      99+
      2022-10-19
    • javascript模块化怎么使用
      这篇文章主要介绍“javascript模块化怎么使用”,在日常操作中,相信很多人在javascript模块化怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”javascript模块化怎么使用”的疑惑有所...
      99+
      2023-07-06
    • 关于什么是javascript模块化以及为何使用模块化开发
      模块化是一种软件开发的设计模式,它将一个大型的软件系统划分成多个独立的模块,每个模块都有自己的功能和接口,并且能够与其他模块独立地工作。  先来一段八股文 模块化开发可以带...
      99+
      2023-05-15
      javascript javascript模块化
    • 详解NodeJS模块化
      目录一、前言二、正文2.1、什么是模块2.2、Resolving2.3、require.resolve2.4、模块间的父子依赖关系2.5、exports, module.export...
      99+
      2022-11-12
    • JavaScript ES6 Module模块详解
      目录0.什么是Module1.Module 的加载1.1 方式一1.2 方式二2.导出和导入2.1 一个模块的导出可以被其它模块导入,并访问。2.2 没有导出,也可以将其导入2.3 ...
      99+
      2022-11-12
    • 详解Python模块化--模块(Modules)和包(Packages)
      目录引言Python Modules模块导入模块①导入整个模块②导入模块中的特定函数③导入模块中的所有函数给导入的模块一个别名单独运行模块加速模块加载Python Packages包引用包(Package)中的模块引...
      99+
      2022-06-02
      Python Modules模块 Packages包
    • 怎么理解Node.js中node的模块化
      这篇文章主要介绍“怎么理解Node.js中node的模块化”,在日常操作中,相信很多人在怎么理解Node.js中node的模块化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
      99+
      2022-10-19
    • Python的类与模块化怎么理解
      这篇文章主要介绍“Python的类与模块化怎么理解”,在日常操作中,相信很多人在Python的类与模块化怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python的类与模块化怎么理解”的疑惑有所帮助!...
      99+
      2023-06-22
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作