使用带有 requireJS 的自定义 Jquery 插件
Using custom Jquery plugin with requireJS
对不起,如果我重复这个问题,但我是 requireJS 的新手,我不完全理解它的工作方式。
我正在尝试通过对元素的对角线移动来实现类似亚马逊的导航。我为此找到了一个 jQuery 插件 (https://github.com/kamens/jQuery-menu-aim),但我想在 requireJS 的帮助下实现它。
通常情况下,您只需将所有必要的脚本包含在 <script>
标签中(Jquery 和插件)。然后你找到你的导航并分配一些激活/停用子菜单的功能。喜欢的例子:
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="../jquery.menu-aim.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script>
var $menu = $(".dropdown-menu");
// jQuery-menu-aim: <meaningful part of the example>
// Hook up events to be fired on menu row activation.
$menu.menuAim({
activate: activateSubmenu,
deactivate: deactivateSubmenu
});
function activateSubmenu(row) {//do something}
function deactivateSubmenu(row) {//do someting else)
</script>
以 requireJS 方式。在 navigation.js 文件中,我一开始就需要 menu-aim 插件,并尝试像这样实现它:
var menuAim = require('lib/menu-aim');
// some code
var $menuT = $('#nav-main-deep');
$menuT.menuAim({
activate: activateSubmenu,
deactivate: deactivateSubmenu
});
function activateSubmenu(){
console.log('test1');
}
function deactivateSubmenu() {
console.log('test2');
}
我把整个插件 menu-aim.js 放在:
之间
define(function () {
//whole menu-aim plugin
});
可能,这不是如何 运行 requireJS 插件的方式,导致它什么都不做(我试图做一些控制台日志)。我试图查看 requireJS 文档,但我仍然不明白如何正确地做。
非常感谢您的建议..
From the GitHub code,看起来 jQuery-menu-aim
没有使用通用模块定义,因此它需要 RequireJS 配置的一些帮助。
A shim
可以帮助 RequireJS 对依赖项进行排序,因为这是一个 jQuery 插件并且 jQuery 必须首先加载并传递给它。单击此处获取 more information on RequireJS shims。
将此代码添加到您的 RequireJS 配置文件中
requirejs.config({
shim: {
'menu-aim': {
deps: ['jquery']
}
}
});
当你打电话时
require('lib/menu-aim', function() {
// put your menu code here
});
jQuery 将加载菜单插件。
对不起,如果我重复这个问题,但我是 requireJS 的新手,我不完全理解它的工作方式。
我正在尝试通过对元素的对角线移动来实现类似亚马逊的导航。我为此找到了一个 jQuery 插件 (https://github.com/kamens/jQuery-menu-aim),但我想在 requireJS 的帮助下实现它。
通常情况下,您只需将所有必要的脚本包含在 <script>
标签中(Jquery 和插件)。然后你找到你的导航并分配一些激活/停用子菜单的功能。喜欢的例子:
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="../jquery.menu-aim.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script>
var $menu = $(".dropdown-menu");
// jQuery-menu-aim: <meaningful part of the example>
// Hook up events to be fired on menu row activation.
$menu.menuAim({
activate: activateSubmenu,
deactivate: deactivateSubmenu
});
function activateSubmenu(row) {//do something}
function deactivateSubmenu(row) {//do someting else)
</script>
以 requireJS 方式。在 navigation.js 文件中,我一开始就需要 menu-aim 插件,并尝试像这样实现它:
var menuAim = require('lib/menu-aim');
// some code
var $menuT = $('#nav-main-deep');
$menuT.menuAim({
activate: activateSubmenu,
deactivate: deactivateSubmenu
});
function activateSubmenu(){
console.log('test1');
}
function deactivateSubmenu() {
console.log('test2');
}
我把整个插件 menu-aim.js 放在:
之间define(function () {
//whole menu-aim plugin
});
可能,这不是如何 运行 requireJS 插件的方式,导致它什么都不做(我试图做一些控制台日志)。我试图查看 requireJS 文档,但我仍然不明白如何正确地做。 非常感谢您的建议..
From the GitHub code,看起来 jQuery-menu-aim
没有使用通用模块定义,因此它需要 RequireJS 配置的一些帮助。
A shim
可以帮助 RequireJS 对依赖项进行排序,因为这是一个 jQuery 插件并且 jQuery 必须首先加载并传递给它。单击此处获取 more information on RequireJS shims。
将此代码添加到您的 RequireJS 配置文件中
requirejs.config({
shim: {
'menu-aim': {
deps: ['jquery']
}
}
});
当你打电话时
require('lib/menu-aim', function() {
// put your menu code here
});
jQuery 将加载菜单插件。