我有一个有趣的概念,我正在研究和查看,通过自动加载JavaScript的各种堆栈问题。我想使用第三方工具,除了表单jquery,所以我想我会自己角色。我的概念是:
var scripts = {
'name' : 'path/to/script_dir/' // Load all scripts in this file.
}
requireScripts(scripts); // Requires all scripts
// Call your classes, methods, objects and so on ....
requireScript()
函数的作用类似于:
function requireScript(hash){
$.each(hash, function(key, value)){
$.ajax({
url: value,
dataType: "script",
async: false,
error: function () {
throw new Error("Could not load script " + script);
}
});
});
}
注意:以上只是一个概念,我认为它不会起作用。
以上将允许您加载SPECIFIC脚本。所以实质上你的哈希键值是'name' : 'path/to/specific/script'
。这个问题是你的哈希会变得相当大......
我遇到的另一个问题是,如果我将其简化为“php pear命名标准”,那么,正如趋势似乎是 - 我们将创建一个类,它将以其位置命名:
var some_folder_name_class = function(){}
自动加载器会将其翻译为:some/folder/name/class.js
,然后以这种方式加载。
通过滚动我自己的“require”方法,有两种方法可以加载我正在查看的javascript文件。一个是通过上面实现的哈希思想加载javascript文件的目录。 (所提供的代码样本将如何更改和修复此哈希值。我不认为它甚至可以加载单个文件)
或
让你这么做:
new some_class_name()
并且有一个全局函数侦听新单词,根据类的名称找到你试图调用的文件并加载它,这个你永远不必担心 - 只要你按照文件将在你的js文件的类和文件夹结构中加入“pear命名标准”。
可以采取任何一种方法吗?还是我梦想成真?
我看到很多框架都做了很多require('/path/to/script')
,如果我可以让我自己的自动加载器角色允许我加载一个js文件的目录,甚至可以让它在它监听{{1}的地方在课堂实例化之前,我可以让我的生活更轻松。
答案 0 :(得分:2)
您是否考虑使用requirejs并可能使用Lazy加载。
http://www.joezimjs.com/javascript/lazy-loading-javascript-with-requirejs/
以下是示例版本:
您可以下载here。
示例基于此文件夹结构:
公共
脚本
LIB
** jquery-1.10.2.js
** require.js
3。来自代码:
<强> HTML 强>
`<!DOCTYPE html><html>
<head><title>Sample Test</title>`
<script src="scripts/lib/require.js"></script> <!-- downloaded from link provide above-->
<script src="scripts/app.js"></script></head>
`<body><h1>My Sample Project</h1><div id="someDiv"></div></body></html>`
应用程序配置app.js
requirejs.config({
baseUrl: 'scripts',
paths: {
app: 'app',
jquery: 'lib/jquery-1.10.2' //your libraries/modules definitions
}
});
// Start the main app logic. loading jquery module
require(['jquery'], function ($) {
$(document).on('ready',function(){
$('#someDiv').html('Hello World');
});
});
答案 1 :(得分:2)
如果您正在寻找仅限jQuery的解决方案,请查看jQuery.getScript()
。它将是处理问题的脚本加载部分的一个很好的候选者。然后你可以在它周围编写一个非常小的包装器来加载所有的脚本 - 就像你上面写的那样:
var loadScripts = function(scripts) {
$.each(scripts, function(name, path) {
jQuery.getScript("/root/path/" + path + ".js");
})
}
如果您对此方法的更多信息感兴趣,请访问David Walsh read this article。
我强烈建议您查看当前批量的脚本加载库。我想你会对那里的东西感到惊喜。此外,他们还拥有出色的社区支持和文档。 RequireJS似乎是领跑者,但David Walsh在curl.js和LABjs上发表了很多文章。