gpt4 book ai didi

javascript - 如何使用 Revealing Module Pattern 将一个 JS 模块的公共(public)方法调用到另一个 JS 模块?

转载 作者:行者123 更新时间:2023-11-30 21:05:19 25 4
gpt4 key购买 nike

我一直在试验 Javascript 的 Revealing Module Pattern,但我不太明白是否以及如何将一个模块的公共(public)方法调用到另一个模块中。假设我有这两个模块(代码已简化):

1) 模块A

var lazyload = ( function() {

function loadDefault() {
$('.lazy').load();
}

return {
loadDefault: loadDefault
}

})();

2) 模块 B

var newposts = ( function() {

function addNewPosts() {
$('.posts').append();
}

});

如何将模块 A 中的 loadDefault() 方法调用到模块 B 中的 addNewPosts() 方法中?不确定这是否与它有任何关系,但也许值得一提的是我使用的是 Webpack,所以在我的主 .js 文件中,我将这样导入两个模块:

import './ModuleA';
import './ModuleB';

最佳答案

How do I call the loadDefault() method from Module A into the addNewPosts() method from Module B?

如果您使用的是旧式显示模块模式,您会执行 lazyload.loadDefault()。但是请继续阅读...

Not sure if this has anything to do with it, but maybe it's worth mentioning that I'm using Webpack, so in my main .js file I'm importing both modules as such:

import './ModuleA';
import './ModuleB';

那么你不想使用贼法牧。相反,使用 export:

lazyload.js:

export function loadDefault() {
$('.lazy').load();
}

newposts.js:

import {loadDefault} from './ModuleA';

export function addNewPosts() {
loadDefault();
$('.posts').append();
}

或者,如果您希望导出的一个函数成为默认函数:

lazyload.js:

export default function loadDefault() {
$('.lazy').load();
}

...然后是导入

import loadDefault from './ModuleA';

RMP 是解决 JavaScript 没有模块的问题的方法。一旦您使用了实际模块(在 ES2015 中引入),您就不再需要 RMP(用于模块)。

关于javascript - 如何使用 Revealing Module Pattern 将一个 JS 模块的公共(public)方法调用到另一个 JS 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46694168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com