代码拆分如何与导入/导出以及babel和webpack一起使用?

纳米级

我想回答

何时使用import / export以及何时使用require()/ module.exports但是当我尝试挖掘时,它似乎变得复杂起来。

这是我的理解

  • require()/ module.exports:这是模块系统的nodejs实现。这将同步加载模块。
  • 使用es6,我们可以使用导入/导出。医生

import语句用于导入由另一个模块导出的绑定。无论您是否声明导入模块,都处于严格模式。除非此类脚本具有type =“ module”,否则无法在嵌入式脚本中使用import语句。

Ques1通常如何与babel或webpack或浏览器一起使用?

在探索过程中,我遇到了诸如CommonJ,requireJ,异步模块定义(AMD)之类的东西

Ques2:我更想知道时间表,因为这些事情在javascript中是如何演变的?

乔纳斯·威尔姆斯

通常,如何与babel或webpack或浏览器一起使用?

Babel和Webpack遵循ES规范,并将import/export语句转换为一个文件。由于它们还支持require语法,因此它们通常将import语句转换为require()调用,将export语句转换为module exports,然后随模块一起提供自定义加载程序。

 // A.js
 export default function() { }

 // B.js
 import A from "./A";
 A();

然后将其转换为以下require语法:

 //A.js
 exports.default = function() {};

 //B.js
 var A = require("./A").default;
 A();

然后可以将其包装为:

 (function() { // prevent leaking to global scope
   // emulated loader:
   var modules = {};

   function require(name) { return modules[name]; }

   function define(name, fn) {
     var module = modules[name] = { exports: {} };
     fn(module, module.exports, require);
   }


  // The code:
  define("A", function(module, exports, require) {
      // A.js
     exports.default = function() { };
  });

  define("B", function(module, exports, require) { 
    // B.js
   var A = require("A").default;
    A();
  });
 })();

这些东西在javascript中是如何演变的?

几年前,写JS仅限于浏览器,而加载多个js源的唯一方法是使用多个<script>标签并使用全局对象交换功能。那太丑了。

然后发明了Nodejs,他们需要一种更好的方法来处理模块并发明了require()东西。

规范的作者看到为此需要本机语法,因此介绍了import/ export

然后,Babel和其他人写了翻译。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使导出默认值与Babel,webpack和Node.js一起使用

如何将Webpack与babel-loader和flow一起使用

将Webpack与babel和babel-preset-react和babel-preset-es2015一起使用

如何将Webpack babel-loader和es6与worker-loader一起使用?

如何使用webpack和babel导入highcharts

Bootstrap 4,Popper.JS和WebPack -“导入和导出可能仅与sourceType:module一起出现”

不能将es6导入和导出与sequelize一起使用

将本地npm库与es6,babel和webpack一起使用

导入一个不与React和Webpack一起使用的rxjs运算符

在引用模块的导出名称时,导入如何与节点模块一起使用?

将babel-loader与webpack一起使用时如何指定cacheDirectory选项?

将全名拆分为first和sur name,然后结合代码与程序一起使用

Webpack:如何将CommonsChunkPlugin与多个拆分包一起使用

我如何才能使serverless-webpack与babel.v8一起使用来解决-错误:插件/预设文件不允许导出对象,只能导出功能?

如何使Winston与Webpack一起使用?

Tensorflow的TripletSemiHardLoss和TripletHardLoss如何使用,以及如何与暹罗网络一起使用?

如何更改此ggplot代码,使其与导入的Excel数据一起使用?

.pack()和.place()之间的区别以及如何一起使用?

将useState与[]和不与之一起使用,以及与{}一起使用时的区别

如何使用等级/加入以及一起使用

如何键入将在TypeScript中与命名导入一起导入的未知导出?

如何将babel与webpack一起使用以实现ie11兼容性

什么是模拟以及它如何与PrincipalContext一起使用

什么是curl以及如何与nodejs一起使用?

如何导出变量以与sudo一起使用?

如何使用CommonJS模块将Webpack和ES6与依赖项一起使用?

如何通过此简单代码使用导入和导出?

如何将ES6导入和'request'npm模块一起使用

语法错误:“导入”和“导出”可能仅与“ sourceType:模块”一起出现-Gulp