重生之初识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 攻击的风险。

相关推荐
程序员爱技术1 小时前
Vue 2 + JavaScript + vue-count-to 集成案例
前端·javascript·vue.js
并不会2 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
衣乌安、2 小时前
【CSS】居中样式
前端·css·css3
兔老大的胡萝卜2 小时前
ppk谈JavaScript,悟透JavaScript,精通CSS高级Web,JavaScript DOM编程艺术,高性能JavaScript pdf
前端·javascript
低代码布道师2 小时前
CSS的三个重点
前端·css
耶啵奶膘4 小时前
uniapp-是否删除
linux·前端·uni-app
王哈哈^_^5 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie6 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic6 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿7 小时前
webWorker基本用法
前端·javascript·vue.js