iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript中如何使用import和require打包
  • 875
分享到

JavaScript中如何使用import和require打包

2024-04-02 19:04:59 875人浏览 独家记忆
摘要

这篇文章主要介绍了javascript中如何使用import和require打包,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:之前使用

这篇文章主要介绍了javascript中如何使用import和require打包,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

前言:

之前使用es6写代码,webpack打包后上线,一点问题没有,也看过打包后的代码,长的很乱,也没敢看看咋回事,加载后就是能运行!

今天通过个例子理解一下打包前,和打包后的代码!

1.创建文件夹,并在里面创建两个文件夹,app文件夹和public文件夹,app文件夹用来存放原始数据和我们将写的JavaScript模块,public文件夹用来存放之后供浏览器读取的文件(包括使用WEBpack打包生成的js文件以及一个 index.html 文件)。接下来我们再创建三个文件:

  • index.html --放在public文件夹中;

  • Greeter.js -- 放在app文件夹中;

  • main.js -- 放在app文件夹中;

项目结构

我们在 index.html 文件中写入最基础的html代码,它在这里目的在于引入打包后的js文件(这里我们先把之后打包后的js文件命名为 bundle.js ,之后我们还会详细讲述)。

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <title>sample Project</title>
 </head>
 <body>
  <div id='root'>
  </div>
  <script src="bundle.js"></script>
 </body>
</html>

我们在 Greeter.js 中定义一个返回包含问候信息的 html 元素的函数,并依据CommonJS规范导出这个函数为一个模块:

// Greeter.js
exports.greet= function() {
 var greet = document.createElement('div');
 greet.textContent = "Hi there and greetings!";
 return greet;
};
exports.USER_INFO = "userInfo";

main.js 文件中我们写入下述代码,用以把 Greeter模块 返回的节点插入页面。

//main.js 
 let {greeter,USER_INFO} =require('./Greeter.js');
console.log(USER_INFO);
document.querySelector("#root").appendChild(greeter());

使用webpack打包后:

(function(modules){     var installedModules = {};  function __webpack_require__(moduleId) {
    if (installedModules[moduleId]) {
      return installedModules[moduleId].exports;
    }
    var module = installedModules[moduleId] = {
      i: moduleId,
      l: false,
      exports: {}
    };
    modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    module.l = true;
    return module.exports;
  }
  __webpack_require__.m = modules;
  __webpack_require__.c = installedModules;
  __webpack_require__.d = function(exports, name, getter) {
    if (!__webpack_require__.o(exports, name)) {
      Object.defineProperty(exports, name, {
        configurable: false,
        enumerable: true,
        get: getter
      });
    }
  };
  __webpack_require__.n = function(module) {
    var getter = module && module.__esModule ?
    function getDefault() {
      return module['default'];
    }:
    function getModuleExports() {
      return module;
    };
    __webpack_require__.d(getter, 'a', getter);
    return getter;
  };
  __webpack_require__.o = function(object, property) {
    return Object.prototype.hasOwnProperty.call(object, property);
  };
  __webpack_require__.p = "";
  return __webpack_require__(__webpack_require__.s = 0);
})
(
[
(function(module, exports, __webpack_require__) {
  //main.js
  let {
    greeter,
    USER_INFO
  } = __webpack_require__(1);
  console.log(USER_INFO);
  document.querySelector("#root").appendChild(greeter());
}),
(function(module, exports) {
  // Greeter.js
  exports.greet = function() {
    var greet = document.createElement('div');
    greet.textContent = "Hi there and greetings!";
    return greet;
  };
  exports.USER_INFO = "userInfo";
})
]);

首先最为层是包裹着立即执行函数(加粗的内容),参数是一个数组,数组中每一项是对应的模块,每个模块包裹在 (function(module, exports, __webpack_require__) {//模块内容 });

立即执行函数运行执行  return __webpack_require__(__webpack_require__.s = 0);

也就是执行传入数组中的第一个模块main.js

将运行后的每个模块挂载到installedModules = {}上,当下个需要这个模块直接返回当前模块,不在运行代码块了!

接下来将require改为import看看打包后的如何实现

我们将 Greeter.js的信息改为如下 :

// Greeter.js
export default function() {
 var greet = document.createElement('div');
 greet.textContent = "Hi there and greetings!";
 return greet;
};
export const USER_INFO = "userInfo";
main.js 文件中的代码,修改后
//main.js 
import greet,{USER_INFO} from './Greeter.js';
console.log(USER_INFO);
document.querySelector("#root").appendChild(greet());

然后我们再次打包:

(function(modules) {
  var installedModules = {};
  function __webpack_require__(moduleId) {
    if (installedModules[moduleId]) {
      return installedModules[moduleId].exports;
    }
    var module = installedModules[moduleId] = {
      i: moduleId,
      l: false,
      exports: {}
    };
    modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    module.l = true;
    return module.exports;
  }
  __webpack_require__.m = modules;
  __webpack_require__.c = installedModules;
  __webpack_require__.d = function(exports, name, getter) {
    if (!__webpack_require__.o(exports, name)) {
      Object.defineProperty(exports, name, {
        configurable: false,
        enumerable: true,
        get: getter
      });
    }
  };
  __webpack_require__.n = function(module) {
    var getter = module && module.__esModule ?
    function getDefault() {
      return module['default'];
    }: function getModuleExports() {
      return module;
    };
    __webpack_require__.d(getter, 'a', getter);
    return getter;
  };
  __webpack_require__.o = function(object, property) {
    return Object.prototype.hasOwnProperty.call(object, property);
  };
  __webpack_require__.p = "";
  return __webpack_require__(__webpack_require__.s = 0);
})([(function(module, __webpack_exports__, __webpack_require__) {
  "use strict";
  Object.defineProperty(__webpack_exports__, "__esModule", {
    value: true
  });
  var __WEBPACK_IMPORTED_MODULE_0__Greeter_js__ = __webpack_require__(1);
  //main.js
  console.log(__WEBPACK_IMPORTED_MODULE_0__Greeter_js__["a"]);
  document.querySelector("#root").appendChild(Object(__WEBPACK_IMPORTED_MODULE_0__Greeter_js__["b"])());
}),
(function(module, __webpack_exports__, __webpack_require__) {
  "use strict";
  __webpack_exports__["b"] = (function() {
    var greet = document.createElement('div');
    greet.textContent = "Hi there and greetings!";
    return greet;
  });;
  const USER_INFO = "userInfo";
  __webpack_exports__["a"] = USER_INFO;
})]);

感谢你能够认真阅读完这篇文章,希望小编分享的“JavaScript中如何使用import和require打包”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网JavaScript频道,更多相关知识等着你来学习!

--结束END--

本文标题: JavaScript中如何使用import和require打包

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

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

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

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

下载Word文档
猜你喜欢
  • JavaScript中如何使用import和require打包
    这篇文章主要介绍了JavaScript中如何使用import和require打包,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:之前使用...
    99+
    2024-04-02
  • Js模块打包exports require import的用法和区别
    目录1、Commonjs之 exports和require用法1.1 CommonJS导出之module.exports1.2 CommonJS导入之require2、ES6 Mod...
    99+
    2024-04-02
  • JavaScript中require和import的区别详解
    ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用requ...
    99+
    2024-04-02
  • JavaScript中require和import的区别是什么
    本文小编为大家详细介绍“JavaScript中require和import的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript中require和import的区别是什么”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-02
  • JavaScript中如何使用import语句
    这篇文章主要介绍JavaScript中如何使用import语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!JavaScript中有import语句。import语句用于将某个模块中...
    99+
    2024-04-02
  • Java中如何打包接口,JavaScript中如何使用?
    Java是一种广泛使用的编程语言,主要用于开发企业级应用程序。在Java中,打包是将一组相关的类和接口组织在一起的过程,以便于在不同的应用程序中重用。在本文中,我们将介绍如何打包Java接口,并在JavaScript中使用它们。 一、Ja...
    99+
    2023-08-03
    打包 接口 javascript
  • java如何使用import导入包
    在Java中,要使用import语句导入一个包,你需要按照以下步骤进行操作:1. 打开你的Java源代码文件,在文件的顶部添加`im...
    99+
    2023-09-15
    java import
  • PHP中require()函数如何使用
    PHP中require()函数如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。调用文件config.inc的程序代码:< php  &...
    99+
    2023-06-17
  • 如何在Python和Laravel中使用数组打包?
    数组打包是一种将多个数组合并成一个数组的方法。在Python和Laravel中,都有相应的函数可以实现数组打包功能。本文将介绍如何在Python和Laravel中使用数组打包。 一、Python中使用数组打包 Python中使用数组打包的...
    99+
    2023-06-03
    打包 数组 laravel
  • Java中如何打包JavaScript路径?
    在Java开发中,我们通常需要将JavaScript文件打包到我们的Web应用程序中。这使得我们的应用程序更加完整和易于维护。在这篇文章中,我将向你介绍如何打包JavaScript路径,以及如何将JavaScript文件添加到我们的Jav...
    99+
    2023-09-10
    打包 javascript path
  • nodejs中require如何用
    本文小编为大家详细介绍“nodejs中require如何用”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs中require如何用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2024-04-02
  • PHP中怎么使用include和require
    这篇文章主要介绍PHP中怎么使用include和require,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、P...
    99+
    2023-06-14
  • PHP中require和require_once怎么使用
    在PHP中,`require`和`require_once`都是用于引入文件的命令。使用`require`命令时,需要指定一个文件路...
    99+
    2023-08-11
    PHP
  • 如何使用 Go 和 Git 打包容器?
    随着云计算的迅速发展,容器技术逐渐成为了应用程序部署的主流方式。而在容器技术中,Docker 无疑是最受欢迎的容器引擎之一。Docker 的出现大大简化了应用程序部署的流程,但是为了更好的利用 Docker,我们需要学会如何使用 Go 和...
    99+
    2023-09-06
    git 容器 打包
  • 如何使用Idea打包jar包
    小编给大家分享一下如何使用Idea打包jar包,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、创建项目创建一个简单的Java项目,其中Main.java为主函数...
    99+
    2023-06-15
  • PHP中的include和require怎么使用
    本篇内容介绍了“PHP中的include和require怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概要require() 语句的...
    99+
    2023-06-27
  • Python中打包和解包(*和**)的使用详解
    目录一、打包参数二、解包参数三、几点注意*和**在函数的定义和调用阶段,有着不同的功能,并且,*和**不能离开函数使用! 一、打包参数 * 的作用:在函数定义中,收集所有位置参数到一...
    99+
    2024-04-02
  • 在Python中如何使用distutils打包
    本篇文章给大家分享的是有关在Python中如何使用distutils打包,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python中使用distutils打包使用distuti...
    99+
    2023-06-17
  • go中import包的坑如何解决
    这篇文章主要介绍“go中import包的坑如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go中import包的坑如何解决”文章能帮助大家解决问题。方案一:使用GOROOT和GOPATH(以我...
    99+
    2023-07-02
  • 如何使用r.js打包模块化的javascript文件
    这篇文章主要介绍了如何使用r.js打包模块化的javascript文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简单打包【项目结构】以一...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作