2

我目前正在做一个项目,并用 Javascript 编写了整个页面。

我创建了一个基本功能:

create_element(parent, type, style, attributes);

示例用法:

var container = create_element(document.body, "div", {width: "100%", height: "100%"});
var header_bar = create_element(container, "div",  {width: "100%", height: "50px"});
var title_span = create_element(header_bar, "span", {fontSize: "18px", fontFamily: "arial", color: "black"});
title_span.innerHTML = "Example Website";

等等...

我将这种方法用于网站的整个布局。使用这种方法有很大的缺点吗?显而易见的事实是,可能仍然有人禁用 JS。

如果 Javascript 是创建和呈现项目而不是将它们硬编码到 HTML 中,那么页面加载时间是否存在明显差异?

谢谢!

TL;博士-

创建了一个 create_element 函数,并使用它将所有元素绘制到屏幕上。包括页面的基本布局。

4

6 回答 6

9

当您尝试动态生成非动态内容时,您会遇到许多问题:

  1. 可维护性将变得非常困难。如果您想对您的网站进行彻底的更改,您将不得不编辑 JS,而不仅仅是更改 CSS 或一些 HTML。
  2. SEO - Google 无法索引动态数据。如果您希望通过搜索引擎找到您的网站,这并不好。
  3. 你正在混合你的图层。通过不分离关注点(您的视图与您的内容与......),您再次增加了可维护性问题并为您未来的自己或将来必须接触您的代码的其他开发人员创造了一个问题。

现在,做一些动态生成并没有错——但要适当地做。我强烈建议不要为您的整个网站动态生成内容。

根据对原始问题的评论进行更新

你喜欢 JS 真是太好了。而且,我绝对同意 HTML 可能有点无聊。但是,如果你正确地分离了你的关注点,你真的应该只写很少的 HTML,并且可以很快回到你喜欢编码的内容。但是,请注意你不要试图将一种语言强加到它不适合的东西中当另一种语言被创造出来完美地做到这一点时。(锤子/钉子规则)

另外,不要忘记 HTML5 和 CSS3 非常强大。你可以用它做很多事情,甚至不必接触 JS(假设满足客户需求)。

于 2012-08-01T14:10:34.947 回答
3

一个主要问题是,如果您这样构建网站,Google 不会将您网站的任何内容编入索引。

此外,通过这种方式,您的内容、逻辑和样式不会被分离,如果您在单独的文件和服务器端脚本语言中使用 html / css,我认为这是一个巨大的好处。

于 2012-08-01T14:06:55.480 回答
2

如果您确保用于呈现页面的元数据没有作为一个整体进行评估,那么整个网站由 javascript 基于服务器的响应生成并没有错,因为这会导致安全问题。

于 2012-08-01T14:05:20.457 回答
0

在我看来,如果它不是动态内容,那么直接使用 html 会更好。

此外,拥有单独的 CSS 文件比将其设置为内联更合适。

于 2012-08-01T14:05:46.387 回答
0

没有理由不能完全由 javascript 生成页面内容,但我不会支持这种逐个元素的方法。您甚至没有使用任何样式规则,只使用内联样式。此外,在这种情况下,对 html 块使用某种模板机制会更易于维护,例如在 Underscore.js 中使用的。(那里有很多模板解决方案,比如 Mustache 和 Handlebars;我只是给出一个我用过的。)有几种方法可以维护 html 而无需将它放在某个 javascript 文件中,但即使它javascript 文件,它会比这个元素更易于维护。

于 2012-08-01T14:17:14.270 回答
0

BackboneJS做到了这一点。您只需要确保在客户端使用 JS 来补充服务器端渲染,并且任何仅在客户端完成的渲染都能够全部或部分在服务器上进行。

于 2012-08-01T14:09:08.500 回答