【发布时间】:2020-09-30 23:19:56
【问题描述】:
现在all modern browser support javascript modules,我正在浏览器中尝试importing 代码。我们可以从unpkg.com 获取npm 模块,我找到了jspm 项目,它将npm 模块包装成可以被浏览器使用的格式。
但我仍然遇到问题,尤其是 RxJS。从版本 6 开始,RxJS 建议您像这样导入构造函数和运算符:
import { Observable, Subject, ReplaySubject, from, of, range } from 'rxjs';
import { map, filter, switchMap } from 'rxjs/operators';
但如果我尝试在浏览器中这样做:
import { Observable, Subject, ReplaySubject, from, of, range } from 'https://dev.jspm.io/rxjs@6';
import { map, filter, switchMap } from 'https://dev.jspm.io/rxjs@6/operators';
我收到以下错误:
未捕获的语法错误:请求的模块“https://dev.jspm.io/rxjs@6/operators”未提供名为“map”的导出
我可以通过导入整个 rxjs 模块并梳理出我需要的东西来解决它,就像我使用 CDN 一样:
import rxjs from 'https://dev.jspm.io/rxjs@6';
const { Observable } = rxjs;
import operators from 'https://dev.jspm.io/rxjs@6/operators';
const { map } = operators;
但这破坏了 Rx 团队为减少最终包大小等所做的努力。
我确信这不仅仅是一个 RxJS 问题。
为了让我们的开发 javascript(直接导入浏览器)看起来像我们最终想要传递给捆绑器的内容,这里的解决方案是什么?
【问题讨论】:
-
使用
import 'rxjs/add/operator...语法似乎更困难...我敢肯定答案并不简单,我要调查的(我手头有时间)是一种方法将 rxjs 的各个模块打包成单独的 es6 兼容单元。我认为可以使用rollup之类的东西来实现。
标签: javascript npm rxjs jspm unpkg