1

这适用于所有服务器/客户端 Web 应用程序,但我想知道它适用于 rails 或 asp.net。

一个好的做法是拥有 1 个包含我所有 JavaScript 的大 application.js 文件。因此,当我有多个页面或操作时,如何确定 javascript 的范围。

例如,我有一个登录页面和客户输入表单。

在登录页面上,我想将焦点放在用户名上document.ready,在我想focus在名字的文本框上设置的客户输入表单中,做一些繁重的 Ajax 和客户端验证。如何确保脚本不会发生冲突并正确确定它们的范围?

脚本的两个部分都存在于一个文件中,那么如何在正确的时间访问正确的脚本部分?

是否有任何最佳实践建议?我不想为单个控制器操作加载单独的文件...

任何帮助都会很棒...

4

2 回答 2

0

您是否考虑过在 javascript 中进行位置检查?

就像是...

if(location.href.match(/login\.aspx/)){
    //code here
} else if(location.href.match(/otherpage\.aspx/)){
    //other code here
}
于 2013-02-28T18:46:47.920 回答
0

只执行代码的特定部分

我遇到了类似的问题,但不是在rails中,而是在asp.net中。

这个 javascript 解决方案应该可以在任何地方工作:

http://paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/

这基本上是基于 DOM 的路由之母。您将属性赋予指定您所在位置的 body 标记。通读一遍,它非常简单且实用。

基于 DOM 的路由现在非常流行,并且已经在很多框架中实现(我很确定 rails 有它自己的解决方案),但是这个简单的版本可以在任何地方轻松实现。

该帖子中还有一些后续链接,您也应该阅读它们并确定最适合您的链接。

捆绑脚本

在 JavaScript 中“您编写/调试的内容就是您发布的内容”是一种误解:

由于它是一种在客户端解释的脚本语言,您可以直接通过网络发送它而无需任何处理,但这会导致不必要的大文件和大量单独的请求:每个文件一个请求。因此,您可以从中删除所有注释/空格并将所有代码放入一个文件中,但这会导致代码无法维护。您可能认为这是一个必要的权衡,但事实并非如此!

您可以“构建”将它们捆绑在一起的 javascript 文件,并将它们的内容缩小到更小的大小。它有很多工具,我相信 rails 有它自己的解决方案(在你最喜欢的搜索提供商上搜索捆绑 javascript)。您可以在测试环境中使用未捆绑/未缩小的代码,因此开发和调试非常容易。当您需要将其发布到生产环境时,您可以捆绑您的脚本。

然后,您可以在不同的文件中定义对象/函数,例如:

文件1:

var FOO = {

};

文件2:

FOO.common = {
  init     : function(){ ... },
  finalize : function(){ ... }  
};

文件3:

FOO.shopping = {
  init     : function(){ ... },
  cart     : function(){ ... },
  category : function(){ ... }
};

这样,您基本上可以获得与 1 个文件相同的结果,而且在设计应用程序时阅读起来也更清晰一些。

编辑:此解决方案使用 jQuery 的$(document).ready()功能。如果这是不可取的,您还可以将其连接到任何其他就绪事件。

于 2013-02-28T18:57:15.813 回答