任务:我们在后端有一些动态生成的数据,应尽快传递给前端
问题是:如何以更快,更高效和可维护的方式将数据从后端传递到前端JS
以下是将数据直接发送到html(template-part.php)的示例:
<body>
<!-- HTML GOES HERE -->
<script> const someDataJSON = <?= json_encode($someBackEndData); ?></script>
<script src="/path/to/script/that/rely/on/someDataJSONObject.js"></script>
</body>
假设$someBackEndData
是一个有效的json-serialization-ready数据数组。我们用模板传递它,所以这里发生的是我们将带有模板的JSON发送到客户端。一旦浏览器呈现模板,someDataJSON就可用于所有脚本 globaly 。
优点/缺点:
JS框架通常需要时间来加载其核心并编译表达式和模板(AngularJS及其$ compile等)。因此,加载的数据不需要快速,因为前端应用程序仍需要一些时间来启动。在此之前:没有人可以处理我们加载的数据
模板使用example.php:
<!-- template body here -->
<script src="/path/to/webpack/parseljs/rollup/whatever/bundle.js"></script>
</body>
输入换bundler.js:
import angular from 'angular';
// declare variable to hold our data
const JSONdata = [];
// fetch our data
fetch('/path/to/jsondata/')
.then(data => JSONdata = data.json())
angular.module(/*......... APPLICATION CODE
优点/缺点:
我们可以通过使我们的应用程序延迟加载来摆脱全球范围的污染:
fetch('/path/to/jsondata/')
.then(data => {
const JSON = data.json();
angular.module('ModuleName', [...])
.constant('jsonData', JSON)
/* application code */
});
可能的缺点:
then
声明中执行 .finally()
块内启动我们的应用程序来处理它,这只是实现细节)很高兴听到您的建议以及建设性的批评。