Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当RxJs通过脚本标记链接到时,为什么global.Rx未定义?_Javascript_Angular_Webpack_Bundling And Minification - Fatal编程技术网

Javascript 当RxJs通过脚本标记链接到时,为什么global.Rx未定义?

Javascript 当RxJs通过脚本标记链接到时,为什么global.Rx未定义?,javascript,angular,webpack,bundling-and-minification,Javascript,Angular,Webpack,Bundling And Minification,我正在设置一个AngularJS 2应用程序,该应用程序使用webpack捆绑。当前输出为2个文件:app.bundle.js和vendor.bundle.js。vendor.bundle.js包含我的第三方依赖项,当前约为1.8MB(未统一)。我的package.json中的依赖项如下所示 "dependencies": { "@angular/common": "2.0.0-rc.1", "@angular/compiler": "2.0.0-rc.1", "@angular/c

我正在设置一个AngularJS 2应用程序,该应用程序使用webpack捆绑。当前输出为2个文件:
app.bundle.js
vendor.bundle.js
vendor.bundle.js
包含我的第三方依赖项,当前约为1.8MB(未统一)。我的
package.json
中的依赖项如下所示

"dependencies": {
  "@angular/common": "2.0.0-rc.1",
  "@angular/compiler": "2.0.0-rc.1",
  "@angular/core": "2.0.0-rc.1",
  "@angular/http": "2.0.0-rc.1",
  "@angular/platform-browser": "2.0.0-rc.1",
  "@angular/platform-browser-dynamic": "2.0.0-rc.1",
  "@angular/router": "2.0.0-rc.1",
  "@angular/router-deprecated": "2.0.0-rc.1",
  "@angular/upgrade": "2.0.0-rc.1",
  "es6-shim": "^0.35.0",
  "reflect-metadata": "^0.1.3",
  "rxjs": "5.0.0-beta.6",
  "zone.js": "^0.6.12"
},
1.8MB对我来说似乎真的很大,并且会对用户体验产生重大影响,因为只有在下载了数MB数据之后,应用才会为用户加载。出于这个原因,我想将我的第三方依赖项外部化到CDN URL

但是,AngularJS 2.0.0-RC.1文件目前在我查找的任何CDN上都不可用(我尝试了cdnjs和Google)。作为一种临时措施,我想我可以链接到我的
节点模块
目录中的捆绑JS文件,如下所示:

<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.28/system.src.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.28/system-polyfills.src.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.17/angular2-polyfills.js"></script>
<script src="/node_modules/es6-shim/es6-shim.min.js"></script>
<script src="/node_modules/zone.js/dist/zone.js"></script>
<script src="/node_modules/reflect-metadata/Reflect.js"></script>
<script src="/node_modules/rxjs/bundles/Rx.js"></script> 
<script src="/node_modules/@angular/core/core.umd.js"></script>

我假设这些是要链接到的正确文件-尤其是
core.umd.js
。2.0.0-beta.17和2.0.0-RC.1之间的
node_模块的结构似乎完全不同,因此我在谷歌上找到的任何例子似乎都不再适用

此外,我在RC软件包中找不到
angular2 polyfills
,但如果没有它,浏览器会报告各种错误,因此我不得不链接到beta-17版本。为什么它不存在于RC中

剩下的问题是
global.Rx
未定义。我可以看到
global
被设置为
窗口
对象,但
Rx
未在其上定义。我做错了什么


一般来说,是否建议外部化所有第三方依赖关系以减少开销并利用CDN资源的浏览器缓存,还是干脆把它们捆绑到你的应用程序中,这样依赖关系管理就更干净了,窗口对象就不会被污染?

通常节点依赖关系不会在浏览器中运行,除非它们专门设计为与这两种依赖关系兼容。有没有Rx.min.js在哪里?是的,在同一个
节点\u modules\rxjs\bundles
文件夹中有一个
Rx.min.js
,但我假设这只是
Rx.js
的缩小版本?我的错误是,我没有发现您第一次通读时使用的是常规捆绑包。你可以试着看看它是否有效,如果你要走CDN路线。我发现,与随着项目的发展而捆绑相比,对所有内容使用CDN脚本最终都是一件令人头痛的事情,但我认为我没有足够的经验来正确回答这个问题。通常情况下,节点依赖关系不会在浏览器中运行,除非它们专门设计为与两者兼容。有没有Rx.min.js在哪里?是的,在同一个
节点\u modules\rxjs\bundles
文件夹中有一个
Rx.min.js
,但我假设这只是
Rx.js
的缩小版本?我的错误是,我没有发现您第一次通读时使用的是常规捆绑包。你可以试着看看它是否有效,如果你要走CDN路线。我发现,随着项目的发展,将CDN脚本用于所有内容最终都是一件令人头痛的事情,而不仅仅是捆绑,但我认为我没有足够的经验来正确回答这个问题。