Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NET MVC项目中组织前端JavaScript代码?_Javascript_Asp.net Mvc - Fatal编程技术网

如何在ASP.NET MVC项目中组织前端JavaScript代码?

如何在ASP.NET MVC项目中组织前端JavaScript代码?,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我有一个ASP.NETMVC项目,它采用了很多JavaScript(jQuery和d3)。我是web开发新手,所以我想寻求一些关于如何组织前端脚本代码的帮助 我目前的方式是,“视图”下的每个文件夹只有一个对应的.js文件(这意味着该文件夹下的所有局部视图(.cshtml),共享该.js文件),我在_Layout.cshtml的$(document).ready()中显式初始化项目的所有.js文件 这就引出了两个问题: 因为所有的局部视图都将这些代码放在一个.js文件中,所以它使每个.js文件都变

我有一个ASP.NETMVC项目,它采用了很多JavaScript(jQuery和d3)。我是web开发新手,所以我想寻求一些关于如何组织前端脚本代码的帮助

我目前的方式是,“视图”下的每个文件夹只有一个对应的.js文件(这意味着该文件夹下的所有局部视图(.cshtml),共享该.js文件),我在_Layout.cshtml的$(document).ready()中显式初始化项目的所有.js文件

这就引出了两个问题:

  • 因为所有的局部视图都将这些代码放在一个.js文件中,所以它使每个.js文件都变得庞大而复杂
  • 因为我在加载_Layout.cshtml时硬编码初始化了所有的.js文件,所以即使没有加载一个视图,也会执行它的behind.js,听起来不灵活 下面是我的问题:

  • 如何使每个局部视图都有自己的.js文件(将当前的.js分割成小块)
  • 如何仅在加载部分视图时加载并运行该部分视图的.js文件
  • 如果我使用TypeScript和KnockoutJS,它们在组织前端脚本代码方面有什么好处吗

  • 提前谢谢。

    给猫剥皮有多种方法。如果您有特定于局部视图的javascript代码,那么完全可以跳过包含文件并通过
    标记将javascript直接嵌入其中的步骤。这解决了您发布的问题1和问题2,因为razor部分视图在加载时可以归结为插入DOM中的任意HTML


    至于TypeScript和KnockoutJS,它们提供的好处对你自己和你正在从事的项目来说都是非常主观的。我建议你仔细阅读他们提供的功能,看看这是否是你想要追求的途径——对此没有正确或错误的答案,至少在很多特定的背景下,你不需要了解你在做什么。

    将你的javascript代码分成多个文件,这样每个js文件都对应于部分视图

    然后在部分视图中加载相应的js,而不是_Layout.cshtml文件。这样,仅当加载部分视图时,才会执行相应的js

    TypeScript是一种应用于基本javascript的基于类的面向对象编程风格,由Microsoft开发和维护。这无助于组织文件,但有助于以OOP风格维护js代码


    KnockoutJS是应用于javascript的模型-视图-模型(MVVM)模式。您可以在KnockoutJS中模块化每个js文件,即模型、视图和ViewModel的单独js,但它们将相互依赖。(请参阅)

    您可以使用Rails吗?查看YouTube上的“rails vs.net”。@FlyntHamlock我不能使用其他框架。谢谢,你的意思是,例如,我有一个部分视图:dashboard.cshtml,还有一个.JS文件:dashboard.JS。然后使用插入它?我认为如果dashboard.cshtml在_Layout中呈现多次,那么这将引入重复的JS代码?