【问题标题】:How to transfer mvc view javascript code to separate js file如何将mvc视图javascript代码传输到单独的js文件
【发布时间】:2014-01-29 06:52:48
【问题描述】:

我在我的 asp.net MVC-5 应用程序中使用Knockoutjs。我有以下 javascript 视图:

<script type="text/javascript">

    var model = "@Html.Raw(Json.Encode(Model))";

    $.get("@Url.Action("_CityPartial")" ...)

    //any much more code using similar Html helpers + pure javacsript code.

</script>

现在我想知道,有没有办法将这个 javascript 代码转移到一个单独的 js 文件中(保持 Html 帮助程序不变)。

我想将 javascript 代码传输到单独的文件,因为我不希望任何用户检查我的 javascript 代码(使用 chrome 检查元素或任何其他方式)。

如果无法进行转移,请告诉我是否有任何方法可以缩小视图本身的 javascript??

【问题讨论】:

  • JavaScript/Html 中没有安全性。由于它将被传输到客户端,因此用户可以根据需要查看它。将关键代码保留在服务器本身中,每当所需的计算/数据向服务器发出 ajax 请求时

标签: javascript jquery asp.net asp.net-mvc knockout.js


【解决方案1】:

您可以通过外部 JavaScript 文件加载它,但不幸的是,由于 JavaScript 是一种客户端脚本语言,无论是内联加载还是外部加载,客户端仍然可以查看正在其浏览器上执行的代码。

您提到缩小 - 如果客户真的想查看您的代码,这仍然可以由客户解释,但是网上有很多工具可以为您缩小 JavaScript。

例子:

【讨论】:

  • 其实他不能像你描述的那么简单,因为他在里面使用了内联的asp.net代码
  • 您可以将使用 ASP.net 输出的数据存储到主脚本的 JavaScript 变量中,并在外部文件中调用 JavaScript 变量。我不理解否决票,因为我已经为他的评论提供了答案i dont want any user to check my javascript code
【解决方案2】:

您可以创建一个包含您的代码的外部 .js 文件,并将您的序列化 json 对象传递给它,如下所示:

<script type="text/javascript">
    var model = @Html.Raw(Json.Encode(Model));
    DoThis(model);
</script>

这样做的好处是将 javascript 的主体保存在一个单独的文件中。

任何其他 razor 变量都可以传递给 javascript 中定义的方法,与上面的模型相同。

然而,正如 Stanyer 所说,这仍然是 javascript,它将在客户端上运行。

【讨论】:

    【解决方案3】:

    不,您不能将 @Html 助手保存在外部 javascript 文件中。它们都是服务器端语法,将在您的 HTML 页面内联呈现。

    您最多可以做的是,将其分配到页面中的var 变量中,然后在外部页面中引用它。

    【讨论】:

      猜你喜欢
      • 2016-03-23
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 2023-03-13
      • 2011-06-24
      • 1970-01-01
      • 2019-12-18
      • 2015-11-28
      相关资源
      最近更新 更多