模板

多页模板

多页模板就是传统的模板, 每一个多页模板都需要有一个,且只能有一个bui.ready. 多页模板简单方便.

  1. <!DOCTYPE HTML>
  2. <html lang="en-US">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
  5. <title>BUI 多页开发标准页面</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
  7. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/buijs/lib/latest/bui.css" />
  8. <link rel="stylesheet" href="css/style.css" />
  9. </head>
  10. <body>
  11. <div class="bui-page bui-box-vertical">
  12. <header>
  13. <!-- 固定顶部区 -->
  14. <div class="bui-bar">
  15. <div class="bui-bar-left">
  16. <a class="bui-btn" onclick="bui.back();"><i class="icon-back"></i></a>
  17. </div>
  18. <div class="bui-bar-main">模板页</div>
  19. <div class="bui-bar-right">
  20. </div>
  21. </div>
  22. </header>
  23. <main>
  24. <!-- 固定中间滚动内容区 -->
  25. </main>
  26. <footer>
  27. <!-- 固定底部 -->
  28. </footer>
  29. </div>
  30. <script src="https://cdn.jsdelivr.net/npm/buijs/lib/zepto.js"></script>
  31. <script src="https://cdn.jsdelivr.net/npm/buijs/lib/latest/bui.js"></script>
  32. <script>
  33. bui.ready(function() {
  34. // 所有控件及方法需要在这里执行
  35. })
  36. </script>
  37. </body>
  38. </html>

单页模板

单页模板不需要引入一堆脚本样式, 跟组件模板一致, 就是一个简单html结构. 单页模板的命名跟模块的命名默认保持一致, 路径一致的方式.

  1. <div class="bui-page bui-box-vertical">
  2. <header>
  3. <!-- 固定顶部区 -->
  4. <div class="bui-bar">
  5. <div class="bui-bar-left">
  6. <a class="bui-btn" onclick="bui.back();"><i class="icon-back"></i></a>
  7. </div>
  8. <div class="bui-bar-main">单页模板</div>
  9. <div class="bui-bar-right">
  10. </div>
  11. </div>
  12. </header>
  13. <main>
  14. <!-- 固定中间滚动内容区 -->
  15. </main>
  16. <footer>
  17. <!-- 固定底部 -->
  18. </footer>
  19. </div>

模板里面可以增加样式.

  1. <style>
  2. .bui-page .bui-bar {
  3. background:red;
  4. }
  5. </style>
  6. <div class="bui-page bui-box-vertical">
  7. <header>
  8. <!-- 固定顶部区 -->
  9. <div class="bui-bar">
  10. <div class="bui-bar-left">
  11. <a class="bui-btn" onclick="bui.back();"><i class="icon-back"></i></a>
  12. </div>
  13. <div class="bui-bar-main">单页模板</div>
  14. <div class="bui-bar-right">
  15. </div>
  16. </div>
  17. </header>
  18. <main>
  19. <!-- 固定中间滚动内容区 -->
  20. </main>
  21. <footer>
  22. <!-- 固定底部 -->
  23. </footer>
  24. </div>

像上面的写法会影响全局. 应该在 bui-page 加多一个独有的样式, 才能避免相互影响.

  1. <style>
  2. .page-home .bui-bar {
  3. background:red;
  4. }
  5. .page-home main {
  6. background:#ddd;
  7. }
  8. </style>
  9. <div class="bui-page bui-box-vertical page-home">
  10. <header>
  11. <!-- 固定顶部区 -->
  12. <div class="bui-bar">
  13. <div class="bui-bar-left">
  14. <a class="bui-btn" onclick="bui.back();"><i class="icon-back"></i></a>
  15. </div>
  16. <div class="bui-bar-main">单页模板</div>
  17. <div class="bui-bar-right">
  18. </div>
  19. </div>
  20. </header>
  21. <main>
  22. <!-- 固定中间滚动内容区 -->
  23. </main>
  24. <footer>
  25. <!-- 固定底部 -->
  26. </footer>
  27. </div>

组件模板

跟单页模板一样, 但颗粒度会更小一点. 比方轮播图.

pages/components/slide/index.html

  1. <div class="bui-slide"></div>

模板标签

上面定义的模板, 可以使用view标签局部加载到页面中, 默认是不编译的. 主要用来配合bui.store, 初始化了bui.store才能编译.

  1. <view name="pages/components/slide/index"></view>

view标签属性

view有3个内置的属性. 支持自定义属性, 具体查看组件的传参.

  • name="xxx" 模块名.
  • render="true" 代表已经渲染结束,不会再次渲染.
  • delay="true" 代表暂时不加载,直到调用 loader.delay方法. 查看组件的延迟加载

view延迟加载

不会自动加载模板, 直到手动调用 loader.delay方法.

  1. <view class="delayview" name="pages/list/index" delay="true"></view>
  1. loader.delay({
  2. id: ".delayview"
  3. })

模板手动编译

loader.view

  1. <view id="slide" name="pages/components/slide/index"></view>
  1. loader.view({
  2. id: "#slide"
  3. })