要求JS将所有内联javascript排除在html之外-合理吗?

要求JS将所有内联javascript排除在html之外-合理吗?,javascript,requirejs,Javascript,Requirejs,当我们能够阅读时: 为了充分利用优化工具, 建议您将所有内联脚本保留在HTML之外,并且仅引用 使用require调用require.js加载脚本 好吧,好吧,很有趣。我们只在屏幕上知道的字段ID之类的东西呢? 假设我返回1000行sql,并且需要一个用于行条目的函数,该行条目的ID是我在视图中获得的,但不是其他 让我们加入一个PHP变量 <script>myFancyJSfunction( <?php echo $sqlRow[3] ?>);</script>

当我们能够阅读时:

为了充分利用优化工具, 建议您将所有内联脚本保留在HTML之外,并且仅引用 使用require调用require.js加载脚本

好吧,好吧,很有趣。我们只在屏幕上知道的字段ID之类的东西呢? 假设我返回1000行sql,并且需要一个用于行条目的函数,该行条目的ID是我在视图中获得的,但不是其他

让我们加入一个PHP变量

<script>myFancyJSfunction( <?php echo $sqlRow[3] ?>);</script>
myFancyJSfunction();
编辑我的意思是它甚至不能是一个变量,也可以是这样一个硬编码的变量

<script>myFancyJSfunction( "idWhichIsOnlyCorrectOnThisScreen");</script>
myFancyJSfunction(“idwhichisonlycorreconthisscreen”);

我该如何将这种内联javascript排除在html之外呢?

简单,只需放入内联JSON即可

*即兴使用,语法可能有点不正确,但过程是有效的*

根据具体情况,您可能需要正确编码该值。这是一个简单的例子

<script type="application/json" id="myvars">
{
   "inlineParam": "<?php echo $sqlRow[3] ?>"
}
</script>

事实并非如此——我的团队中有一位才华横溢的人发现了这一点。定义整个javascript函数会很酷。但是json不喜欢换行,有点悲哀。可能是实际使用纯javascript和
“+
用于换行符。然后使用eval执行字符串。是的,天哪,上帝抛弃了我。Imho:什么都行。不需要json往返。只需在page@Munter这就是重点。您不能在页面上设置全局变量,因为解析会去除所有JavaScript。什么解析?r、 js?对我来说,听起来很不舒服。使用更好的捆绑工具
var globals = JSON.parse($("#myvars").text());
myFancyJSfunction(globals.inlineParam);