在 Aurelia(奥雷利亚)中在全球范围内提供像 lodash 这样的库的最佳实践是什么?
What is best practice for making a library like lodash globally available in Aurelia?
我希望能够以方便的方式使用lodash(_(,但我正在寻找最好的"Aurealia"方法。我可以看到几个选项:
- 使用下载的副本或 CDN,只需包含
<script>
标记索引中的引用.html - 通过
npm
或jspm
(哪个??(安装,然后然后:- 在每个模块中
import
它,这似乎很乏味 - 使用 Aurelia
feature
或plugin
或globalResources
或someother???
功能之一来加载它并使它普遍可用。
- 在每个模块中
这个问题的答案似乎以一种通用的方式表明使用import
是最好的,但我对如何做感到困惑。
这些是我的观点 - 持保留态度:
奥雷利亚纯粹主义者
Aurelia Purist 不使用 lodash,而是选择使用 ES6 附带的新数组方法编写现代 JavaScript。有时,Aurelia纯粹主义者在他或她有疑问时咨询你可能不需要强调。 其他时候,Aurelia纯粹主义者咨询你可能不需要jquery。
奥蕾莉亚实用主义者
Aurelia实用主义者认识到Aurelia只是他或她的工具带中的一个工具。Aurelia框架,就像lodash和jQuery一样,帮助Aurelia Pragmatist提供高质量的软件,让用户满意。Aurelia 实用主义者认识到烤蛋糕的方法不止一种,并选择使用他或她最有效的工具。
回答问题...
在Aurelia中,您不会找到任何使_
普遍可用的任何东西,没有任何附加条件。 您当然可以使其成为经典的全局,或者您可以使用jspm安装它并根据需要将其导入每个模块。 没有中间立场可以使您免于导入它,也不会让您对使用全局感到难过。
恕我直言,如果您的东西在全球 lodash 上有 deps,这不是世界末日。这是一个偏好的事情,如果你选择一个或另一个,你的项目肯定不会失败。
杰里米的好答案(一如既往(。我就加起来...
尝试尽可能使用 ES6 数组方法(Aurelia Pure ist 观点(。如果你需要一些无法用原生 ECMAScript 复制的东西,或者你真的更喜欢使用 lodash
来安装它,请使用 jspm
安装它:
jspm install lodash
lodash
是在注册表中定义的npm:lodash
jspm
别名。 jspm
将从npm
的注册表安装lodash
,但会自己管理它 - 在jspm_packages
内部并使用system.js
模块加载器。
要使用模块中的_
,请执行导入:
import _ from 'lodash';
之后,您可以在模块代码中使用_
,就像您期望的那样:
let result = _.map(...);
编辑:感谢@VolkerRose的建议。
lodash
完全安装的模块
也可以仅从lodash
导入所需的功能。如果您只需要map
函数,则可以在模块中使用此功能:
import map from 'lodash/map';
// ...
let result = map(...);
当需要lodash/map
时,jspm
将找到一个lodash
模块文件夹(如果安装了版本 4.3.0
,则jspm_packages/npm/lodash@4.3.0
(,并使用from
值的其余部分在该文件夹中进行搜索。在这种情况下,所有lodash
模块/文件都在根文件夹中 - 因此使用map.js
模块。如果涉及任何子文件夹,则需要使用类似 import map from 'lodash/some/sub/folder/map'
(。
lodash
模块,可独立安装
正如@VolkerRose评论中所说,lodash
是模块化的,您可以只安装所需的模块。
jspm install npm:lodash.map
这将安装lodash
的地图模块。请注意,这次我们需要npm:
前缀,因为jspm
没有独立lodash
模块的别名。
lodash.map
模块现在可以像上面一样使用:
import map from 'lodash.map';
// ...
let result = map(...);
你可以用jspm安装lodash
jspm install lodash
然后使用全局导入在应用中全局使用它,如下所示:
import 'lodash';
例:在您的主文件中,它将在窗口上下文中全局加载 LIB。
// importing lodash as global resource
import 'lodash';
import 'bootstrap';
import {Aurelia, LogManager} from 'aurelia-framework';
import {ConsoleAppender} from 'aurelia-logging-console';
import {authConfig} from './config/auth-config';
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.logLevel.debug);
export function configure(aurelia: Aurelia) {
aurelia.use
.defaultBindingLanguage()
.defaultResources()
.history()
.router()
.eventAggregator();
aurelia.start().then(a => a.setRoot());
}
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 有条件更新d3.js力图中节点的最佳方法
- Lodash从集合创建集合
- Lodash 从值数组中查找数组中的值
- 为react组件传递道具的最佳方式
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- Angularjs 1.5.x本地化最佳实践
- 处理浮点错误的最佳方法是什么
- javascript导入的最佳实践是什么
- MobileFirst:在客户端运行计时器作业-最佳选项
- 在ng重复循环中显示条件内容的最佳方式是什么
- 在phonegap中为android调用onload函数的最佳方式
- 使用Underscore/Lodash在javascript中执行非变异逆尾的最佳方法
- 在 Aurelia(奥雷利亚)中在全球范围内提供像 lodash 这样的库的最佳实践是什么?
- Lodash & Bower:指定下划线“插入替换”版本的最佳方法
- 使用JavaScript和lodash汇总对象数组数据的最佳方式