gpt4 book ai didi

javascript - 使用 Require.js 正确加载文件时遇到问题

转载 作者:行者123 更新时间:2023-12-02 19:06:08 24 4
gpt4 key购买 nike

问题的一些背景信息

所以我去年为客户编写了一个应用程序,大约在项目进行到一半的时候,我意识到我需要有很多异步功能,所以我开始编写将很多网站功能转移到 JavaScript 的代码。 I ran into a fairly major issue with my dev environment最后我的 php 文件中包含了大量的 javascript,只是为了节省时间。

在将项目移交给客户之前,我将所有 JavaScript 移至单独的文件中,仅按网站的不同区域划分。所以我最终得到了 admin.js、checkout.js、common.js 等。

实际问题

客户现在想要向网站添加更多功能,我想继续将 JavaScript 正确构建到不同的文件中,并将模型代码与 View 代码分开。

我想使用 requirejs,这样我就不需要在每个页面的页脚中进行大量脚本调用,并且可以更好地处理依赖关系。

我遇到的具体问题是它似乎没有正确加载我的文件。

我的 main.js 文件

require.config({
paths: {
'course' : 'models/course',
'login_view': 'views/login/login_view',
'config' : 'config',
'views' : 'views/views',
'session' : 'models/session'
}
});

require(['login_view'], function(login_view){
login_view.init();
});

我的login_view.js文件

define(function() {
var login_view = {
init: function(){
console.log(this);
});
};
});

当我在开发服务器上加载应用程序时,出现此错误,Uncaught TypeError: Cannot call method 'init' of undefined

如有任何帮助,我们将不胜感激。

最佳答案

因为模块必须公开一个需要模块可以操作的接口(interface)(替换变量名称以避免命名困惑):

//login_view.js
define(function() {
var opBoard = {
init: function(){
console.log('I am initted!');
});
};

//expose opBoard containing init
return opBoard;
});

//so if i required in require or depended in another module
require(['login_view'],function(lv){
//lv is the exposed opBoard from the `login_view` module
lv.init();
});

关于javascript - 使用 Require.js 正确加载文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14284587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com