Typescript编译后如何直接导入RxJs模块到Browser(无需Angular、Webpack、LiteServer)

问题描述 投票:0回答:1

我的 RxJs 代码在 Node 上运行,目前它编译为 Script.js,这是在 TS 编译后开始的

Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
...

目前我想在浏览器上启动我的代码
当然,第一步需要克服浏览器上的模块支持,为了第一个脚本是

<script>var exports = {};</script>

我不知道理论上如何正确,但它确实有效。 对我来说,第二步是安装和配置 Require.JS,例如以这种方式

<script src="http://requirejs.org/docs/release/2.3.6/comments/require.js"></script>
<script type="text/javascript">
    require.config({
      paths: {
          "rxjs": "https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.8.1/rxjs.umd.min.js",
          "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min"
      }
    });
  </script>
  <script type="text/javascript">
    require( ["jquery"],
      function ($) {
        console.log($("#myButton").val())
      }
    );
  </script>

目前我不需要 jQuery,我简单检查 Require.JS 如何使用它。是的,工作正常。
但下一步是正确链接 RxJS 和 RxJs/Operator - 我如何正确地做到这一点?
例如,我在 Script.JS 中将 () 替换为 [] - 这是 ReqjireJS 的要求,它从

开始
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require["rxjs"];
var operators_1 = require["rxjs/operators"];
...

但是浏览器显示“Uncaught TypeError: rxjs_1 is undefined”,这意味着 RxJS 未加载且其函数未定义。如何克服这个问题(当然不是 RxJS 的根命名空间,还有 RxJS/Operators)。

javascript typescript rxjs
1个回答
0
投票

我认为你不需要将它们分成

rxjs/operators
rxjs
,所有这些都存在于单个对象中
rxjs
,请找到下面的工作示例,希望它有帮助!!

requirejs.config({
    appDir: '.',
    baseUrl: 'js',
    paths: {
      rxjs: ['https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.8.1/rxjs.umd.min'],
    },
  });

  require(['rxjs'], function (rxjs) {
    console.log('Loaded :)');
    // simple
    rxjs.of(true).subscribe(console.log);
    // complex!
    rxjs
      .of(true)
      .pipe(
        rxjs.switchMap(() => rxjs.of('qwerty'))
      )
      .subscribe(console.log);
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.9/require.min.js"></script>

© www.soinside.com 2019 - 2024. All rights reserved.