Javascript 如何使用CSS和JS在不同的.html页面上重用导航栏?
我总共有3个页面:Javascript 如何使用CSS和JS在不同的.html页面上重用导航栏?,javascript,html,css,parceljs,Javascript,Html,Css,Parceljs,我总共有3个页面:index.html、sketch.html和user profile.html 它们都有相同的导航栏(我现在只是复制并粘贴了nav元素),但我现在意识到这不是最好的主意 导航栏在屏幕上有它的位置(HTML)、样式(CSS)以及登录和注册功能(Javascript)。我将如何将这些内容组合成三个不同的页面 因为我使用的是模块绑定器(Parcel.js),所以我想为每个页面创建一个.js和.css。因此,例如文件夹索引将具有: index.css->将导入必要的元素,例如(伪代码
index.html
、sketch.html
和user profile.html
它们都有相同的导航栏(我现在只是复制并粘贴了nav
元素),但我现在意识到这不是最好的主意
导航栏在屏幕上有它的位置(HTML)、样式(CSS)以及登录和注册功能(Javascript)。我将如何将这些内容组合成三个不同的页面
因为我使用的是模块绑定器(Parcel.js),所以我想为每个页面创建一个.js
和.css
。因此,例如文件夹索引
将具有:
index.css
->将导入必要的元素,例如(伪代码):import../style/navbar.css“
index.js
->将导入日志记录和注册所需的脚本,例如:require(“…scripts/sessions.js”)代码>
index.html
->将导入这两个文件
。。。并对每一页执行相同的操作
但是。。。这真的有必要吗?有更好的方法吗?老实说,用vanilla Javascript实现这一点并不容易。基本上,您要么使用JS创建导航栏,然后将其导入到每个页面,要么复制并粘贴它
这个问题的行业解决方案是使用React、Vue或Angular,所有这些技术都允许您创建和重用JSX“组件”。换句话说,在React中,您可以创建一个导航栏组件,该组件可以轻松导入网站的任何“页面”。但是对于香草HTML/Javascript,这真的不是一个选项。老实说,用香草Javascript实现这一点并不容易。基本上,您要么使用JS创建导航栏,然后将其导入到每个页面,要么复制并粘贴它
这个问题的行业解决方案是使用React、Vue或Angular,所有这些技术都允许您创建和重用JSX“组件”。换句话说,在React中,您可以创建一个导航栏组件,该组件可以轻松导入网站的任何“页面”。但是对于香草HTML/Javascript,这真的不是一个选项。有一个肮脏但有效的香草JS黑客:
async function includeHTML() {
const includes = document.getElementsByTagName('include');
[].forEach.call(includes, include => {
let filePath = include.getAttribute('src');
fetch(filePath).then((file) => {
file.text().then((content) => {
include.insertAdjacentHTML('afterend', content);
include.remove();
});
});
});
};
现在,您可以创建如下元素:
只需运行函数。如果您添加了一些javascript功能,请使用Promissions,以便代码在此功能之后执行
includeHTML()
有一个肮脏但有效的黑客:
async function includeHTML() {
const includes = document.getElementsByTagName('include');
[].forEach.call(includes, include => {
let filePath = include.getAttribute('src');
fetch(filePath).then((file) => {
file.text().then((content) => {
include.insertAdjacentHTML('afterend', content);
include.remove();
});
});
});
};
现在,您可以创建如下元素:
只需运行函数。如果您添加了一些javascript功能,请使用Promissions,以便代码在此功能之后执行
includeHTML()
您是否试图避免使用任何服务端语言来实现这一点?如果是这样,您可以尝试使用链接到每个页面的JavaScript动态创建导航栏。您是否试图避免使用任何服务端语言来完成此任务?如果是这样,您可以尝试使用链接到每个页面的JavaScript动态创建导航栏。