📅  最后修改于: 2023-12-03 15:35:12.191000             🧑  作者: Mango
Svelte 是一个用于构建 Web 应用程序的现代化框架,它具有基于组件的体系结构、可重用性和代码可维护性等特点。在 Svelte 中,组件不仅仅是视图,而是一种包含数据、行为和模板三个方面的封装单元。
每一个 Svelte 组件都有一个指定的索引文件,它包含了组件所需的 HTML 模板、JavaScript 逻辑和 CSS 样式。这些索引文件是实现 Svelte 应用的重要组成部分,让我们来一起学习一下每个索引文件的含义。
index.html
index.html
是应用程序的入口文件,它代表了整个应用程序的 HTML 结构。在这个文件中,你可以放置一个或多个 Svelte 组件(svelte component),以及其他 HTML 元素。如果你想使用其他库或框架,可以在此处进行引入。
下面是一个 index.html
文件的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Svelte App</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="app"></div>
<script src="bundle.js"></script>
</body>
</html>
该文件包含一个 div
元素 app
,它是一个组件的容器。在该示例中,我们还引入了一个名称为 bundle.js
的 JavaScript 文件和一个名为 style.css
的 CSS 文件。
App.svelte
App.svelte
是应用程序的根组件,它定义了整个应用程序的结构和行为。这个组件包括了应用程序的导航菜单、底部信息栏等,以及一系列子组件。
下面是一个 App.svelte
组件的示例:
<template>
<div class="app">
<nav>
<ul>
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/about">About</a>
</li>
<li>
<a href="/contact">Contact</a>
</li>
</ul>
</nav>
<main>
<Router {routes} />
</main>
<footer>
<p>My Svelte App © 2021</p>
</footer>
</div>
</template>
<script>
import { Router } from 'svelte-routing';
import Home from './pages/Home.svelte';
import About from './pages/About.svelte';
import Contact from './pages/Contact.svelte';
const routes = [
{ name: 'Home', path: '/', component: Home },
{ name: 'About', path: '/about', component: About },
{ name: 'Contact', path: '/contact', component: Contact }
];
</script>
<style>
/* 样式定义 */
</style>
在该示例中,App.svelte
组件分别包含了导航菜单、路由器和底部信息栏。路由器由 svelte-routing
库提供,可以帮助我们高效地管理 URL。
component.svelte
component.svelte
是任意组件的命名规则。它代表了应用程序中某个具体的组件,包括 HTML 模板、JavaScript 逻辑和 CSS 样式。这些组件在被其他组件引用时可以直接使用组件名称,比如 import MyComponent from './components/MyComponent.svelte'
。
下面是一个 component.svelte
组件的示例:
<template>
<div class="my-component">
<h2>{{ title }}</h2>
<p>{{ content }}</p>
<button on:click={handleClick}>Click Me</button>
</div>
</template>
<script>
export let title;
export let content;
function handleClick() {
console.log('Button clicked!');
}
</script>
<style>
.my-component {
/* 样式定义 */
}
</style>
在该示例中,component.svelte
组件包含了一个 HTML 模板、两个绑定属性 title
和 content
,以及一个点击事件处理函数 handleClick
。通过 export let
语法,属性可以被传递到组件中,并可以在模板和逻辑代码中使用。样式代码则使用类似于 CSS 的方式来定义,这些样式只作用于该组件内。
main.js
main.js
是整个应用程序的 JavaScript 入口文件,它定义了 Svelte 应用程序的入口。该文件主要包括应用程序引入的各种库、组件、全局样式等。
下面是一个 main.js
文件的示例:
import App from './App.svelte';
const app = new App({
target: document.getElementById('app')
});
该示例中,main.js
文件中引入了 App.svelte
组件和相关的库和样式。然后,我们用 new
操作符创建了一个 App
组件的实例,将其挂载到 app
容器中。这个容器就是 index.html
文件中的 div
元素。
Svelte 每个索引都具有自己的特点和功能,它们一起构成了一个完整的 Svelte 应用程序。你可以按照上述示例来配置和组织 Svelte 应用程序,以实现自己的需求。