簡體   English   中英

如何讓一個npm package對多個JS模塊可用?

[英]How to make an npm package available to multiple JS modules?

上下文

我正在從傳統的 js/html 前端開發方式轉變:

<script src="link-to-the-js-file"></script>

<!-- Now, just use the library... -->

以現代的 npm/js-modules/webpack 方式:

npm install whatever

require('whatever')

whatever.doSomething();

問題

我對何時以及如何要求將在多個模塊中使用的包感到困惑。

假設我的站點中有兩個要使用axios的功能。

我會做:

文件feature.js

/**
 * Some JS module where I'll use axios
 */

const axios = require('axios');

export default () => ({
...

   axios.doWhatever();

...
});

但是如果有另一個模塊也需要 axios 怎么辦?

如果我在another- file.js 中需要它,我編譯的 JS 中不會多次包含 axios 嗎?

所以這讓我想到......好吧,我會把它附加到 window scope 並隨時從那里使用它。

和 go 類似:

文件全局文件.js

window.axios = require('axios');

但我不知道這是否是好的做法。

我知道這里不允許基於意見的問題,但必須有一個可靠的通用方法。 我不想“讓它工作”,我想以正確的方式做事。 我會感謝你的幫助。

從節點文檔:

模塊在第一次加載后被緩存。 這意味着(除其他外)每次調用require('foo')都會得到完全相同的 object 返回,如果它解析到同一個文件。

所以你基本上(在大多數情況下)使用相同的對象/文件。 但是如果你不想在多個文件中重復你自己,你可以像這樣將它添加到全局 scope 中:

axios = require('axios ');

查看更多關於Node.js 緩存的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM