ES6:“从'jquery'导入$”真正意味着什么?

Tig*_*eow 5 javascript typescript ecmascript-6 atom-editor

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

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

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

import { Component } from 'angular2/core';
Run Code Online (Sandbox Code Playgroud)

但是对于 jQuery 来说这意味着什么呢?

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

Ise*_*chO 3

该语句import $ from jquery几乎相当于依赖注入。就像人们可以通过写入import React from 'react'来访问文件中的 React 库一样,也可以写入import $ from jquery. (以防万一,这里使用美元符号,因为 jQuery 及其方法是使用美元(又名jQuery)运算符访问的。

至于抛出的错误,可能有以下几种:

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

  2. 另请注意,在该import { Component } from 'angular2/core';语句的情况下,发生的情况略有不同。也就是说,根据AMD 规范导入命名的导出 组件。在这种情况下,您可以将其视为仅导入较大的 Angular2 核心库的一部分,而整个库是不必要的。

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