我一直在尝试使用Javascript的“显示模块模式”,但是我不太了解是否以及如何将一个模块的公共方法调用到另一个模块中。假设我有以下两个模块(代码已简化):

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';

最佳答案

如何从模块A调用loadDefault()方法从模块B调用addNewPosts()方法?


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


  不知道这是否与它有任何关系,但是值得一提的是我正在使用Webpack,因此在我的主要.js文件中,我将这样导入这两个模块:

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



然后,您不想使用RMP。而是使用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 - 如何使用显示模块模式将一个JS模块的公共(public)方法调用为另一个方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46694168/

10-09 17:40
查看更多