pandoc 模板基本语法和变量

转换命令示例: pandoc --standalone --template template.html doc.md -o doc.html

官方文档: https://pandoc.org/MANUAL.html#templates

模板文件基本语法介绍:

$-- 和行尾之间的任何内容都将被视为注释,不会出现在输出结果中。

$-- comment line

在模板中,可以使用 $$ or ${} 作为变量和控制结构的标记。这两种样式也可以在同一模板中混用,但每种情况下的开头和结尾定界符必须匹配。开头定界符后面可以跟随一个或多个空格或制表符,这些将被忽略。结尾定界符前面可以有一个或多个空格或制表符,这些也将被忽略。

next.js 中加载和使用 Web Components

由于 Next.js 默认是服务端加载模式,
所以需要在 useEffect 中 import Web 组件(仅在客户端加载的静态组件)。

示例:

import { useEffect } from "react";

function Home() {
    useEffect(() => {
        import("../public/components/my-loading.js"), [];
    });

    return (
        <>
            <my-loading></mc-loading>
        </>
    );
}

export default Home;

rust 连接字符串

在 Rust 中,有几种方法可以连接字符串。你可以使用 + 运算符,format! 宏或 push_str() 方法。下面是一些示例代码:

直接测试代码可以使用官方提供的 rust playground

fn main() {
    let s1 = "Hello";
    let s2 = "World";

    // 使用+运算符连接字符串
    let result = s1.to_string() + " " + s2;
    println!("{}", result); // 输出: "Hello World"

	//注意,如下方式是错误的:
    // let result = s1 + " " + s2;
    // Error:
	//    `+` cannot be used to concatenate two `&str`strings`
	//    note: string concatenation requires an owned `String` on the left

    // 使用format!宏连接字符串
    let result = format!("{} {}", s1, s2);
    println!("{}", result); // 输出: "Hello World"

    // 使用push_str方法连接字符串
    let mut result = s1.to_string();
    result.push_str(" ");
    result.push_str(s2);
    println!("{}", result); // 输出: "Hello World"
}

应用容器、虚拟机工具

next.js export 静态 Image src 图片路径

默认情况,当 export 静态网站时,图片因为路径问题无法正常显示。
处理方法:自定义一个 image loader

  1. next.config.js 中添加一条配置
const nextConfig = {
    images: {
        loader: "custom",
    },
};
  1. 项目页面中添加一个函数
function imageLoader({ src }) {
    return `/images/${src}`; // REPLACE WITH YOUR IMAGE DIRECTORY (in /public dir)
}
  1. 使用 Image 标签时,添加一个 loader 参数
<Image
	src="icon.png"
	loader={imageLoader}
	width={14}
	height={14}
	alt="icon"
/>

参考:

Rust WASM 获取当前网页的URL

Rust 写的 WASM 放在网页端使用,想在Rust代码中获悉当前网页的网址该如何实现?

首先要在 rust 项目的依赖文件中启用 web-sys 的 WindowDocument 特性,示例:

Cargo.toml

[lib]
crate-type = ["cdylib"]

[dependencies]
wasm-bindgen = "0.2"

[dependencies.web-sys]
version = "0.3.66"
features = ["Document", "Window"]

然后使用(类似JS的方式访问)浏览器API接口,示例:

CSS 选择器 父级元素

有时候,某个父级元素没有特征,需要依靠子元素来定位父级元素。

css select parent element/node/tag by child elements

可使用 CSS 函数式伪类 :has() 来实现。

示例1:

<div>
	<li>
		<span class="active"></span>
	</li>
</div>
li:has(> span.active) { /* 会选择 li tag */ }
div:has(li > span.active) { /* 会选择 div tag */ }

示例2: