Javascript 可以一次导入一个模块,并使用Webpack将方法用于多个模块
我正在尝试学习如何使用webpack模块。我相信我现在明白了,如果一个模块从另一个模块调用一个方法,那么它必须被导入 我不明白的是,在多个模块调用另一个模块中定义的方法的情况下,我该怎么办 将所需模块导入每个js模块文件是否是处理此场景的正确方法 isObject.jsJavascript 可以一次导入一个模块,并使用Webpack将方法用于多个模块,javascript,node.js,webpack,ecmascript-6,node-modules,Javascript,Node.js,Webpack,Ecmascript 6,Node Modules,我正在尝试学习如何使用webpack模块。我相信我现在明白了,如果一个模块从另一个模块调用一个方法,那么它必须被导入 我不明白的是,在多个模块调用另一个模块中定义的方法的情况下,我该怎么办 将所需模块导入每个js模块文件是否是处理此场景的正确方法 isObject.js const isObject = (a) => (!!a) && (a.constructor === Object); export {isObject} import {isObject} from
const isObject = (a) => (!!a) && (a.constructor === Object);
export {isObject}
import {isObject} from './isObject';
const findNote = ( notes, id ) => {
return isObject( notes.findIndex(function( note ){
return note.id === id;
}) );
}
export {findNote}
import {isObject} from './isObject';
const filterNotes = ( notes, filter ) => {
return isObject( notes.filter(function( note ){
return note.title.toLowerCase().includes( filter.toLowerCase() ) );
});
}
export {filterNotes}
findNote.js
const isObject = (a) => (!!a) && (a.constructor === Object);
export {isObject}
import {isObject} from './isObject';
const findNote = ( notes, id ) => {
return isObject( notes.findIndex(function( note ){
return note.id === id;
}) );
}
export {findNote}
import {isObject} from './isObject';
const filterNotes = ( notes, filter ) => {
return isObject( notes.filter(function( note ){
return note.title.toLowerCase().includes( filter.toLowerCase() ) );
});
}
export {filterNotes}
filterNotes.js
const isObject = (a) => (!!a) && (a.constructor === Object);
export {isObject}
import {isObject} from './isObject';
const findNote = ( notes, id ) => {
return isObject( notes.findIndex(function( note ){
return note.id === id;
}) );
}
export {findNote}
import {isObject} from './isObject';
const filterNotes = ( notes, filter ) => {
return isObject( notes.filter(function( note ){
return note.title.toLowerCase().includes( filter.toLowerCase() ) );
});
}
export {filterNotes}
我猜你是新来的
Node.js
。每个模块只需加载一次webpack是一个脚本绑定器。它有一个“入口点”的概念,并为每个入口点构建一个或多个脚本包
因此,如果您将findNote.js
作为一个入口点,或者如果存在一个导入(直接或间接)findNote.js
的现有入口点,那么包括isObject.js
在内的所有依赖项都将包含在此捆绑包中
filterNotes.js的情况也一样。如果将其作为另一个入口点,那么它的代码及其依赖项(包括isObject.js
)将包含在该入口点的另一个捆绑包中
因此,isObject.js
将包含在几个包中。这可以通过一些优化来避免。好的,因此每个模块只加载一次。我注意到,如果我的模块调用了一个我必须导入的方法,那么它必须导入到每个调用的模块中,否则在运行webpack之后,代码就会失败。有办法吗?我不太明白。你能做一个我们可以讨论的示例项目吗?那么,假设一个文件app.js是入口点,app.js导入所有3个js模块。因为findNote.js和filterNotes.js都导入了isObject.js,所以所有的代码都在最后一个捆绑包中重复了吗?@mcbeav-app.js、findNote.js、filterNotes.js和isObject.js这四个模块将被包含在捆绑包中。