<header>
<nav>
<ul>
<li><a href="#home">首页</a></li>
<li><a href="#about">关于</a></li>
</ul>
</nav>
</header>
<main>
<article>
<h1>文章标题</h1>
<section>
<h2>章节标题</h2>
<p>章节内容</p>
</section>
</article>
<aside>
<h3>相关文章</h3>
<ul>
<li>推荐文章1</li>
<li>推荐文章2</li>
</ul>
</aside>
</main>
<footer>
<p>版权信息 © 2024</p>
</footer>
// localStorage 示例
localStorage.setItem("user", JSON.stringify({ name: "张三" }));
const user = JSON.parse(localStorage.getItem("user"));
// sessionStorage 示例
sessionStorage.setItem("token", "xxx");
const token = sessionStorage.getItem("token");
// main.js
const worker = new Worker("worker.js");
worker.postMessage({ data: [1, 2, 3, 4] });
worker.onmessage = function (e) {
console.log("计算结果:", e.data);
};
// worker.js
self.onmessage = function (e) {
const result = e.data.data.map((x) => x * x);
self.postMessage(result);
};
// 注册 Service Worker
if ("serviceWorker" in navigator) {
navigator.serviceWorker
.register("/sw.js")
.then((registration) => {
console.log("SW 注册成功:", registration.scope);
})
.catch((err) => {
console.log("SW 注册失败:", err);
});
}
// sw.js
self.addEventListener("install", (event) => {
event.waitUntil(
caches.open("v1").then((cache) => {
return cache.addAll(["/", "/index.html", "/styles.css", "/app.js"]);
})
);
});
self.addEventListener("fetch", (event) => {
event.respondWith(
caches.match(event.request).then((response) => response || fetch(request))
);
});
// Node.js Express 示例
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
res.header("Access-Control-Allow-Headers", "Content-Type");
next();
});
function jsonp(url, callback) {
const script = document.createElement("script");
const callbackName = "jsonp_" + Date.now();
window[callbackName] = function (data) {
callback(data);
document.body.removeChild(script);
delete window[callbackName];
};
script.src = `${url}?callback=${callbackName}`;
document.body.appendChild(script);
}
// 使用示例
jsonp("http://api.example.com/data", function (data) {
console.log("获取的数据:", data);
});