我的 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)。
我认为你不需要将它们分成
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>