我对在 ember-cli 中导入依赖项感到困惑,尤其是关于标准 AMD 案例,如 official Ember Cli document 中所述.该文档没有提供太多示例,在我看来它假设读者对 AMD 有很好的了解,但我并非如此。我的直接用例是 import math.js。不幸的是,official document of math.js不提供有关使用 Ember Cli 导入的示例。然后,我找到了this post有相对清晰的例子,特别是下面的例子似乎很相关。
app.import({
development: 'vendor/lodash/dist/lodash.js',
production: 'vendor/lodash/dist/lodash.min.js'
}, {
'lodash': [
'default'
]
});
然后,我用 math.js 做了类似的事情,如下所示:
app.import({
development: 'bower_components/mathjs/dist/math.js',
production: 'bower_components/mathjs/dist/math.min.js'
}, {
'mathjs': [
'default'
]
});
但是,它不起作用。当我尝试将它与
一起使用时import mathjs from 'mathjs'
我遇到了一个错误。最终,我使用了以下解决方案:
// Brocfile.js
app.import('bower_components/mathjs/dist/math.min.js');
// some controller.js
var math = window.math
虽然上述解决方案有效,但我不喜欢它,因为它可能会发生名称冲突。此外,根据 math.js 的文档,在我看来它应该支持标准的 AMD 类型的导入。
所以,我的问题如下。
1. 在上面的lodash例子中,'default'是什么意思?这是对相应模块中导出的任何内容的一般引用吗?如何判断我是否可以通用使用它(例如,math.js)?
2. 如果一个模块支持require.js,那么它是一个标准的AMD模块是真的吗?如果是这样,给出如下代码:
require.config({
paths: {
mathjs: 'path/to/mathjs',
}
});
require(['mathjs'], function (math) {
// use math.js
math.sqrt(-4); // 2i
});
如何将它映射到 Ember Cli 代码?
最佳答案
这有点麻烦,但由于 mathjs 不公开/支持命名的 AMD 模块,您不能在 app.import 中使用额外的语法。
你有两个选择:
安装 ember-browserify
ember 安装 ember-browserify
将 CommonJS 库安装为 NPM 包
npm install --save-dev mathjs
使用带有常规 import 语法的 NPM 包
从 'npm:mathjs' 导入 mathjs;
您需要做的是“填充”库,以通过import 语句使其可用。我还是不知道shim这个词是什么意思<>
如果您有兴趣创建一个 bower 包,例如ember-cli-mathjs-shim 然后您可以使用它并让其他人也可以使用它。这方面的一些例子是:
但如果您不愿意这样做,我建议您将以下内容添加到您的项目中:
vendor/shims/math.js - 在 vendor 下创建一个 shims 文件夹(vendor 是你依赖的地方来自 NPM 或 Bower - Brocfile 似乎无法从除此处以外的任何地方 app.import - 例如 app/shims 或简单的 shims 在根级别不起作用)
vendor/shims/math.js
(function() {
/* globals define, math */
function mathJSModule() {
'use strict';
return { 'default': math };
}
define('mathjs', [], mathJSModule);
})();
Brocfile.js
app.import('bower_components/mathjs/dist/math.js');
app.import('vendor/shims/math.js', {
exports: {
'mathjs': [ 'default' ]
}
});
这里的顺序很重要。
关于javascript - 在 ember-cli 中导入依赖项(例如,导入 math.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443351/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
有什么方法可以告诉sidekiq一项工作依赖于另一项工作,并且在后者完成之前无法开始? 最佳答案 仅使用Sidekiq;答案是否定的。正如DickieBoy所建议的那样,您应该能够在依赖作业完成时将其启动。像这样。#app/workers/hard_worker.rbclassHardWorkerincludeSidekiq::Workerdefperform()puts'Doinghardwork'LazyWorker.perform_async()endend#app/workers/lazy_worker.rbclassLaz
我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解
遍历nokogiri并使用xpath选择元素相当容易。我需要这个反之亦然,意思是:我需要例如在nokogiri节点上调用.to_xpath以获取元素的完整xpath以将其存储在记录中。有人知道这样做的方法吗? 最佳答案 我能想到的最简单的方法是:Nokogiri::CSS.xpath_fornode.css_path编辑:您也可以尝试使用path方法。 关于ruby-如何从nokogiri对象获取标识符(例如xpath)?,我们在StackOverflow上找到一个类似的问题:
我正在尝试创建一个与compass一起使用的本地配置文件,这样我们就可以处理开发人员机器上的不同导入路径。到目前为止,我已经尝试将文件导入到异常block中,以防它不存在,然后进一步使用该变量:local_config.rbVENV_FOLDER='venv'config.rbVENV_FOLDER='.'beginrequire'local_config.rb'rescueLoadErrorendputsVENV_FOLDER通常我是一名Python开发人员,所以我希望导入将VENV_FOLDER的值更改为venv,但它仍然是。之后。有没有一种方法可以导入local_config.r
我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1