【问题标题】:Why not have `import module-name.export1` in javascript?为什么在 javascript 中没有`import module-name.export1`?
【发布时间】:2020-12-10 16:26:06
【问题描述】:

ES6 import 语句语法背后的设计限制是什么?

import { export1 } from "module-name";

如图here

为什么没有

import module-name.export1

如果一开始就有“import”关键字如此重要,为什么不这样使用呢?

为了比较,请考虑其他几种流行的语言:

  • Java : import package.subpackage.ClassName;
  • 蟒蛇:from module import SomeClass
  • C#:using System.Text;

从左到右:broadScope -> 模块 -> specificItem
而在 ES6 中,它倒退了:particularItem

先写export1,然后写module-name,有什么好处? 这怎么比import module-name.export 更优化?

【问题讨论】:

标签: javascript ecmascript-6 es6-modules


【解决方案1】:

我不是其中之一 - 维护者。但是,这是一个直截了当的答案:

你知道链接到文件夹的工作原理吗?

'./project/dir'

我们在链接到图像等时使用类似。这是 HTML 的标准。而且 ES6 也是 HTML5(HTML、JavaScript、CSS)的一部分。因此,它会从指定路径的文件夹中导入模块。

import defaultExport from '../path'
import { namedExport } from '../node_modules/package'

就像我们定义一个要使用的变量:

// define myVar at first hand and declare it's value at second hand
const myVar = 10
console.log(myVar)
// But not
// 10 = const myVar
// console.log(10) // myVar

按照这个方法,我们有导入语句:

import myVar from 'module' // value is extracted from module
import { myKeyVar } from 'package'
console.log(myVar, myKeyVar)

所以,我不能敦促有这样的定义:

from 'module' import myVar

最后,没有其他方法可以解决这个问题。因此,我们不能说这是最好的方法或最差的方法。这只是他们执行的标准。

【讨论】:

  • “而且 ES6 也是 HTML5(HTML、JavaScript、CSS)的一部分” — 这根本不是真的。其余的答案与 HTML 无关。
  • 我说的是 HTML5 标准,而不仅仅是 html。
  • @BhojendraRauniyar 该链接并未说明 ES6 是 HTML5 的一部分。这两者是两种完全不同的规范、技术和语言。模块是 ES6 的一部分。像 Canvas 这样的东西是 HTML5 的一部分。 “实际上 [HTML5] 已成为 [JavaScript] 的一个包罗万象的流行词,并且自 HTML4 以来开发的每一种网络技术” 确实暗示 ES6(不等同于JavaScript) 是 HTML5 的一部分。 “我说的是 HTML5” — 我说问题和你回答的第二部分与 HTML 无关。 HTML 已经包含 HTML5。
  • 我不明白你的论点。 “在 html 中链接文件夹”(或一般的目录结构)与模块的导入语法有何关系?这如何回答我们为什么写import x from './path/to/module'而不是from './path/to/module' import x的问题?!​​
猜你喜欢
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
相关资源
最近更新 更多