Загрузка веб-страницы напрямую из файла JavaScript исключительно - PullRequest
3 голосов
/ 22 апреля 2019

У меня есть желание сделать то, что я никогда не видел.

Я бы хотел создать веб-страницу , используя только javascript на стороне клиента . Например, я хочу разместить файл javascript по адресу www.webpage.com/index.js, и браузер должен запустить этот файл javascript. В этом файле я сгенерирую html и css, но я бы хотел, чтобы точкой входа был исключительно этот файл javascript вместо HTML.

Если это невозможно, думаю, так и должно быть. Часто мои HTML-файлы - это просто заголовок, заголовок и пустое тело. В таком случае глупо, что сначала нужно загрузить html-файл, а затем только после этого браузер может загрузить javascript-файл, который фактически заполняет это пустое тело содержимым.

Я понимаю, что поисковые системы могут не знать, как индексировать страницы, где html генерируется клиентским javascript, но, опять же, я говорю, что они должны быть в состоянии это сделать и, вероятно, в конце концов, если они этого еще не сделали.

Я никогда не видел, чтобы это было сделано. Это возможно? Если да, можете ли вы направить меня к любым ресурсам, посвященным этой теме. Я ничего не смог найти.

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Я написал много «страниц», которые просто

<!DOCTYPE html>
<html>
   <head><meta charset="utf-8"></head>
   <body><script>

// The real stuff goes here, as inlined Javascript
// No need to make an extra roundtrip to the server
let d = document.body.appendChild(document.createElement("div"));
d.textContent = "Hello, world.";

   </body></script>
</html>

Так что, по сути, единственное, что я помещаю в часть HTML, - это исправление неверного решения, принятого в прошлом (имеющего кодировку по умолчанию ISO-8859-1 вместо UTF-8). Этот тип файла действительно является Javascript, с минимальной упаковкой, необходимой для загрузки и запуска браузера.

1 голос
/ 04 мая 2019

Как указано в другом месте , можно создать JavaScript, который также является допустимым HTML-файлом.

<!-- --><script>
console.log('Hello, World!');
// </script>

Это работает, потому что спецификация JavaScript имеет

B Дополнительные функции ECMAScript для веб-браузеров

B.1 Дополнительный синтаксис

B.1.3 HTML-подобные комментарии

...

SingleLineHTMLOpenComment ::
<!-- SingleLineCommentChars opt

...