我正在清理一个包含 65 个以上 html 页面和一个中央 javascript 库的多页面应用程序。我的 html 页面有大量冗余,而中央 js 库已成为意大利面条。我面临合并页面的限制,因为我在一个更大的框架内工作,该框架强制执行某种结构。我想减少冗余并清理代码。
我发现了主干、MVC 模式、微模板和 requirejs,但它们似乎最适合单页应用程序。不知何故,我需要让主模块知道正在加载哪个页面,以便它将正确的元素放在页面上。我正在考虑传入 html 的标题,这将获取正确的页面元素集合并将它们作为对象传递给 App.initialize。
1)任何人都可以验证这种方法吗?如果没有,是否有推荐的替代方法?像木偶这样的骨干扩展怎么样?
2)任何人都可以推荐一种将页面细节放入主干框架的方法吗?
按照主干教程,我使用调用 view.render 方法的 App.initialize 方法的 main.js 构建了一个成功的测试页面。我的第一个想法是阅读 html 页面标题并使用它为正在加载的特定页面选择模型。我必须传入一个包含每个页面布局细节的对象。这是视图的渲染方法,因此您可以看到我要执行的操作:
render: function () { // pass parameter to render function here?
var data = new InputModel,
pageTitle = data.pageTitle || data.defaults.pageTitle,
compiled,
template;
var pageElements = [
{ container: '#page_title_container', template: '#input_title_template' },
{ container: '#behavior_controls_container', template: '#behavior_controls_template' },
{ container: '#occurred_date_time_container', template: '#date_time_template' }]
for (var i = 0; i < pageElements.length; i++) {
this.el = pageElements[i].container;
compiled = _.template($(InputPageTemplates).filter(pageElements[i].template).html());
template = compiled({ pageTitle: pageTitle });
//pass in object with values for the template and plug in here?
$(this.el).html(template);
}
}
对你的帮助表示感谢。我在更新大约 1999 年的 JavaScript 技能时获得了很多乐趣。语言发生了很多很酷的事情。