首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用agility.js进行页面布局和页面组合

使用agility.js进行页面布局和页面组合
EN

Stack Overflow用户
提问于 2012-09-15 23:47:18
回答 2查看 798关注 0票数 6

我是MVC风格的javascript库的新手,如果这个问题太基本的话,请原谅我。我正试着用jQueryagility.js来编写一个完整的agility.js。agility.js 文档中给出的示例完全包括向文档根添加html元素。问:是否有一种“最佳实践”方法可以按组件组装页面。

以下是我的html应用程序的大致轮廓:

代码语言:javascript
复制
<html>
    <head> ... </head>
    <body>
        <header> ... </header>
        <div id=PageHolder>
            <div id=AppPane_1></div>
            <div id=AppPand_2></div>
        </div>
        <footer> ... </footer>
    </body>
</html>

在'AppPane‘div中将是应用程序的内容。

好吧,考虑到这一切,我不是在问我能做什么,而是问我该怎么做。

我从文件和研究中看到,我有三种选择:

  1. 从原子敏捷性对象创建页面组合,并将它们组装到jQuery文档就绪块中。$$.document.append(Foo)为根元素工作,但我不知道如何将foo的子元素添加到foo中。
  2. 使用一个(非常大的)敏捷性对象,它从上面列出了基本的静态html,并附加了控件以及其他使用controller函数(我也无法工作的函数)。
  3. 使用一个根敏捷性对象并使用视图将所有的子对象附加到它上(不知怎么的,我也无法让它工作)。

其中哪一个是最好的,涉及哪些语法?预先感谢,任何关于将html组件组装成一个有说服力的敏捷性应用程序的指导都将是非常感谢的。

http://jsbin.com/ojenon/1/

EN

回答 2

Stack Overflow用户

发布于 2012-10-28 03:38:07

在我看来,组织页面模块的最佳方法是将单个客户端模板保存在标题中的脚本标记中:

代码语言:javascript
复制
<html>
<head>
<script type="text/template" id="template1">
    <b>Some <abbr>HTML</abbr> template</b>
</script>
<script type="text/template" id="template2">
    <b>Some <abbr>HTML</abbr> template</b>
</script>
</head>
...

您甚至可以选择使用模板语言,如jQuery.template或handlebars.js,以方便逻辑、变量插值等。

然后,在控制器中,您将从DOM加载这些模板的脚本标记的html内容,并酌情将它们复制到目标div (#PageHolder)中。

此技术的另一种选择是将模板存储在头部的文字JS对象中:

代码语言:javascript
复制
<script type="text/javascript">
var Templates = {
    template1: "<b>Some <abbr>HTML</abbr> template</b>"
    ...
}
</script>

这只是个开端而已。还有更多的选项,例如预编译模板,细分模板以避免重复的模板编译等等。从结构角度看,将模板保持在专用位置将有助于您扩展单个页面应用程序。

票数 3
EN

Stack Overflow用户

发布于 2013-07-26 11:00:46

我猜这是课程的马匹,但我更喜欢的是在敏捷代码的同时使用模板代码,这样就可以在一起看到它了。我并不特别喜欢在视图对象中看到html和样式,但是您可以在其他变量中设置这些变量并在视图中引用它们,如下所示:

代码语言:javascript
复制
var frmMainTemplate = '<div>' + 
                        '<input type="text" data-bind="name" />' +
                        '<p>You typed <span data-bind="name" /></p>' + 
                      '</div>'; 
var frmMainStyle = '& span {background-color:#888; color:#fff;}';

var frmMain = $$({
  model: {name:''},
  view: {
    format: frmMainTemplate, 
    style: frmMainStyle
  },
  controller: {}   
});

$$.document.append(frmMain);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12443313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档