面试题答案
一键面试入手方面
- 功能划分:依据项目功能模块,如用户认证、购物车、文章管理等,将相关数据与逻辑封装到对应的Store模块。
- 数据独立性:确保每个Store模块的数据相对独立,避免不同模块间数据的过度耦合。
- 可复用性:设计Store时考虑其在不同场景下的复用可能性,提升代码复用率。
基本设计思路
- 创建独立文件:为每个Store模块创建单独的.js文件,方便管理和维护。
- 定义接口:明确每个Store模块对外提供的接口,如获取数据、更新数据的函数等。
- 封装逻辑:将与该模块相关的数据操作逻辑封装在Store内部,外部通过接口进行交互。
划分不同模块Store示例
假设项目有用户模块和文章模块:
- 用户模块Store(userStore.js)
import { writable } from'svelte/store';
// 创建用户信息的可写Store
const userInfo = writable({ name: '', age: 0 });
// 定义更新用户信息的函数
function updateUser(newUser) {
userInfo.set(newUser);
}
export { userInfo, updateUser };
- 文章模块Store(articleStore.js)
import { writable } from'svelte/store';
// 创建文章列表的可写Store
const articles = writable([]);
// 定义添加文章的函数
function addArticle(newArticle) {
articles.update(a => {
a.push(newArticle);
return a;
});
}
export { articles, addArticle };
在组件中使用时:
<script>
import { userInfo, updateUser } from './userStore.js';
import { articles, addArticle } from './articleStore.js';
// 使用userInfo和articles
$: console.log('User:', $userInfo);
$: console.log('Articles:', $articles);
// 调用更新函数
function updateUserHandler() {
updateUser({ name: 'John', age: 25 });
}
function addArticleHandler() {
addArticle({ title: 'New Article', content: 'Some content' });
}
</script>
<button on:click={updateUserHandler}>Update User</button>
<button on:click={addArticleHandler}>Add Article</button>