网站如何使用 Javascript 而不在浏览器中显示任何结构 HTML?

How can a site Use Javascript and NOT display any structural HTML in the browser?

http://thelovemagazine.co.uk

我查看了该站点的浏览器源代码并通过 Charles Proxy 进行了调查。我用 Wappalyzer 看看他们在用什么,看起来像 Cowboy、Erlang、NodeJS、Express、React 和 Modernizr。

我看不到任何结构 HTML。看起来它只是在浏览器中抛出 JavaScript 并使用 JSON(也许?)来显示内容。此外,CSS 文件有非常奇怪的 class 名称,这些名称看似毫无意义,例如 .jkhl4350s

我的问题是,他们是怎么做到的?也许是某种混淆事物的 CMS? JavaScript 可以呈现没有 HTML 结构的内容吗?

我正在尝试解决这个问题,因为我想查看网站结构以及它们如何使用 diff JS 库。

我很困惑,非常感谢任何见解。

谢谢!

通过阴影-DOM : Mozilla Developer Shadow-DOM

My question is, how are they doing this?

他们正在使用 React,正如您将在整个源代码中看到的许多 data-reactid 属性所证明的那样(React 创建了用户界面的声明模型,因此任何时候数据都是更改后,UI 会重新呈现以反映这些更新。幕后有一些优化,因此我建议您查看他们的文档以更好地理解。)

Can JavaScript render content without HTML structure?

JavaScript 可以渲染 DOM 个元素。在 React 中,您通常会在组件的 render 函数中看到它:

render() {
  return <div>Something here</div>;
}

very odd class names that are seemingly meaningless like .jkhl4350s

它们一点也不无意义。他们可能正在使用类似 CSS modules 的东西,它摆脱了全局 CSS 命名空间。这就是为什么 class 名称看起来是一堆乱码。

I'm trying to figure this out because I wanted to see the website structure and how they used to the diff JS libraries.

如果没有看到他们的预编译源代码,将很难做到这一点,因此除非他们的代码在某个地方是开源的,否则您可能 运行 难以理解它(因为您已经指出,编译后的代码看起来有点奇怪)。看看 React 文档,你会有更好的运气。

这是一个相当宽泛的问题,因此我建议您首先阅读我在上面提供的两个链接中的文档。