- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在最新版本的 Angular RC4 中,Rxjs 可以在 node_modules
或 npmcdn.com
目录中使用。
.umd.js
http://plnkr.co/edit/B33LOW?f=systemjs.config.js&p=preview
当然,这个设置会下载很多单独的 RxJS 文件,因为它是单独读取文件,而不是 .umd.js
GET https://npmcdn.com/rxjs@5.0.0-beta.6/bundles/Subject 404 ()
GET https://npmcdn.com/rxjs@5.0.0-beta.6/bundles/Observable 404 ()
GET https://npmcdn.com/rxjs@5.0.0-beta.6/bundles/observable/PromiseObservable 404 ()
...
plunker 尝试使用 .umd.js
和 system.config.js
失败
http://plnkr.co/edit/rVUNyz?p=preview&f=systemjs.config.js
系统js.config.js
var map = {
'app': 'app',
'@angular': 'https://npmcdn.com/@angular', // sufficient if we didn't pin the version
'@angular/router': 'https://npmcdn.com/@angular/router' + routerVer,
'@angular/forms': 'https://npmcdn.com/@angular/forms' + formsVer,
'@angular/router-deprecated': 'https://npmcdn.com/@angular/router-deprecated' + routerDeprecatedVer,
'angular2-in-memory-web-api': 'https://npmcdn.com/angular2-in-memory-web-api', // get latest
'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6/bundles',
'ts': 'https://npmcdn.com/plugin-typescript@4.0.10/lib/plugin.js',
'typescript': 'https://npmcdn.com/typescript@1.9.0-dev.20160409/lib/typescript.js',
};
//packages tells the System loader how to load when no filename and/or no extension
var packages = {
'app': { main: 'main.ts', defaultExtension: 'ts' },
'rxjs': { main: 'Rx.umd.js', defaultExtension: 'js' },
'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
};
“rxjs”似乎根本没有使用“package”部分。我看不出在包部分使用 rxjs
有什么区别。
为了让这个 plunker 工作,我必须将 map 部分更改为以下没有 bundles
'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6',
我的问题是“有没有办法在 Angular2 应用程序中使用 Rx.umd.js?”
最佳答案
我查看了 Rx.umd.js 文件,似乎整个包都使用了相对路径导入。这意味着当 rxjs 包的基础(在 map 中)具有/bundle 后缀时,它无法找到文件。
这是有道理的,因为您使用的是实际的 rxjs 包,而不是它的“/bundles”目录。
因此,您所要做的就是:
在 systemjs.config.js 的 map 部分更改
'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6/bundles',
到
'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6',
在包部分,更改
'rxjs': { main: 'Rx.umd.js', defaultExtension: 'js' },
到
'rxjs': { main: 'bundles/Rx.umd.js', defaultExtension: 'js' },
或者简单地说,/bundles 应该是包定义的一部分而不是映射,因为映射应该指向包的根目录。
这是一个更新的(工作!)插件,需要进行一些小的更改:http://plnkr.co/edit/3P6tLYMYOC24zc6JCkgO?f=systemjs.config.js&p=preview
--- 编辑(在@allenhwkim 评论之后)---
我进一步研究了它。请注意,systemjs.config.js 位于包(而非映射)部分内的 bundles/xxx 之后。参见例如第 59 行。
我的猜测是 Angular 有它自己对 rxjs 的引用并且它正确地定义了包所以看起来你的包定义被忽略了。
为了证明该包是相关的并已使用,我添加(在 plnkr 中)一个名为 rxjs1 的虚拟包,并尝试将其导入 inedex.html 文件中。现在运行 plnkr 并看到它已导入。尝试将包定义更改为不存在的内容,例如 Rxx.umd.js,您将收到错误消息。当您使用时,包 def 似乎是相关的
System.import('package-name');
不是
import { someClass } from 'package-name';
请注意,当您使用 plnkr 时,plnkr 并不总是跟踪包定义的更改,您需要刷新页面。
关于Angular2,systemjs,无法使用 Rx.umd.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38793349/
我正在尝试使用模块捆绑器 ParcelJS 构建一个模块。我希望这个特定模块对导入友好: 它应该是导入友好的 (ES6) 它应该是友好的(节点) 它应该是 script-src 友好的(浏览器) 它应
按照 Angular 教程,可以看到: 用于https://angular.io/docs/js/latest/guide/forms.html同时, 用于https://angular.io/d
我正在编写一个不可知的日志记录机制,它可以在浏览器和 nodejs 中运行(例如,nodejs 中缺少 console.debug)。 // UMD with no dependencies (fun
假设我有一个像这样的 UMD 模块(保存在 'js/mymodule.js' 中): (function (global, factory) { typeof exports === 'objec
我包含了一个需要 JQuery 2.2 的旧库,但我希望其他所有内容都使用最新版本的 JQuery。有问题的库混合使用 UMD(我认为),所以代码看起来像这样...... (function ($)
我正在定义一个 UMD 风格的模块,定义一个可以跨 CommonJS、AMD 和浏览器全局变量使用的模块,如下所示: (function (root, factory) { if (typeo
我正在创建我的第一个用于开源分发的 AngularJS 模块。我想以其他人易于使用的方式打包它。 UMD 项目提供了一个 pattern用于导出与 AMD、CommonJS(或至少 Node)和浏览器
我的设置 我正在将我的 .ts 模块“FooModule”编译成 UMD module在 Visual Studio 2015 中。我想扩展此 UMD 语法,以便在不存在模块加载系统时将模块作为后备注
我想将我的 React 组件打包为 umd lib。 下面是我的 webpack 设置: module.exports = { devtool: 'eval', entry: [ '.
我刚刚从 2.0.0-rc2 的 Angular QuickStart 跃进,并更新了 system-config.ts 文件来下载 rxjs 的 umd 文件,即 rxjs\bundles\Rx.u
我正在开发一个 javascript 库,它使用闭包编译器来组合/缩小和类型检查。为了避免噘嘴全局命名空间,我想使用 UMD 模式 & closue @export(or goog.exportSym
您好,我正在研究 RxJS。我可以通过在我的浏览器中引用它来简单地使用这个库: 它使用“Rx”的全局对象命名空间变量导入。我可以制作可观察对象并做所有有趣的事情。 当我将 src 更改为指向最新的
我已经安装了 three@^0.103.0,它有自己的类型定义。 在我项目的 src/global.d.ts 中我有: import * as _THREE from 'three' declare
我使用 browserify standalone option在以下 gulp 任务中生成一个 UMD 模块: gulp.task("bundle-source", function () {
我正在 .NET 4.0.30319.18444 上使用 IronPython 2.7.0.40 编写一些代码。在 IronPython 控制台中,如果我对我的模块进行任何更改,它们将不会生效(除非我
我在重写此代码以使其在“严格”模式下工作时遇到问题。由于“this”没有明确定义,我在编译时遇到 jshint 错误。我认为我的大脑没有足够的抽象思维来找到创造性的解决方案。任何帮助,将不胜感激。代码
我是 UMD 和 AMD 新手。我在 Browserify 中编写了一个 JS 库,并且刚刚接触到 UMD。我的理解是,如果我为每个模块都包含一段代码,我的模块应该能够在 CommonJs 和 AMD
我正在尝试加载 gridstack通过 ember-cli 在我的 Ember 应用程序中。我通过 bower 安装应用程序并导入到我的 ember-cli-build.js 文件中。它通过以下方式将
在像下面这样的简单 UMD 设置中,root 和 factory 在哪里/如何定义? (function (root, factory) { // environment detection
我正在尝试找出使用 UMD 工厂测试 Javascript 模块定义的最佳方法,类似于:https://github.com/umdjs/umd/blob/master/returnExportsGl
我是一名优秀的程序员,十分优秀!