nit*_*918 6 javascript import module node.js npm
我理解当你想在多个地方重用一个模块时。您可以: module.exports = yourModuleClassNamein 使该模块可导出。
接下来,当您想在其他地方使用它时,只需导入它即可,如下所示:import yourModuleClassName from 'yourmodulePath'
我完全理解上述概念,对此我没有任何疑问。今天,我更关心的是,导入包时会发生什么:
就像导入 redux-form 包一样:
所以首先我这样做:npm install redux-form
接下来发生的事情是我要做的:import redux-form from redux-form
在我的模块中使用它。
现在,当我查看 npm 安装的软件包时。例如; 当我查看redux-form我的文件夹下的文件夹时node-modules。这是一个完整的项目,有server.js自己package.json的项目,其他项目npm package installs也发生同样的情况。我完全明白它们是一个独立的模块(但更大),并且它们的工作方式与我的本地独立模块相同。
但我在那里没有找到任何东西module.exports,那么它们如何导入呢?当然,NODEJS我正在施展一些魔法,让它们在我的所有项目中都可以导入。但是,它到底是如何做到的呢?假设我在 node_modules 文件夹中保存了一个模块,但我不认为它是可导入的(我知道没有人会这样做,只是好奇!)。如果NODE负责使其可导入,那么它如何处理我不想导入但我希望它们位于文件夹中的文件node_modules。
此外,这些模块都有自己的模块server.js,webpack.configs当我在这些包上调用 import 时它们是否会被执行,如果没有,那么它们到底是如何工作的。
我问这个问题是因为我正在尝试独立npm package,并且我想了解它们是如何工作的。还有一个类似的问题;导入包时会发生什么?
但更倾向于python。任何人都可以为 NODEJS 解释这个问题。如果网上有任何可用资源,请指导我,我将非常感激。
感谢致敬。
当导入使用 npm 安装的包时,node 会执行以下步骤:
node_modules文件夹
package.json文件并且该文件有一个main字段,
main节点加载字段中设置的文件index.js文件。(来源: https: //nodejs.org/api/modules.html#modules_all_together)
此外,这些模块有自己的 server.js 和 webpack.configs,当我在这些包上调用 import 时它们会被执行吗?如果没有,那么它们到底是如何工作的。
webpack.config.js是构建工具 Webpack 的配置。Webpack 仅由开发人员redux-form在将包发布到 npm 之前执行:当您使用npm install它时,它已经构建/编译了
在节点包内,server.js只是一个普通文件(如foo.js)。仅当它位于应用程序根目录中时,它才具有特殊含义:当您运行 时,它就会被执行npm start。
PS您正在混合使用模块的两种方式:CommonJS 和 ES6。它可以工作,因为您正在转译模块(可能使用 Babel 或任何其他转译器),但当 Node 原生支持 ES6 模块时,它可能无法工作。
CommonJS 和 ES6 模块有哪些区别?
// commonjs
module.exports = yourModuleClassName;
// ES6
export default yourModuleClassName;
// commonjs
exports.something = yourExportedVariable;
// ES6
export { yourExportedVariable as something }
// commonjs
var importedModule = require("module-path");
// ES6
import importedModule from "module-path";
// commonjs
var something = require("module-path").something;
// ES6
import { something } from "module-path";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |