我在同一个文件夹中有两个coffeescript文件,A和B.我希望A执行一个点,然后运行B,然后继续执行。换句话说,我想要这个:
//in A
$("#content").html(@currentView.el)
require ['B']
//in B
if document.location.href.indexOf("showdiv") > 0
$("#content").trigger('click')
但是,如果我将所有内容都放入A中,它可以正常工作:
//in A
$("#content").html(@currentView.el)
if document.location.href.indexOf("showdiv") > 0
$("#content").trigger('click')
如何让第一个代码段起作用? require关键字是否并行加载已编译的javascript?
答案 0 :(得分:0)
在浏览器中,您可以通过如何在html文件中提取代码来控制加载顺序。以下是我的一个项目(在index.html
中,在结束body
标记之前)的示例:
<script src="vendor/jquery-1.7.2.min.js"></script>
<script src="vendor/bs/js/bootstrap.min.js"></script>
<script src="vendor/underscore-min.js"></script>
<script src="vendor/backbone-min.js"></script>
<script src="vendor/pouch.alpha.js"></script>
<script src="vendor/backbone-pouchdb.js"></script>
<script src="vendor/backbone-couchdb.js"></script>
<script src="js/main.js"></script>
最后一个是关闭的东西,类似于C中的“主要”功能,如果这对你有意义的话。在其中,有这个构造(当然编译为js):
$(document).ready ->
# Initialization code goes here
初始化代码将包含原始发布中的所有代码(减去浏览器中不存在的require调用),或者调用包含它的函数。您需要以上述方式延迟脚本执行的原因是延迟执行,直到所有代码都正确加载为止。
还有其他方法可以做到这一点,你可能会困惑的是Javascript AMD(异步模块定义)的概念,你可以在其中一个库上阅读更多关于它的内容(RequireJS - {{3} })。但是我的建议是在尝试使用AMD(带工具)之前掌握上面描述的基础知识。