将数据加载为 .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的主要内容,如果未能解决你的问题,请参考以下文章