将数据加载为 .js 文件与加载为 JSON

Posted

技术标签:

【中文标题】将数据加载为 .js 文件与加载为 JSON【英文标题】:Loading data as .js file vs. loading as JSON 【发布时间】:2015-04-13 17:19:08 【问题描述】:

我在此找不到任何现有页面,也许我没有使用正确的搜索关键字...

假设我正在为我的静态网站实现一个简单的 javascript 搜索引擎,我的可搜索内容(一个大文件)存储在一个文件中并在初始页面加载期间加载。

现在我可以通过两种方式加载内容文件:

1. 内容存储在 search_content.js 文件中的 Javascript 变量中:

// Large js file
var content = "pages": [ "page": "...", ..., ... ];

在我的 html 中,我使用以下方式加载它:

<script src="search_content.js"></script>

而我的搜索引擎只会访问content 变量。

2. 将可搜索内容保存在 JSON 文件中search_content.json

// Large json file
"pages": [ "page": "...",  ...  ... ]

并在页面加载后将文件加载到我的搜索库中:

$.ajax(
  dataType: "json",
  url: url_to_my_json_file,
  data: data,
  success: success
);

方法 1 可以在没有 Web 服务器的情况下运行,但除此之外,每种方法有什么区别、优点/缺点?它们在性能方面是否相同?

【问题讨论】:

【参考方案1】:

我会说,当页面的初始渲染存在明显延迟时,后者可能会更好,因为这可以被视为一种延迟加载的方式。

就性能而言,第一个可能更有效,但是感知的性能在这里可能是一个更重要的因素。

我想到另一件事,第二种方式不会污染全局范围,这可能是一个优势。

【讨论】:

方法一中,如果我将 可以,前提是您在包含之前没有尝试实际使用数据。【参考方案2】:

你可能想看看这个帖子Using JSON to Exchange Data

【讨论】:

链接的帖子似乎很有用,但仅链接的答案就没那么有用了 :) 请尝试在此处收集最重要的观点,或者将其作为评论发布。 感谢您的链接!我在研究这个问题时遇到的一个问题是找到与此相关的文章,该文章应该作为一个很好的起点:) @slsdo 我有兴趣找到您问题的答案。你找到文章中的相关部分了吗?我不能。老实说,发现这个问题很有趣的人已经精通 JSON 是什么以及如何创建 JSobject 等,本文花费了大量时间来解释这些内容。关心tl;博士?谢谢 @anu 在阅读完那篇文章后,我同意你的观点,如果我将来确实发现任何问题,它并不能真正回答我的特定问题(性能、优缺点、每种方法等)我一定会回来更新我的帖子!【参考方案3】:

由于您正在加载 data,因此使用 data 格式而不是代码似乎是正确的。通过使用 JSON 而不是 JS 代码,您可以限制可能失败的范围。即使数据解析失败,页面本身也不会受到影响,只有搜索不起作用。所以 JSON 方式更安全。

由于显示初始页面可能不需要数据,因此异步加载它似乎是正确的,这样就不会延迟页面的加载。除非您将脚本标记放在 HTML 的末尾,否则脚本标记将延迟页面的加载。

【讨论】:

以上是关于将数据加载为 .js 文件与加载为 JSON的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 文件中的项目数据动态加载到 React

Echarts动态加载后台数据

用例将 json 加载为一行而不是多行,特定于数据集

有没有办法将 json 文件与所有其他 js 文件一起加载? [复制]

将 JSON 多行文件加载到 pyspark 数据框中

Select2 从本地 json 文件加载数据