【问题标题】:ES6: What does "import $ from 'jquery'" really means?ES6:“从'jquery'导入$”真正意味着什么?
【发布时间】:2017-03-25 05:41:03
【问题描述】:

我一开始以为它只是意味着,加载 jQuery 模块并在一个名为 $ 的变量中初始化它。

但是,通过将 Atom 与 atom-typescript 一起使用,我收到一条错误消息,提示“找不到模块 'jquery'”。尽管所有代码都可以在浏览器中运行,但看起来 atom-typescript 无法解析任何类似于 import x from y 的东西。

现在,查看 ES6 文档,我发现您从模块中导入了类/函数。含义完全不同,例如:

import { Component } from 'angular2/core';

但是,对于 jQuery,这意味着什么?

我可能在同一个问题中混合了不同的问题,但任何解释都会消除这种混乱,所以提前非常感谢:)

【问题讨论】:

标签: javascript typescript ecmascript-6 atom-editor


【解决方案1】:

声明import $ from jquery 几乎相当于依赖注入。就像写import React from 'react' 来让自己访问文件中的React 库一样,也可以写import $ from jquery。 (如果它让你失望,使用美元符号是因为 jQuery 及其方法是使用美元(a.k.a. jQuery)运算符访问的。

至于抛出的错误,可能是几件事:

  1. 如果您在 package.json 文件中单独安装了 jQuery 作为依赖项,并且包含来自 jQuery CDN 的 <script> 标签,则会引发此错误。如果您通过 NPM 使用 jQuery,那么 import $ from jquery 语法是正确/必要的。如果你打算通过 CDN 使用 jQuery(我会推荐),import 语句是不必要的。 (由于您已在 index.html 中包含该脚本标记,因此您可以在整个应用程序范围内访问 jQuery 及其库)。但是,不要两者都做。

  2. 还请注意,在 import { Component } from 'angular2/core'; 语句的情况下,发生的情况略有不同。即,按照 (AMD specification) 导入 named export Component。在这种情况下,您可以将其视为仅导入较大部分的一部分Angular2 核心库时不需要整个库。

为了确定,请检查您是否确实通过 CDN 或通过将其安装为 NPM 依赖项为自己提供了对 jQuery 的访问权限。

【讨论】:

  • 感谢您的出色回答。我正在尝试为所有这些创建一个干净的引导程序,它可以在这里找到:github.com/jordymeow/meowbs-2016。你可以看看。目前不包括 jQuery,但 atom-typescript 也显示所有模块(尤其是 Angular 模块)的相同错误。我错过了一些东西,但我不知道是什么......
猜你喜欢
  • 2015-12-24
  • 1970-01-01
  • 2023-03-10
  • 2020-06-21
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多