aus*_*ive 82 import require node.js typescript
我刚刚开始研究一个与MongoDB交互的小节点项目.但是,我似乎无法正确导入相关的节点模块,即使我已正确安装它们npm.
例如,以下代码抛出并出错,告诉我"express没有默认导出":
import express from "express";
Run Code Online (Sandbox Code Playgroud)
但是,此代码有效:
const express = require("express");
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,import和variable/require方法的功能有何不同?我想解决困扰我项目进口的任何问题,因为它似乎可能会导致其他问题.
Alw*_*nny 79
即使在SO上,也有很多关于你的问题的在线资源.你可以在这里看到,但简单的答案,可以帮助我明白之间的差别require,并import在使用Node.js的要求与ES6导入/导出
图片简单:
Ayo*_*Lee 50
require和之间的主要区别import是,它require会自动扫描node_modules以找到模块,但是import,它来自ES6,不会.但现在大多数人会用巴贝尔编译import和export,这将使import作用一样require,但未来的Node.js的版本可能支持import本身(实际上,实验版已经没有),并通过Node.js的判断笔录,import赢得了"支持node_modules,它基于ES6,并且必须指定模块的路径.
所以我建议你不要使用importbabel,但这个功能尚未确认,它可能会支持node_modules将来,谁会知道?
pra*_*nde 18
我会让它变得简单,
主要区别在于require,整个 JS 文件被调用或包含。即使你不需要它的一部分。
var myObject = require('./otherFile.js'); //This JS file will be included fully.
Run Code Online (Sandbox Code Playgroud)
而在导入中,您只能提取所需的对象/函数/变量。
import { getDate }from './utils.js';
//Here I am only pulling getDate method from the file instead of importing full file
Run Code Online (Sandbox Code Playgroud)
另一个主要区别是您可以require在程序中的任何位置使用asimport应该始终位于文件顶部
编辑:在最新的节点版本中,您可以使用解构。它看起来像这样
const { getDate } = require('./date.js');
Run Code Online (Sandbox Code Playgroud)
Vin*_*ius 13
这之间有很大的区别:
import express from "express";
Run Code Online (Sandbox Code Playgroud)
和这个:
import * as express from "express";
Run Code Online (Sandbox Code Playgroud)
从 CommonJS 到 ES6 的正确翻译
const express = require("express");
Run Code Online (Sandbox Code Playgroud)
是第二次导入。
express基本上,这是因为在第一次导入中,您正在名为 的模块中查找导出express。第二个是导入带有 name 的整个express模块express。
LaZ*_*Zza 12
新的 ES6:
'import' 应该与 'export' 关键字一起使用,以在 js 文件之间共享变量/数组/对象:
export default myObject;
//....in another file
import myObject from './otherFile.js';
Run Code Online (Sandbox Code Playgroud)
老学校:
“require”应该与“module.exports”一起使用
module.exports = myObject;
//....in another file
var myObject = require('./otherFile.js');
Run Code Online (Sandbox Code Playgroud)
让我举一个包括带有require和import的快递模块的例子
-要求
var express = require('express');
Run Code Online (Sandbox Code Playgroud)
-进口
import * as express from 'express';
Run Code Online (Sandbox Code Playgroud)
所以在使用上述任何一个语句后,我们将有一个名为'express'的变量.现在我们可以将'app'变量定义为,
var app = express();
Run Code Online (Sandbox Code Playgroud)
因此我们将'require'与'CommonJS'一起使用,'import'与'ES6'一起使用.
有关'require'和'import'的更多信息,请阅读以下链接.
require - 需要Node.js中的模块:你需要知道的一切
import - Node.js中ES6模块的更新
| 归档时间: |
|
| 查看次数: |
69248 次 |
| 最近记录: |