ruby on rails -如何对一个大的Javascript文件进行作用域或分区
ruby on rails - How do I scope or partition 1 big Javascript file
这适用于所有服务器/客户端web应用程序,但我想知道无论是rails还是asp.net。
一个好的做法是有一个大的application.js文件与我所有的JavaScript。因此,当我有多个页面或操作时,我如何确定javascript的作用域。
例如,我有一个登录页面和客户输入表单。
在登录页面上,我想把重点放在document.ready
上的用户名上,在客户输入表单中,我想把focus
设置在名字的文本框上,做一些繁重的Ajax和客户端验证。我如何确保脚本不冲突并正确地对它们进行范围划分?
脚本的两个部分都存在于一个文件中,那么我如何在正确的时间访问脚本的正确部分?
有没有最佳实践建议?我不想为单个控制器动作加载一个单独的文件…
你考虑过在javascript中做位置检查吗?
之类的…
if(location.href.match(/login'.aspx/)){
//code here
} else if(location.href.match(/otherpage'.aspx/)){
//other code here
}
只执行特定部分的代码
我遇到过类似的问题,但不是在rails中,而是在asp.net中。
这个javascript解决方案应该在任何地方工作:
http://paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/这基本上是基于dom的路由之母。您为body标记提供属性,以指定您所处的位置。通读一遍,它非常简单,而且功能齐全。
基于dom的路由现在非常流行,并且已经在很多框架中实现了(我很确定rails对此有自己的解决方案),但是这个简单的版本可以在任何地方轻松实现。
在那篇文章中还有一些后续链接,你也应该阅读它们,并决定哪一个最适合你。
<<p> 捆绑脚本/strong>在JavaScript中"你写的/调试的就是你发布的"是一种误解:
由于它是在客户端解释的脚本语言,您可以直接通过网络发送它而不需要任何处理,但这会导致不必要的大文件和许多单独的请求:每个文件一个请求。因此,您可以从中删除所有注释/空格,并将所有代码放入一个文件中,但这会导致代码不可维护。你可能认为这是一个必要的权衡,但事实并非如此!
你可以"构建"javascript文件,将它们捆绑在一起,并将它们的内容缩小到更小的大小。有很多工具可以解决这个问题,我相信rails有它自己的解决方案(在你最喜欢的搜索提供商上搜索捆绑javascript)。您可以在测试环境中使用未捆绑/未简化的代码,因此开发和调试非常容易。当你需要将它发布到生产环境时,你需要捆绑脚本。
你可以在不同的文件中定义对象/函数,如:file1:
var FOO = {
};
file2:
FOO.common = {
init : function(){ ... },
finalize : function(){ ... }
};
file3:
FOO.shopping = {
init : function(){ ... },
cart : function(){ ... },
category : function(){ ... }
};
这样,你基本上得到了与在一个文件中相同的结果,但在设计应用程序时,它也更清晰一些。
编辑:这个解决方案是使用jQuery的$(document).ready()
函数。如果不希望这样做,您还可以将它连接到任何其他ready事件。
- Word文件(Javascript?)中有哪些字符
- 获取二进制数据并将其保存为.mp3文件Javascript
- 创建包含文本内容的新 Google 云端硬盘文件 (javascript)
- 将从 URL 输出的 JSON 保存到文件 javascript
- 单个页面上的多个音频文件javascript
- 将表单数据写入json文件-javascript
- imacros提取两部分数据+连接常量保存到文件javascript
- 检索 XML 文件 (JavaScript)
- 如何将画布图像“data:image/jpeg;base64,.”转换为普通图像文件 - JavaScript
- 用固定的行名称附加文件 javascript
- 打开并读取二进制文件(JavaScript)
- 将 emacs 用于大型多文件 JavaScript 项目
- 加载外部javascript,但HTTP请求重复一个文件javascript
- 从2D数组创建图像文件-JavaScript
- 正在读取文本文件Javascript
- 通过django将STATIC_URL传递到文件javascript
- 从输入文件javascript中获取一些数据
- Django”;静态“;文件-Javascript
- 上传两次相同的图像文件-Javascript
- 从文本文件javascript中读取行/变量