Javascript 如何将Jquery TimeEntry插件包含在RequireJS中
我是新来的,我有一个旧的Asp.net Webform应用程序,我正在尝试使用它应用一些javascript模块加载。在这个应用程序中,我使用了一个名为的插件,但如果我使用它,它将不起作用,只有在我以旧方式添加引用时才起作用。这是我的配置和声明。 在aspx文件中:Javascript 如何将Jquery TimeEntry插件包含在RequireJS中,javascript,jquery,jquery-plugins,requirejs,amd,Javascript,Jquery,Jquery Plugins,Requirejs,Amd,我是新来的,我有一个旧的Asp.net Webform应用程序,我正在尝试使用它应用一些javascript模块加载。在这个应用程序中,我使用了一个名为的插件,但如果我使用它,它将不起作用,只有在我以旧方式添加引用时才起作用。这是我的配置和声明。 在aspx文件中: <script src="../../scripts/require.js"></script> <script> require(["../../app/shared/require.c
<script src="../../scripts/require.js"></script>
<script>
require(["../../app/shared/require.config"],
function (config) {
require(["appIncidentTracking/incident-type-init"]);
});
</script>
在我的事件类型init.js中,我只调用插件:
/**
* Incident Type Init page
* @module incident-type-init
*/
define(function (require) {
var $ = require('jquery'),
jqueryplugin = require('jqueryplugin'),
timeentry = require('timeentry'),
bootstrap = require('bootstrap');
/**
* Jquery ready function
*/
$(function () {
$('.js-timeentry').timeEntry();
});
});
但当应用程序运行时,我遇到了以下错误:
$.JQPlugin.createPlugin不是一个函数,就像找不到jquery.plugin.js
我检查了chrome中的网络选项卡,两个文件都已加载,jquery.plugin.js和jquery.timeentry.js
更新:在我们的应用程序中,我们正在使用Asp.net母版页,我们正在加载旧版本1.5.1,我在我的页面中使用该母版页,但当我在chrome中检查网络选项卡时,首先加载母版页脚本,然后加载所有内容
最有趣的是,有时有效,有时无效
有什么线索吗?我认为您的代码在语法上不正确 试试这个: 1。您的
脚本
应参考data main
中的require.config
<script data-main="PATH_TO_CONFIG_FILE" src="../../scripts/require.js"></script>
3.由于您的模块具有依赖项,请按如下方式列出它们:
require.config({
baseUrl: '../../scripts',
paths: {
app: '../../app/utilization-management',
appIncidentTracking: '../../app/incident-tracking',
jquery: 'jquery-3.1.1.min',
jqueryui: 'jquery-ui-1.12.1.min',
jqueryplugin: '../../js/jquery.plugin.min',
timeentry:'../../js/jquery.timeentry.min',
handlebars: 'handlebars.amd.min',
text: 'text',
moment: 'moment.min',
datatable: 'DataTables/jquery.dataTables.min',
blockUI: 'jquery.blockUI.min',
shared: '../../app/shared',
bootstrap: 'bootstrap.min',
'bootstrap-datepicker': 'bootstrap-datepicker.min',
'bootstrap-multiselect': '../js/bootstrap-multiselect/bootstrap-multiselect'
},
shim: {
bootstrap: {
deps: ['jquery']
},
'bootstrap-multiselect': {
deps: ['bootstrap']
},
timeentry: {
deps:['jquery', 'jqueryplugin']
}
}
});
define(["jqueryplugin","timeentry","bootstrap"],function(jqueryplugin,timeentry,bootstrap) {
$(function () {
$('.js-timeentry').timeentry();
});
});
模块
jqueryplugin
需要为其加载jQuery。它不是AMD模块,因为它不调用define
。因此,您需要在shim
中为其添加一个附加条目:
jqueryplugin: ["jquery"]
以上简称:
jqueryplugin: {
deps: ["jquery"]
}
这个答案是不正确的。我们按相反的顺序走吧。数字3是不必要的。OP使用的是RequireJS。2号也不是必需的。这是基本的JavaScript:对象文本中的键只有在它们不是有效标识符时才需要引用。1号也不是必需的。完全可以像OP一样使用嵌套的
require
调用加载配置。我也这样做了,结果相同,但我认为这只是为了确保在jqueryplugin启动之前加载jquery,在我的情况下,我这样做是因为我没有声明依赖关系,这就是我在我的小经历中所理解的,我在回答中所描述的肯定是你展示的配置中的一个问题。可能会发生其他事情,但我没有一个水晶球可以让我复制您的运行时。我看到的唯一另一个可能是一个因素(这只是一个猜测)的问题是,如果您同时在RequireJS和RequireJS外部加载jQuery。这是可能的,有时是偶然的。如果你这样做,那么你必须在你的问题中明确指出这一点。否则,我只能说“祝你在未来的努力中好运”。
jqueryplugin: {
deps: ["jquery"]
}