如何分享一个header即HTML/CSS/JS?

How to share a header that is HTML/CSS/JS?

我在工作中开始了一个新项目,我们的任务是创建一个通用 Header。这意味着在我们拥有的不同 domains/servers、我们的 customer-created 站点和 third-party 站点上,我们需要一种非常简单的方法来将此代码提供给人们。

这个 Universal Header 还将包含一些搜索功能,这与我的问题略有相关。简而言之,它将包含 JavaScript 以更改其 <form> 元素上的 action 属性,具体取决于下拉选择以及提交表单。

我们希望 header 工作的方式是它 位于 一个位置,我们正在考虑某种 HTTP 请求来获取 header.我们认为,这将最大限度地提高 Universal Header 的便携性。

header 将需要与 WordPress 很好地集成(这不是问题),但也需要与 AngularJS 集成,在我们的讨论中,这是否可能不太确定。因此 "slightly relevant" 部分搜索功能。

我们讨论的解决方案之一是在 HTML 中执行此操作,例如 , but I've always been a little more skittish about requesting raw HTML over HTTP, and just dumping it into a page, but maybe it's the right way to go, but maybe not? Since we weren't sure, we thought about the JIRA Issue Collector,他们基本上将 JavaScript 流式传输给他们的客户,然后构建问题跟踪器按钮,固定在页面的一侧,其中包含一些 HTML、CSS 和 JS。然后用户可以单击此按钮,这将打开一个准备提交的表单。这可能过于简单化,但基本上,他们的 JS 代码片段打包 HTML/CSS/JS 并将数据提交到他们的服务器。

这是我们希望的方向:让一个文件包含我们需要的一切。但是,我想知道一些事情:

本来,对于上面的最后一点,我想把它附加到一个window object。然后在 JavaScript 中创建一个自定义事件处理程序——但是你是怎么做到的呢?也许下面的伪代码偏离了基础,但这就是我问这个问题的原因:

/// inside the SearchController in AngularJS
$scope.defaultRealm = 'products';

/// to select default realm
document.when('angularJSLoads', function () {
    document.getElementById('universial-header').find('.dropdown', function () {
        // put actions to select $scope.defaultRealm in the dropdown options.
    })
})

/// to search in own defaultRealm
document.querySelector('.dropdown').onEvent('headerSearch', function (e) {
    e.preventDefault();
    var data = event.target.value;

    // do searching in AngularJS
})

如果有更好、更简洁的方法,我会很高兴听到。

感谢您对此提供的任何帮助。这对我们来说是一个新领域,总的来说,我们希望能够拥有一个高度可维护的 header,可以轻松地与不同的域共享,等等

就我个人而言,这就是我的处理方式。

我会在 header 将加载的所有页面上创建一个计划加载到其中的容器。该容器应该有某种背景表明它没有加载(通常这是灰色的,但你的 UX 案例可能不同)

然后,要实际交付您的 header,请使用 JS 构建它。

创建一个 JS 文件(比如 buildHeader.js),其中包含写入您的 html 的代码,向您的 css 写入一个请求,并为您的其他 js 写入一个请求。