重生之初识svelte框架(1)

1 什么是 Svelte?

官网写到:

Svelte 是一个构建 web 应用程序的工具。Svelte 与诸如 React 和 Vue 等 JavaScript 框架类似,都怀揣着一颗让构建交互式用户界面变得更容易的心。

但是有一个关键的区别:Svelte 在 构建/编译阶段 将你的应用程序转换为理想的 JavaScript 应用,而不是在 运行阶段 解释应用程序的代码。这意味着你不需要为框架所消耗的性能付出成本,并且在应用程序首次加载时没有额外损失。

你可以使用 Svelte 构建整个应用程序,也可以逐步将其融合到现有的代码中。你还可以将组件作为独立的包(package)交付到任何地方,并且不会有传统框架所带来的额外开销。

2 添加数据

再开始之前需要了解一下在 Svelte 中的组件:

应用程序由一个或多个 组件(components) 构成。它将 HTML、CSS 和 JavaScript 代码封装在一起并写入 .svelte 后缀名的文件中。

总结:简单来说一个.svelte文件就是一个组件。这和Vue类似。但是其中的区别就在于Vue需要再 在引入的文件中 component对象中注册。svelte不需要。

官网中添加数据:

在组件中添加一个 script 标签,并声明一个 name 变量,在dom中回显。

<script>
    let name = 'world'; 
</script>

<h1>Hello {name}!</h1>

总结:此时{name} 变量就像vue中的模板语法:{{name}},这样就容易理解。

3 动态属性

就像可以使用花括号控制文本一样,也可以使用花括号控制元素属性。

我们的图像缺少一个 src 属性,让我们添加一个吧:

<img src={src}>

在上面这个例子中,我们缺少 alt 属性,该属性用于描述这个标签的用途,以便让使用屏幕阅读器的用户,或网络连接缓慢、不稳定的用户了解这幅图像的用途。

<img src={src} alt="A man dances.">

名称和值相同的属性并不少见,比如 src={src}。Svelte 为这些情况提供了一个方便的语法糖:

<img {src} alt="A man dances.">

4 CSS样式

就像在 HTML 中一样,可以向组件添加一个 <style> 标签。

<style>
	p {
		color: purple;
		font-family: 'Comic Sans MS', cursive;
		font-size: 2em;
	}
</style>

<p>This is a paragraph.</p>

总结:重要的是,这些规则是"作用域内的组件"。 不会在应用程序的其他地方意外更改<p>元素的样式,这就行我们在Vue中写到的 <style scoped> ...</style>

作者:前端子鱼

链接:https://zhuanlan.zhihu.com/p/367431533

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

5 嵌套组件

将整个应用程序放在一个组件中是不切实际的。 取而代之的是,我们可以从其他文件中导入组件,并像包含元素一样包含它们。

以下是我们的 App.svelte 组件

<script>
	import Nested from './Nested.svelte';
</script>

<style>
	p {
		color: purple;
		font-family: 'Comic Sans MS', cursive;
		font-size: 2em;
	}
</style>

<p>This is a paragraph.</p>
<Nested/>

Nested 组件:

<p>This is another paragraph.</p>

官网中说道:注尽管 Nested.svelte 有一个 <p> 元素,但 App.svelte 中的样式是不会溢出的(也就是不会影响 Nested.svelte 中的 <p> 元素)。

还需要注意的是,组件名称 Nested 的首字母大写。采用此约定是为了使我们能够区分用户自定义的组件和一般的 HTML 标签。

6 HTML标签

通常,字符串以纯文本形式插入,这意味着像 <> 这样的字符没有特殊的含义。

但有时需要将 HTML 直接绘制到组件中。例如,您现在正在阅读的这段文字是存放于 markdown 文件中的,而展示到本页面时是作为一个 HTML 块。

在 Svelte 中,你可以使用特殊标记 {@html ...} 实现: 语法与Vue中的v-html一致。

<p>{@html string}</p>

注意:官网明确写到,在将表达式的输出插入到 DOM 之前,Svelte 不会对 {@html ...} 内的表达式的输出做任何清理的。换言之,如果使用此功能,则必须手动转义来自不信任源的 HTML 代码,否则会使用户面临 XSS 攻击的风险。

相关推荐
lfl183261621601 分钟前
thingsboard edge 在windows 环境下的配置
前端·edge
IT、木易7 分钟前
大白话react第十五章React 应用性能优化深度实践
前端·react.js·前端框架
十八朵郁金香7 分钟前
分享react后台管理系统常见的组件/知识点
前端·react.js·前端框架
指尖时光.9 分钟前
【前端进阶】15 提升开发效率 数据抽象与配置化
前端
呼啦啦呼_13 分钟前
Echarts map 点击地图某个区域上色
前端
凌览24 分钟前
2.3k Star!免费又好用的图片压缩神器,1 秒瘦身不模糊!
前端·后端·面试
MiyueFE1 小时前
bpmn-js 源码篇7:Featrues 体验优化与功能扩展(二)
前端
好_快1 小时前
Lodash源码阅读-isPrototype
前端·javascript·源码阅读
31535669131 小时前
manus邀请码申请手把手教程
前端·后端·面试
烂蜻蜓2 小时前
HTML 编辑器推荐与 VS Code 使用教程
前端·python·编辑器·html