Svelte 前端开发笔记

近期用 Svelte 开发了一个小项目,记录在开发过程中遇到的一些问题。

……

Flask 项目中使用 Svelte

如果想在新项目中同时使用 Flask 后端和 Svelte 前端,可以通过 flask-svelte 进行创建。而对于已有项目,在不重构 Flask 项目目录结构的前提下,可以按照本文的方法集成 Svelte 前端。

假设现有的 Flask 项目目录结构如下:

/home/user/my-project/
├── app/
│   ├── __init__.py
│   ├── models.py
│   ├── views.py
│   ├── templates/
│   │   └── index.html
│   └── static/
│       └── style.css
├── tests/
│   └── test_app.py
├── venv/
├── setup.py
└── MANIFEST.in

my-project 下创建一个名为 frontend 的 Svelte 前端项目:

……

中文网页排版设计建议

使用哪种引号

在《标点符号用法》( GB/T 15834—2011 )中规定的双引号和单引号分别为 “”‘’,这组引号起源于西文,且称作国标引号。另外,在《重订标点符号手册》中规定的双引号和单引号(横式)分别为 『』「」,这组引号又被称为直角引号。

需要注意的是,国标引号和直角引号的单引号、双引号使用方式是相反的:国标引号,外层使用双引号,内层嵌套使用单引号;直角引号,外层使用单引号,内层嵌套使用双引号。例如:

……

为网页添加侧边栏目录导航

一直很反感那些花里胡哨的博客模板,所以为这个网站选择了一套非常简约的主题,并在此基础上简单地修改。主要是将默认的衬线字体改成了非衬线字体,增加了顶部的导航栏等。

主题默认的章节目录和正文是顺序堆叠(stacklayout)的。然而,在实际使用过程中发现,当文章内容很长时,如果没有章节目录导航的话,阅读体验相当不好,特别是在触屏移动设备上,体验更加不堪。因此,决定给文章页加上章节目录导航。

……

flexbox 实现自适应图片九宫格布局

「九宫格」的布局是指:在一个正方形的容器中,以 3x3 排列共九个正方形的元素。当容器大小发生变化时,容器内部的九个元素尺寸也能随着容器大小而缩放,并保持正方形的外形。当容器内元素不满九个时,每行元素能够等比放大并撑满一行

HTML Entities 转换问题

用 Python 给富文本编辑器的后端做一个 HTMLPurifier 组件。各种 XSS 技巧都筛了一遍。觉得万无一失了,没想到还是栽在了坑里。

HTMLPurifier 组件使用 Python HTMLParser 来实现。HTMLParser 在处理 HTML Entities 的时候和主流的浏览器不一致。主流浏览器(FireFox、Chrome、IE)都允许省略HTML Entities末尾的分号。而 HTMLParser 的unescape 函数在处理时要求必须有结尾分号,导致后端的 HTML 过滤被绕过。

……