У меня есть модуль requirejs
, в котором я пытаюсь загрузить markdownjs
. Вот файл:Поведение Strange Requirejs при загрузке Markdown
define(function(require) {
'use strict';
var Backbone = require('backbone');
var blogCollectionTemplate = require('hbs!app.templates/blog.collection.view');
var BlogModelView = require('views/blog.item.view');
var markdown = require('markdown');
var BlogCollectionView = Backbone.View.extend({
template: blogCollectionTemplate,
initialize: function() {
debugger;
},
render: function() {
this.$el.html(this.template());
this.renderAll();
return this;
},
renderAll: function() {
var that = this;
this.collection.each(function(blog) {
that.renderItem(new BlogModelView({model: blog}));
});
},
renderItem: function(blog) {
this.$el.find('#blog-posts').append(blog.render(blog).el);
}
});
return BlogCollectionView;
});
Вот мой require.config
:
define(function() {
require.config({
hbs : {
templateExtension : 'hbs',
disableHelpers: true,
disableI18n : true
},
shim: {
'backbone': {
deps: [
'underscore',
'jquery'
],
exports: 'Backbone'
},
bootstrap: {
deps: [ 'jquery' ]
},
DlHighlight: {
exports: 'DlHighlight'
},
'jqueryMockAjax': {
exports: '$.mockjax',
deps: ['jquery']
},
json2 : {
exports: "JSON"
},
'underscore': {
exports: '_'
}
},
paths: {
backbone: 'libs/backbone/backbone',
bootstrap: 'libs/bootstrap/dist/js/bootstrap',
DlHighlight: 'libs/hl/hl-all',
highlight: 'libs/highlightjs/highlight.pack',
jquery: 'libs/jquery/jquery',
jqueryMockAjax: 'libs/jquery-mockjax/jquery.mockjax',
markdown: 'libs/markdown/lib/markdown',
text: 'libs/text/text',
underscore: 'libs/underscore/underscore',
hbs: 'libs/hbs/hbs',
handlebars: 'libs/hbs/Handlebars',
i18nprecompile: 'libs/hbs/hbs/i18nprecompile',
json2 : 'libs/hbs/hbs/json2',
'app.templates': '../templates/'
}
});
});
Вот странное поведение. В моем initialize
, когда я ударил отладчика, у меня есть доступ к объекту markdown
, который я импортировал, но если я попытаюсь использовать объект markdown
, тогда он всегда undefined
. Если я поставлю markdown
в initialize
или в одном из методов render
, то переменной markdown
является undefined
. Это не имеет никакого смысла, но есть ли какое-то поведение, которое я не понимаю о requirejs
. Есть идеи?
Какой модуль уценки вы пытаетесь загрузить? Если это сторонний модуль, ссылка будет подходящей. – Louis
Я пытаюсь загрузить модуль [this] (https://github.com/evilstreak/markdown-js) 'markdown', но любой будет работать для меня. – jhamm
Спасибо. Этот модуль поддерживает AMD, поэтому он должен работать. Я думаю, что в конфигурации, которую вы передаете в RequireJS, есть что-то неправильное. Можете ли вы добавить его к своему вопросу? – Louis