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

Posted

技术标签:

【中文标题】asp.net mvc 开发人员的 javascript 最佳实践【英文标题】:javascript best practices for asp.net mvc developers 【发布时间】:2011-11-02 09:51:06 【问题描述】:

抱歉这个问题太主观了。

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

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

我有罪并想摆脱的一些事情:

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

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

【问题讨论】:

@jfar - 不知道为什么要投反对票,尤其是当我要求提供有关替代方案的更多信息时。 +1。我认为这个问题可能与许多开发人员有关,尤其是。刚开始使用 MVC 的人,比如我。 @jfar - 为费心写下原因而投反对票,尽管我不同意这个原因。当人们匿名投票时,我讨厌它。 【参考方案1】:

我想我会投入 2 美分。

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

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

    你会发现 JScript is quite OO 这与 JScript 如何使用 JSON 有关。我发现 JScript 的灵活性使它看起来与 OOP 不同。我在 JScript 方面的有限经验是保持简短和简洁,这将重新执行可重用的 JScript。

    我认为这可以通过 JScript 的练习来克服。我在这里发现的最大问题不是名称间距,而是如何避免 JScript 的重复/双重加载。如果视图要“自包含”,理论上应该加载自己的 JScript,但这会导致 JScript 被多次加载甚至产生冲突。同样,一个好的 HTML 助手可以在这里拯救你(抱歉,我没有很好的例子,但谷歌它,你不会出错)。

总体而言,JScript 非常强大,将 Web 编程提升到了一个全新的水平。 JScript 将越来越多地成为 Web 平台的一部分,尤其是当每个人都转向 HTML 5 时。使用 MVC 和 JSript,有 100 种不同的方法可以做完全相同的事情,最佳实践只能带您到此为止。其余的由您决定,具体取决于您要实现的目标、目标受众以及您支持的浏览器。

【讨论】:

【参考方案2】:

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

http://weblogs.asp.net/jaimedelpalacio/archive/2011/03/23/a-way-to-organize-your-javascript-code.aspx

我很想知道你的想法。

参考关于 SO 的类似问题

Is there a better way to organise javascript in a single file with specific code for multiple pages?

【讨论】:

我喜欢这个。唯一的问题是,如果使用客户路线,该策略将会失败。一种解决方法是使用文本模板来生成路由以及将控制器连接到策略的 JavaScript 引导程序。我们的想法是不要重复自己。【参考方案3】:

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

【讨论】:

以上是关于asp.net mvc 开发人员的 javascript 最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

SignalR在ASP.NET MVC中的应用

新手轻松学会MVC

大咖开讲:一小时学会.NET MVC开发的那些事儿

asp.net MVC 路由

ASP.NET web开发 MVC设计模式 上手

七天学会ASP.NET MVC ——深入理解ASP.NET MVC