如何导入“;旧的“;ES6中的ES5代码
How to import "old" ES5 code in ES6
我有一个ES6
应用程序(带有Babel 6.5
和Webpack
),它成功地导入了我的模块,如下所示:
import $ from 'jquery';
我想安装https://github.com/robflaherty/riveted/blob/master/riveted.js(Google Analytics的插件),但正如您所看到的,该代码没有类似module.exports = ...
的东西,它只定义了一个全局变量riveted
,但它有一个指向riveted.js
的明显有效的package.json
。
所以做一些类似的事情
import riveted from 'riveted'
riveted.init();
抛出错误:
_riveted2.default.init不是函数
import riveted from 'riveted'
riveted.init();
import 'riveted'
riveted.init();
抛出错误:
铆接未定义
import * as riveted from 'riveted'
riveted.init();
抛出错误:
riveted.init不是一个函数
如何访问铆接的init()函数?
您可以使用webpack导出加载程序:
var riveted = require("exports?riveted!riveted")
有关的详细信息,请参阅shiming模块概述
步骤1。修改riveted.js
在第18行之后添加一些代码。
// Browser global
root = !root && typeof self == 'object' ? self : root; // add this line
root.riveted = factory();
因为当es6导入文件时,this
是未定义的,所以我们使用self
。
self
比window
好,它在主线程和工作线程中都能工作。
步骤2。修改导入路径
像这样:
import './riveted.js';
riveted.init();
直接导入js文件需要./
或../
。
示例:
import `./file.js`
import `../file.js`
import `./a/b/file.js`
import `../a/b/file.js`
import `../../a/b/file.js`
铬测试。
相关文章:
- 如何在Javascript/ES6中的Aurelia浏览器应用程序中使用AWS S3
- 遍历 ES6 中的生成器
- 从ES6中的函数表达式访问类作用域
- 如何导入“;旧的“;ES6中的ES5代码
- 如何正确访问es6中的AngularJS服务
- 是$(()=>{})ES6中的jQuery匿名或就绪函数
- Babel:ES6 中的函数参数类型
- 返回 ES6 中的类以外的值
- CoffeeScript 是否支持 ES6 中的生成器功能?
- 使用嵌套类来模拟 ES6 中的命名空间
- Javascript ES6 中的静态构造函数
- ES6 中的解构语法错误
- 你怎么知道迭代器在 ES6 中的用途
- 什么是 ES6 中的动态导出
- ES6 中的主干模型和集合未正确构造
- 访问内部属性名称以计算 ES6 中的新属性
- 最好导出一个包含函数的对象,或者只导出ES6中的多个函数(有约定吗?)
- ES6中的JavaScript作用域已转换
- 如何在Chrome/Firefox中导出ES6中的变量
- 使用引导程序时出错&使用Browserify的ES6中的jQuery包