面试题答案
一键面试- 集成方法描述:
- 利用
page
库提供的路由切换事件。在每次路由切换前,调用当前页面的onDestroy
函数来清理资源等操作。在路由切换完成后,调用新页面的onMount
函数来进行初始化等操作。
- 利用
- 代码示例:
- 首先安装
page
库:npm install page
- 假设项目结构如下:
src/routes/home.svelte
<script> import { onMount, onDestroy } from'svelte'; onMount(() => { console.log('Home page mounted'); }); onDestroy(() => { console.log('Home page destroyed'); }); </script> <h1>Home Page</h1>
src/routes/about.svelte
<script> import { onMount, onDestroy } from'svelte'; onMount(() => { console.log('About page mounted'); }); onDestroy(() => { console.log('About page destroyed'); }); </script> <h1>About Page</h1>
- 在主入口文件(如
main.js
)中:import page from 'page'; import { createApp } from'svelte'; import Home from './routes/home.svelte'; import About from './routes/about.svelte'; let currentPage; const mountPage = (Component) => { if (currentPage) { currentPage.$destroy(); } const app = createApp(Component); app.mount(document.body); currentPage = app; }; page('/', () => { mountPage(Home); }); page('/about', () => { mountPage(About); }); page();
- 在上述代码中:
mountPage
函数负责在每次路由切换时,先销毁当前页面(调用currentPage.$destroy()
,这会触发当前页面的onDestroy
函数),然后挂载新页面(调用createApp(Component).mount(document.body)
,这会触发新页面的onMount
函数)。page
库定义了不同路径对应的回调函数,在回调函数中调用mountPage
来实现页面的切换和生命周期的正确触发。
- 首先安装