【问题标题】:How do i write this require as an es6 import statement我如何将这个要求写成 es6 导入语句
【发布时间】:2017-07-23 14:54:18
【问题描述】:

问题

我有这个要求声明

require('smoothscroll-polyfill').polyfill();

但我想把它写成 es6 import 语句

我试过了

import 'smoothscroll-polyfill';

import * as 'smoothscrollPolyfill' from 'smoothscroll-polyfill';

但是不能让它正常工作,那么导入这样的包的正确方法是什么?

【问题讨论】:

  • 如果没有看到您正在导入的模块中的导出,很难回答这个问题。

标签: javascript node.js import ecmascript-6


【解决方案1】:

您可以分两部分进行,首先是导入,然后是函数调用:

如果polyfill 本身是一个命名导出并且它并不关心this 在被调用时是什么:

import {polyfill} from 'smoothscroll-polyfill';
polyfill();

(你现在confirmed 就是这样。)


为了完整起见,在确认上述内容之前,我还列出了其他可能对其他人有用的其他可能性:

如果polyfilldefault 导出的属性(而不是它自己命名的导出),那么我们导入默认值(import 语句中没有{})然后使用它的属性:

import smoothScrollPolyFill from 'smoothscroll-polyfill';
const polyfill = smoothScrollPolyFill.polyfill();

如果smoothScrollPolyFill 部分是一个命名 导出并且polyfill 是其上的一个属性,那么我们将在import 上使用{}

import {smoothScrollPolyFill} from 'smoothscroll-polyfill';
const polyfill = smoothScrollPolyFill.polyfill();

【讨论】:

  • import {polyfill} from 'smoothscroll-polyfill'; 就像一个魅力。也感谢您的解释。
  • @JoeLloyd:很高兴有帮助。
【解决方案2】:

改用import {} from '...'

 import {polyfill} from 'smoothscroll-polyfill';//ref polyfill from 'smotthscroll-polyfill'
 polyfill();//ref a method,so you must call it after imported.

【讨论】:

    【解决方案3】:

    假设你使用 Babel 或类似的东西来提供 CommonJS 模块和 ES6 模块之间的兼容性,语法看起来像这样:

    import smoothscrollPolyfill from "smoothscroll-polyfill";
    smoothscrollPolyfill.polyfill();
    

    【讨论】:

      猜你喜欢
      • 2022-06-17
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 2017-05-28
      • 1970-01-01
      • 2013-07-28
      相关资源
      最近更新 更多