Javascript 如何使用CSS和JS在不同的.html页面上重用导航栏?

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->将导入必要的元素,例如(伪代码

我总共有3个页面:
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动态创建导航栏。