如何在 vuejs 项目中导入和使用 luxon?

Ima*_*USS 1 javascript datetime vuejs2 luxon

当我尝试luxon在我的vuejs2项目中使用时,我遇到了这个错误。

Uncaught TypeError: Cannot read property 'local' of undefined
Run Code Online (Sandbox Code Playgroud)

我使用 npm 安装了 lib,并导入到我的组件中:

import DateTime from 'luxon'
const exmpl = DateTime.local()
Run Code Online (Sandbox Code Playgroud)

你们能告诉我我做错了什么,或者甚至提出另一个可以轻松与 vuejs 一起使用的时间操纵库。

Wen*_* Li 5

因为DateTime没有正确导入。

import { DateTime } from 'luxon'
Run Code Online (Sandbox Code Playgroud)

  • 我认为解释这一点的一个更简单的方法是 Luxon 导出一个像 `{ DateTime: ..., Interval: ..., Duration: ...}` 的对象(请参阅[此处](https://github.com/ moment/luxon/blob/master/src/luxon.js)),因此您的取消括号导入会将整个对象分配给“DateTime”。大括号解构该对象,将对象中的“DateTime”值分配给代码中的“DateTime”变量 (2认同)

Wen*_* Li 5

输入

\n\n

我想用通用的ES6语法来解释一下。

\n\n

让\xe2\x80\x99s 导入那些令人惊奇的有用的辅助函数:

\n\n
import { sayName, sayAnimal } from './Helpers';\nimport whatsYourFlava from './Helpers';\nsayName('Sam');\n//Hello Sam\nsayAnimal('Giraffe');\n//What animal? Giraffe\nwhatsYourFlava('grapes');\n//I'm liking grapes\n
Run Code Online (Sandbox Code Playgroud)\n\n

导入命名导出时,\xe2\x80\x99 必须将它们括在花括号中。如果您\xe2\x80\x99从同一模块导入多个导出,则可以基于逗号将它们连接起来,并在同一个大括号中使用它们。这看起来很像ES6中的解构,但实际上与 xe2x80x99t 没有任何关系。

\n\n

当您导入并省略大括号时,它将在您从中导入\xe2\x80\x99的模块中查找默认导出。因为它知道必须查找默认导出,所以您可以使用任何随机名称进行导入。这也将起作用:

\n\n
import bruhGetMoney from './Helpers';\nbruhGetMoney('money');\n//I'm liking money\n
Run Code Online (Sandbox Code Playgroud)\n\n

我希望这对你来说是更清楚的事情。谢谢。

\n