JS里怎么使用import 和require打包

这次给大家带来JS里怎么使用import 和require打包,JS里使用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 ,之后我们还会详细讲述)。

     sample Project    

登录后复制

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

// Greeter.jsexports.greet= function() { var greet = document.createElement('p'); 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('p');    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.jsexport default function() { var greet = document.createElement('p'); 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_0Greeter_js = webpack_require(1);  //main.js  console.log(WEBPACK_IMPORTED_MODULE_0Greeter_js["a"]);  document.querySelector("#root").appendChild(Object(WEBPACK_IMPORTED_MODULE_0Greeter_js["b"])());}),(function(module, webpack_exports, webpack_require) {  "use strict";  webpack_exports["b"] = (function() {    var greet = document.createElement('p');    greet.textContent = "Hi there and greetings!";    return greet;  });;  const USER_INFO = "userInfo";  webpack_exports["a"] = USER_INFO;})]);

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

如何修改vue请求数据中的值

JQuery如何选中select组件内指定的值

以上就是JS里怎么使用import 和require打包的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2778543.html

(0)
上一篇 2025年3月8日 15:34:58
下一篇 2025年3月8日 10:50:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Vue-cli项目如何获取本地的json文件

    这次给大家带来Vue-cli项目如何获取本地的json文件,Vue-cli项目获取本地的json文件的注意事项有哪些,下面就是实战案例,一起来看一下。 在自己做的vue demo项目中,我想通过在本地添加一些json数据,写到json文件中…

    编程技术 2025年3月8日
    200
  • 在node里怎么压缩合并JS文件

    这次给大家带来在node里怎么压缩合并JS文件,在node里压缩合并JS文件的注意事项有哪些,下面就是实战案例,一起来看一下。 现在UglifyJS的最新版本为 2.8.13,主要功能为JS的压缩和合并,下面直接进入教程: 安装: npm …

    编程技术 2025年3月8日
    200
  • 在angularjs压缩后文件报错怎么解决

    这次给大家带来在angularjs压缩后文件报错怎么解决,解决angularjs压缩后文件报错的注意事项有哪些,下面就是实战案例,一起来看一下。 问题出现原因是由于压缩之后变量变成了,e、s、t等,需要依赖注入的方法没有使用中括号注入,而在…

    编程技术 2025年3月8日
    200
  • js实现分页显示的代码

    本文主要和大家分享js实现分页显示的代码,希望能帮助到大家。 1.html页面中代码如下          登录后复制 2.HTML中js代码引用 登录后复制 $(function() {// 初始化信息paginate.use(1, 5)…

    2025年3月8日
    200
  • js实现跨域请求

    本文主要和大家分享js实现跨域请求,主要结合文字和代码,希望能帮助到大家。 1.安装flash,通过与flash交互,实现跨域,但此方法太麻烦,已经很少使用 2. 二是通过在同源域名下架设一个代理服务器来转发,JavaScript负责把请求…

    编程技术 2025年3月8日
    200
  • js数组知识总结分享

    1、 indexof方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相等运算符(===)进行判断,这会导致对nan的误判。 NaN!=NaN//ES5[…

    编程技术 2025年3月8日
    200
  • js表单验证实现代码

    本文主要和大家分享js表单验证实现代码,运用了正则表达式,进行匹配。希望能帮助到大家。 javascript的17种正则表达式  “^\d+$”  //非负整数(正整数 + 0) “^[0-9]*[1-9][0-9]*$”  //正整数 “…

    2025年3月8日
    200
  • js实现导出Excel代码

    本文主要和大家分享js实现导出Excel,主要以代码的形式和大家分享,希望能帮助到大家。     固定报表             $(document).ready(function() { if(${fmOrgDurationDays.…

    编程技术 2025年3月8日
    200
  • js中常用正则表达式分享

    本文主要和大家分享js中常用正则表达式,做了一个总结,希望能帮助到大家。 验证数字:^[0-9]*$ 验证n位的数字:^d{n}$ 验证至少n位数字:^d{n,}$ 验证m-n位的数字:^d{m,n}$ 验证零和非零开头的数字:^(0|[1…

    编程技术 2025年3月8日
    200
  • js中的继承知识详解

    本文我们主要和大家分享js中的继承知识详解,主要以文字和代码的形式和大家分享,希望能帮助到大家。 了解构造,实例,原型之间的关系,构造和实例的prototype指向原型,原型的constructor指向构造 子类需要重复利用父类的方法和属性…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论