Javascript 如何正确使用RequireJS?
我需要测试一个JavaScript项目。这里描述了几个模块,但当我尝试加载它们时,出现了一些问题Javascript 如何正确使用RequireJS?,javascript,testing,requirejs,jasmine,Javascript,Testing,Requirejs,Jasmine,我需要测试一个JavaScript项目。这里描述了几个模块,但当我尝试加载它们时,出现了一些问题 define([ 'core/BaseModel' ], function (BaseModel) { var MessageModel = BaseModel.extend({ defaults: { messageType: "Advertisment", receiver: "me", title: "Title", headi
define([
'core/BaseModel'
],
function (BaseModel) {
var MessageModel = BaseModel.extend({
defaults: {
messageType: "Advertisment",
receiver: "me",
title: "Title",
heading_1: "Heading1",
heading_2: "Heading2"
},
url: function () {
var base = this.apipath + '/companies/';
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
}
});
return MessageModel;
});
要加载模块,请执行以下操作:
var message;
beforeAll(function(done){
require(['../../../public/js/app/models/Message'], function(Message){
message = Message;
done();
});
});
现在消息不是未定义的,但当我测试是否定义了message.defaults或message.url时,这将失败。有什么问题吗?鉴于。/../../public/js/app/models/Message对应于MessageModel
,您要做的是:
var Message=require('../../../public/js/app/models/Message')代码>
并创建一个新实例:var m=new Message()代码>
希望这能有所帮助。我找到了一个适用于这个确切示例的解决方案。而不是
message = Message;
我写
message = new Message();
但我对另一个模块做了完全相同的操作,它只给出一个超时错误并保持未定义状态:
var router;
beforeAll(function(done){
require(['../../../public/js/app/routers/DesktopRouter'], function(Router){
router = new Router();
done();
});
});
其定义是:
define(["jquery", "underscore", "backbone", "core/BaseRouter", "models/Session", "i18n!locales",
"views/NavbarView",
"views/LoginView",
'views/SidebarView',
'views/FooterView',
'views/VehicleSidebarView',
"views/DashboardView",
"views/CompaniesView",
"views/WorkshopsView",
"views/VehiclesView",
"views/UsersView",
"views/AddVehicleView",
"views/VehicleTripsView",
"views/VehicleDataView",
"views/VehicleServiceView",
"views/VehicleErrorsView",
"views/MessageInboxView",
"views/AddUserView",
"views/EditUserView",
"views/EditProfileView",
"views/AppDownloadView",
"views/BlockBrowserView"
],
function($, _, Backbone, BaseRouter, Session, i18n,
NavbarView,
LoginView,
SideBarView,
FooterView,
VehicleSidebarView,
DashboardView,
CompaniesView,
WorkshopsView,
VehiclesView,
UsersView,
AddVehicleView,
VehicleTripsView,
VehicleDataView,
VehicleServiceView,
VehicleErrorsView,
MessageInboxView,
AddUserView,
EditUserView,
EditProfileView,
AppDownloadView,
BlockBrowserView
) {
var DesktopRouter = BaseRouter.extend({
initialize: function () {
.....
这不是我的目的。我编辑了上面的代码。它应该说Message
,而不是User
。但这并没有解决问题。在Java中,我想说我想创建一个Message的实例。谢谢,但我已经发现了。(见我的答案)我现在面临一个不同的问题…如果你按照我在答案中所展示的那样做,它将起作用。因为答案解决了你原来的问题,我建议接受这个作为答案,然后在你描述第二个问题的地方问另一个问题。请不要在答案中发布更多的问题。