通过导入类方法创建模块化javascript库而不需要整个类
我正在尝试创建一个可重用的javascript库,例如books类,并拥有createbook、checkforbook和ModifyBook方法 我想这样使用它通过导入类方法创建模块化javascript库而不需要整个类,javascript,Javascript,我正在尝试创建一个可重用的javascript库,例如books类,并拥有createbook、checkforbook和ModifyBook方法 我想这样使用它 import Library, {checkForBook, modifyBook} from 'books' Library.createBook({ name : 'firstbook', year: 2012 }) checkForBook('firstBook') modifyBook('firstBook',{
import Library, {checkForBook, modifyBook} from 'books'
Library.createBook({
name : 'firstbook',
year: 2012
})
checkForBook('firstBook')
modifyBook('firstBook',{
name: 'secondBook'
})
我现在的问题是:如何做到这一点而不需要使用新的keywrod,以及如何使用不需要像Library.checkForBook那样的方法
并且仍然可以访问图书列表我想你正在寻找
// library.js
export default class Library {
…
}
添加您的图书脚本和当前面临的问题。这里有一个类似的问题,你能发布你的
书籍
模块源代码吗?你是说它包含一个类
?
// books.js
import Library from './library';
// creates a singleton:
export default const books = new Library();
export function checkForBook(name) {
return books.checkForBook(name);
}
export function modifyBook(name, value) {
return books.modifyBook(name, value);
}
// main.js
// imports the singleton, not the `Library` class
import books, {checkForBook, modifyBook} from 'books';
books.createBook({
name : 'firstbook',
year: 2012
});
checkForBook('firstBook');
modifyBook('firstBook', {
name: 'secondBook'
});
const books = new Map(); // store the books somehow
export function createBook({ name, year }) { // make them available as import { createBook } from ...
const book = { name, year };
books.set(name, book);
return book;
}
export function checkForBook(name) {
return books.has(name);
}
export function modifyBook(name, update) {
if(!checkForBook(name))
throw new Error("Cannot modify, book doesnt exist");
Object.assign(books.get(name), update);
}
export default { // make them available as Library.createBook
createBook,
checkForBook,
modifyBook
};