使用JQuery Mobile进行模板化

时间:2013-08-01 13:40:31

标签: jquery-mobile

我是JQuery Mobile的新手,需要建立一个相当大的移动网站(15页以上)。我的问题是我似乎无法弄清楚如何使用JQuery Mobile进行模板化。示例:例如,我不希望将所有JavaScript和CSS包含在每个页面中。我想要一个我所有页面都引用的模板,所以当我需要添加一个新的包含时,我只需将它添加到此模板中。

我来自ASP.NET背景,因此在ASP.NET中我只会创建一个母版页,但我无法在JQuery Mobile html页面中找到相应的内容。

提前谢谢。

编辑:我正在使用JQuery Mobile和PhoneGap / Cordova。

2 个答案:

答案 0 :(得分:0)

您可以使用RequireJS,Backbone和jQuery Mobile构建应用程序。 RequireJS是一个Javascript和模块加载器,Backbone为模型提供键值绑定,集合和视图。

Here是一个使用Phonegap开始开发应用程序的简单教程。

答案 1 :(得分:0)

如果您正在使用Phonegap,您也可以将所有HTML放入一个文件中(您的链接将是id选择器 - href =“#contact”)。

然后,对于一些基本模板,我目前正在开发一个Phonegap / JQM应用程序,它通过在运行时将HTML页脚,页眉和侧边栏复制到每个页面上来重用页面之间的页眉,页脚和侧边栏HTML。

所以我的html看起来像这样:

<!-- reusable content - this is added to pages using JS -->

<div style="display:none">

    <div data-role="header" data-position="fixed" class="mainheader" data-id="mainheader">
        <h1>App Name/h1>
    </div><!-- /header -->

    <div data-role="footer" data-position="fixed" data-id="mainfooter">
        <div data-role="navbar" class="main-nav">
            <ul>
                <li><a href="#contact" data-parent="contact">Contact</a></li>
                ...
            </ul>
        </div>
    </div><!-- /navbar -->

    <div data-role="panel" class="sidebar" data-position="left">
        <!-- sidebar content -->
    </div>
</div>

<!-- /end of reusable content -->


<div id="cars" class="content-page" data-role="page">

    <!-- header gets added here -->

    <div data-role="content">
        <!-- page content would go here -->
    </div>

    <!-- footer and sidebar get added here -->

</div>

在我的JS中看起来像这样:

initializeReusableContent : function () {
    //make sure the panels and nav bar are on each page
    var header, footer, sidebar;

    header = $('.mainheader').remove();
    footer = $('.footer').remove();
    sidebar = $('.sidebar').remove();

    $(".content-page[data-role=page]").prepend(header).append(footer).append(sidebar);
},

然后,您可以使用类似https://github.com/janl/mustache.js的内容来制作内容模板。

如果你有更复杂的需求,模板语言可能会更好(Backbone,Angular等)。