asp.net mvc开发人员的javascript最佳实践

asp.net mvc开发人员的javascript最佳实践,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,很抱歉这个问题太主观了 我正在寻找一些如何在asp.net mvc应用程序中更好地管理javascript的实用示例 在jQuery之前,我尽量避免使用javascript。现在我经常使用它,但我觉得我可能错过了一些在大型web应用程序中构建javascript代码的最佳实践/建议 我对某些事情感到内疚,并希望从中摆脱: 我的视图中的内联javascript。我不是在说大量的代码,但在每个视图上都有一些初始化代码对我来说并不少见 一个大的“站点”javascript文件。随着应用程序中使用的插件

很抱歉这个问题太主观了

我正在寻找一些如何在asp.net mvc应用程序中更好地管理javascript的实用示例

在jQuery之前,我尽量避免使用javascript。现在我经常使用它,但我觉得我可能错过了一些在大型web应用程序中构建javascript代码的最佳实践/建议

我对某些事情感到内疚,并希望从中摆脱:

  • 我的视图中的内联javascript。我不是在说大量的代码,但在每个视图上都有一些初始化代码对我来说并不少见
  • 一个大的“站点”javascript文件。随着应用程序中使用的插件列表的增加(例如jqueryui),初始化每个插件的“启动”功能也在增加。这通常是为了避免问题1(添加javascript内联)。也许每个视图一个javascript文件是更好的解决方案
  • 一切似乎都很程序化。我习惯于在.net中以面向对象的方式工作,但当涉及到javascript时,这似乎已经过时了。现在我知道OOP当然是可能的,并且受到javascript的鼓励,但是我可以看看一些实际的例子,说明我应该如何在一个真正的web应用程序的上下文中实现OOP
  • 名称空间/项目结构-我已经看到了一些javascript名称空间的示例(借助对象),并且喜欢这种方法,但同样需要更多的背景知识

  • 任何人们可以推荐的网站、书籍等都将不胜感激。

    我使用了这里描述的方法:

    我很想知道你对它的看法

    参考一个类似的问题


    对我来说,像这样的库在组织我的JS代码方面帮助很大,它非常强大,我在多个项目中使用过它,而且效果非常好。(我也是一名asp.net mvc开发人员,但这也适用于其他技术,此外,发明它的人在asp.net mvc方面有很多经验)

    我想我应该投入2美分

  • 建议不要在视图中使用JScript,我发现可以通过使用包含JScript的HTML帮助程序或将JScript推入JS文件并在HTML帮助程序中初始化来避免这种情况。这是第三方MVC控制开发人员(如Telerik)使用的。如果您决定将JScript推入控制器,您会发现它很快就会变得一团糟

  • 我经常发现自己处于相同的场景中,每个视图都有一个JS文件,但这可以合并为每个模块有一个JS。这同样取决于代码的复杂程度。如果发现许多视图具有相同的初始化,则可以采用基本视图方法。这也被认为是最佳做法

  • 您会发现这与JScript如何使用JSON有关。我发现JScript的灵活性使它看起来远离OOP。我对JScript的有限经验是保持它的简洁,这将重新强制执行可重用的JScript

  • 我认为这可以通过在JScript中的实践来结束。我在这里发现的最大问题不是名称间距,而是如何避免重复/双重加载JScript。如果视图是“自包含的”,理论上应该加载自己的JScript,但这将导致多次加载JScript,甚至产生冲突。同样,一个好的HTML助手可以在这里为您节省时间(Apologies,我没有一个好的例子,但谷歌它,您不会出错)


  • 总的来说,JScript非常强大,它将web编程打开到了一个全新的水平。JScript将越来越成为web平台的一部分,尤其是当每个人都进入HTML5时。有了MVC和JScript,有100种不同的方法来做完全相同的事情,而最佳实践仅能帮您做到这一点。剩下的就由你来决定了,这取决于你想要实现什么,你的目标受众是谁,以及你支持什么浏览器。

    @jfar-不知道为什么会有否决票,特别是我想了解更多关于备选方案的信息。+1。我认为这个问题可能与许多开发人员有关,特别是一些刚开始使用MVC的人,比如I.@jfar-Upvote在downpvote中懒得写为什么,尽管我不同意为什么。我讨厌人们匿名投票,我喜欢这样。唯一的问题是,如果使用定制路线,该策略将失败。解决这个问题的一种方法是使用文本模板生成路由和JavaScript引导,将控制器连接到策略。这个想法就是不要重复你自己。