问题标签 [systemjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - jspm:导入 jQuery 插件时出错
我正在尝试使用 jspm/SystemJS导入一个 jQuery 插件(即https://github.com/Mottie/Keyboard )。
起初,我只需键入以下命令即可安装模块:
然后,在导入 jQuery 之后,我在代码中添加了导入库的行:
但是,在运行代码时,我遇到了以下错误:
谷歌搜索错误并没有为我提供解决方案,至少不是我能理解的解决方案......我不知道这里是否有一些 jspm 大师可以帮助我?:)
提前谢谢了...
javascript - systemJS 的相对动态加载,使用 ES6/Babel 语法
我有一个用纯 ES6 编写的模块,我想在单独的 Web 应用程序中使用它。该模块的入口点是 main.js 并包含以下内容:
main.js
当我使用 systemJS 导入 thismain.js
时,它会尝试将这些依赖项解析到 Web 应用程序本地,而不是模块。
获取http://localhost:9000/dist/a.js 404(未找到)
我看到已经支持相对动态加载,但它涉及向函数传递一个额外的System.import
函数,我没有使用它——我使用的是 ES6 语法。
有没有关于如何做到这一点的示例或最佳实践?谢谢,麻烦您了。
jspm - 如何填充依赖于全局 jQuery 和 lodash 的非 CommonJS、非 AMD 包?
我第一次使用 jspm 并且已经遇到了障碍。
我需要弄清楚如何“填充”我们公司私有 npm 注册表中的专有脚本。
包裹:widget
- 驻留在私有 npm 注册表上
- 不是CommonJS、UMD/AMD 模块
- 取决于
lodash
andjquery
,但假设它们存在于全局范围内 - 暴露
Widget
在全球范围内
这是(假设的)代码
应用程序.js
索引.html
当我在本地 Web 服务器中运行此页面时,出现错误:
未捕获的参考:_ 未定义
我怎样才能提供一个“垫片” widget
?
javascript - 将动态 ES6 System.import 转译为 ES5(amd 或其他)
我通过调用它们来坚持动态请求 es6 模块:
它与es6-module-loader
浏览器中的 babel 运行时编译配合得很好,但是当我想将它预编译为ES5
语法(用于生产用途)时,它只是System.import
在代码中传递表达式,几乎没有改变,只是用System.import
等效System['import']
的 .
我已经尝试过gulp-babel
babelnpm
包。因此,当在浏览器中打开时,它会出现预期的模块加载错误。如何将我的代码转换AMD
为ES5
. 希望得到您的帮助。
angularjs - Angularjs 打字稿迁移
我有一个相当大的 angularjs 应用程序,我最终将迁移到 Angular 2。
我想采取我现在可以采取的任何步骤,使未来的迁移更容易。
我正在将我的控制器和服务转换为打字稿,并将我的文件组织在面向组件的文件夹结构中。
我真正想做的是使用 es6 样式的模块加载。
我知道 system.js 现在可以提供加载功能,我可以在 typescript 1.5 中使用 es6 import 语法。
我的问题是,我应该如何将两者结合使用?我应该从 typescript 输出 es6 模块并使用 system.js 模块加载生成的代码吗?还是需要其他步骤?
browserify - 从 ES6 模块生成 browserify 输出和 System.register() 模块?
我按照2ality的最终语法示例对 ES6 模块进行了编码,没有.js
后缀。
我还将模块组织成供应商/项目目录层次结构和模块命名方案,因为System.register()
模块格式有效地将已注册的模块放置到相同的命名空间中。
问题如下,如果我引用 2ality 的例子:
上面的代码可以直接在浏览器中正常工作,例如,使用traceur和es6-module-loader(请参阅参考资料example-es6-modules.html
)。当import
遇到声明时,.js
后缀似乎会自动附加到文件名,并被lib.js
加载。只要System.paths
配置为指向 vendor/project 目录的顶部,就可以直接在浏览器中执行 ES6 模块。
当使用SystemJS builder捆绑到单个System.register()
模块格式文件时,上述内容也可以正常工作(请参阅参考资料)。只要在生成模块时设置为供应商/项目层次结构的顶部(请参阅builder.js),那么模块就会以供应商/项目前缀命名。example-system-register.html
baseURL
问题是,当我尝试为 browserify 的输入生成 CommonJS 模块时,同时执行转换traceur
并且es6ify
不将.js
后缀附加到声明中的文件名时import
,会导致以下几行错误:
上面的错误是因为traceur没有给import声明添加.js
后缀。'gso/eonjs/MomentRecurRule'
否则会找到该文件。
如果 ES6 模块被转编译为单个 CommonJS 模块,browserify 会报告相同的错误,找不到要导入的文件 - browserify 也不会类似地自动.js
为导入文件名添加后缀。
那么问题是,ES6 模块在浏览器中执行没有问题,System.register()
也可以作为捆绑模块加载,但是如何转换为浏览器可执行文件?
javascript - SystemJS/Aurelia 应用程序在 PhantomJS 中中断
我一直在尝试在 Phantom 中进行一些测试,但 Aurelia/SystemJS 似乎在 Phantom 中出现了问题。
我已经用我自己的应用程序和 Aurelia 联系人应用程序示例对其进行了测试,它们略有不同。我将在这里列出我捕获的输出:
应用程序联系人:
我的应用程序:
FWIW 这些都在 Chrome/FF 中运行良好,我在 OS X 10.10 上运行 PhantomJS 1.9.8
这也是我用来测试这些和从控制台输出的幻影脚本:
要运行联系人应用程序(第一个示例),请运行以下命令:
这假设您已经安装了node
,jspm
并gulp
安装了。然后就可以运行上面的 phantomjs 脚本了。
有任何想法吗?
javascript - 如何使用 JSX 在本地运行 SystemJS/React 演示?
我现在正在关注这个视频教程,我坚持使用简单的 HelloWorld 应用程序。在时间位置12m:31s是我被卡住的地方,它应该显示HelloWorld
但它没有。
该应用程序使用 SystemJs、React 和 JSX。
要创建应用程序,请在终端中执行以下步骤(需要节点和 jspm):
npm init
(enter
对所有人)jspm init
(enter
几乎所有人,除了使用 babel)jspm install fetch=npm:whatwg-fetch
jspm install react
- 创建一个应用程序子文件夹创建
main.js
并将我的代码复制到其中 - 创建
index.html
到根目录。 - 然后用serve运行它
我认为问题是我的本地服务器。我用 nodejs 运行它,http-server
我认为 JSX 没有转译为 JS。提到的serve
服务器也无法正常工作。
我在浏览器控制台中收到此错误消息:
我如何使它工作?
这是我的代码,正是视频中的代码(这里没有运行,因为没有添加 js 文件):
node.js - System.import 异步模块加载与脚本标签同步加载冲突
我开始使用带有 atom/electron 的 JSPM 来移植我使用 Marionette 构建的网站。
我的所有应用程序都是围绕 Marionette 模块编写的,所以我想在启动应用程序之前加载所有 JavasSript 文件。
我遇到了System.import()
. 在 System.import 完成加载 App 代码后,您将如何加载脚本?
对于生产,我对此没有任何问题,因为我将连接单个 js 模块中的所有文件并使用 System.import 加载该模块,但这将是调试的噩梦,我更愿意单独加载文件。
有什么想法吗?谢谢!