在Aurelia建立像lodash这样的全球图书馆的最佳做法是什么?

AR.*_*AR. 9 javascript aurelia

我希望能够以方便的方式使用lodash(_),但我正在寻找最好的'Aurealia'方式.我可以看到几个选项:

  • 使用下载的副本或CDN,只需<script>在index.html中包含标记引用即可
  • 安装通过npmjspm(哪???)然后:
    • import 它在每个模块中,这似乎很乏味
    • 使用奥里利亚的一个featurepluginglobalResourcessomeother???功能加载它,并普遍适用.

这个问题的答案似乎以一种通用的方式表明使用import是最好的,但我对如何使用感到难过.

Jer*_*yow 19

这些是我的意见 - 带着一点点盐:

Aurelia Purist

Aurelia Purist不使用lodash,而是选择使用ES6附带的新数组方法编写现代javascript .有时,Aurelia纯粹主义者在他或她有疑问时可能不需要下划线.其他时候Aurelia纯粹主义者咨询你可能不需要jquery.

Aurelia实用主义者

Aurelia实用主义者认识到Aurelia只是他或她的工具带中的一个工具.Aurelia框架,与lodash和jQuery非常相似,可以帮助Aurelia实用主义的船舶质量软件,让用户满意.Aurelia实用主义者认识到烘烤蛋糕并选择使用他或她最有效的工具的方法不止一种.

回答这个问题......

在Aurelia中你找不到任何_附带条件的普遍可用的东西.您当然可以将它作为经典的全局OR,您可以使用jspm将其安装并根据需要将其导入每个模块.没有中间地带可以帮助您免于导入它并使您免于使用全局感觉不好.

恕我直言,如果你的东西在lodash全球范围内拥有deps,那么它不是世界末日.这是一个偏好的事情,如果你选择其中一个,你的项目肯定不会失败.


Mir*_*vic 9

Jeremy(一如既往)给出了很好的答案.我只是加起来......

尝试尽可能使用ES6阵列方法(Aurelia Purist立场).如果您需要某些无法使用本机ECMAScript复制的内容,或者您​​真的更喜欢使用lodash它,请使用jspm以下命令安装它:

jspm install lodash
Run Code Online (Sandbox Code Playgroud)

lodash是注册表中npm:lodash定义的别名jspm.jspm将从注册表安装lodash,npm但将自己管理 - 内部jspm_packagessystem.js模块加载器.

要从_模块中使用,请执行导入:

import _ from 'lodash';
Run Code Online (Sandbox Code Playgroud)

之后,您可以_在模块代码中使用,就像您期望的那样:

let result = _.map(...);
Run Code Online (Sandbox Code Playgroud)

编辑:感谢@VolkerRose的建议.

lodash 完全安装的模块

也可以只导入您需要的功能lodash.如果您map只需要函数,那么您将在模块中使用它:

import map from 'lodash/map';
// ...
let result = map(...);
Run Code Online (Sandbox Code Playgroud)

何时lodash/map需要,jspm将找到一个lodash模块文件夹(jspm_packages/npm/lodash@4.3.0如果4.3.0安装了版本)并使用该from值的其余部分在该文件夹中进行搜索.在这种情况下,所有lodash模块/文件都在根文件夹中 - 因此使用map.js模块.如果涉及任何子文件夹,则需要使用类似的东西 import map from 'lodash/some/sub/folder/map'.

lodash 具有独立安装的模块

作为@VolkerRose 在评论说,lodash模块化的,你可以安装你需要的模块.

jspm install npm:lodash.map
Run Code Online (Sandbox Code Playgroud)

这将安装lodash的地图模块.请注意,这次我们需要npm:前缀,因为jspm没有独立lodash模块的别名.

lodash.map现在可以使用与上面类似的模块:

import map from 'lodash.map';
// ...
let result = map(...);
Run Code Online (Sandbox Code Playgroud)