javascript策略/最佳实践
我正在着手编写一些更复杂的javascript应用程序,我也遇到了自己知识的局限性——请原谅任何命名错误或明显的noob问题,我不是js专业人士 我在自己的文件中放了大约4到5个脚本,只是为了让事情更容易维护。因此,可能有一个脚本处理构建页面元素(如复杂表单),另一个脚本处理数据,创建通用ajax请求对象,为返回的数据定义解析器和错误函数,还有一个脚本纯粹面向显示 我在页面中设置了全局变量,然后由运行时加载的各种脚本填充这些变量。例如,我定义javascript策略/最佳实践,javascript,jquery,Javascript,Jquery,我正在着手编写一些更复杂的javascript应用程序,我也遇到了自己知识的局限性——请原谅任何命名错误或明显的noob问题,我不是js专业人士 我在自己的文件中放了大约4到5个脚本,只是为了让事情更容易维护。因此,可能有一个脚本处理构建页面元素(如复杂表单),另一个脚本处理数据,创建通用ajax请求对象,为返回的数据定义解析器和错误函数,还有一个脚本纯粹面向显示 我在页面中设置了全局变量,然后由运行时加载的各种脚本填充这些变量。例如,我定义var myapp={}
var myapp={}在主HTML页面中,然后在脚本中,使用各种函数填充此“名称空间”,如:
问题在于,尽管所有脚本都包含一个封装所有函数定义的$(document).ready(function()
块),但当从一个引用另一个脚本的脚本调用函数时(也就是说,如果我的data.js
文件调用display.js
文件中的函数myapp.myDisplayFunction
,我有时会得到一个对象没有方法“myDisplayFunction”
除了将所有函数塞进一个大型脚本之外,您如何处理这个问题?是否有我遗漏的最佳实践?或者这只是一个指定脚本调用顺序的问题
谢谢当您不确定要调用的方法是否存在(已加载)时,可以进行检查:
if (myapp) //my app namespace is defined
{
if (myapp.myFunction) //myFunction is defined
{
myapp.myFunction();
}
else
alert('You have to load myFile.js first!');
}
使用前只需检查功能:
if(typeof(myapp.myDisplayFunction) !== undefined) {
// do your stuff
} else {
// wait for a while
}
并在加载.js
文件时检查是否设置了async
属性。只要确保如果一个脚本依赖于另一个脚本,“一个脚本”之前包含“另一个脚本”。我不明白,如果在文档准备就绪之前不调用任何函数,为什么不能定义函数。如果只是定义函数,那么将定义包装在$(文档)。ready(函数()中有什么意义?检查模块模式。这是,但我肯定有很多。@julio,请检查答案:函数声明/表达式不需要包含在$(文档)中。ready()
,只包含这些函数的执行。继续在外部定义它们,但从内部触发任何初始化代码$(文档).ready()
。
if(typeof(myapp.myDisplayFunction) !== undefined) {
// do your stuff
} else {
// wait for a while
}