AmazeUI(妹子UI)是非常优秀的国产前端UI,现在来介绍一下AmazeUI中CSS组件、JS插件与Web组件的区别。 
CSS组件顾名思义就是仅使用CSS渲染而成的组件,而JS插件也很容易理解,就是由CSS渲染和JS来控制行为的组件。
比较不好理解就是Web组件,好像跟JS插件意思差不多,都是CSS和JS组成的。它们到底区别在哪?我们重点来讲这个。
我们通过学习如何调用Web组件(其中的手风琴组件)来一步一步了解其与JS插件的区别。
 
示例01.Web组件-直接使用 (请下载附件查看示例)
示例中关键代码:
  1. <section data-am-widget="accordion" class="am-accordion am-accordion-default">
  2. <!-- 这里面还有代码,本例的大概意思就是不写JS代码,直接调用Web组件。 -->
  3. </section>

示例02.Web组件-通过模板来调用-示例1 (请下载附件查看示例)

示例中关键代码1(引用 handlebars.js 和 妹子ui调用handlebars.js的辅助js):
  1. <!-- handlebars.js 是一个开源的js库,用于在网页上实现语义模板。 -->
  2. <script src="assets/js/handlebars.min.js"></script>
  3. <!-- 妹子UI调用 handlebars 的辅助类 -->
  4. <script src="assets/js/amazeui.widgets.helper.js"></script>

示例中关键代码2(定义一个模板)(话说这个模板也没啥实际意义,但官方的demo就是这么写的,我只是移植了一下):

  1. <script type="text/x-handlebars-template" id="my-tpl">
  2. {{>accordion accordionData}}
  3. </script>

示例中关键代码3(调用JS代码使其工作):

  1. var $tpl = $('#my-tpl'); //得到原始模板
  2. var template = Handlebars.compile($tpl.text()), //得到编译后的模板
  3. //...这里定义了数据...代码较多...略...
  4. var html = template(data); //传入数据,运行模板,得到结果
  5. var $tpl.before(html); //显示结果
示例03.Web组件-通过模板来调用-示例2 (请下载附件查看示例)
示例中关键代码1(引用 handlebars.js 和 妹子ui调用handlebars.js的辅助js): 同上,所以省略...
示例中关键代码2(调用JS代码使其工作):
  1. var template = Handlebars.compile('{{>accordion}}'), //得到编译后的模板 (字符串就算是原始模板了)
  2. var html = template(data.accordionData); //传入数据,运行模板,得到结果
  3. $("#div1").before(html); //显示结果
示例04.Web组件-通过自定义模板来调用 (请下载附件查看示例)
示例中关键代码1(引用 handlebars.js )
  
  不一样的地方在于,这次只引用了 handlebars.js ,而没有引用 妹子ui调用handlebars.js的辅助js ,因为不需要了。
 
示例中关键代码2(自定义原始模板):
  1. <!-- 自定义原始模板 -->
  2. <script type="text/x-handlebars-template" id="demo-template">
  3. //这里还有很多代码,因为不关键就省略了...
  4. <!-- 关键代码:添加图标 icon 属性 -->
  5. {{#if icon}}<img src="{{icon}}" style="width:20px;" />{{/if}}
  6. //这里还有很多代码,因为不关键就省略了...
  7. </script>

示例中关键代码3(调用JS使其工作):

  1. var demoData = { //定义数据
  2. "content": [..省略.., {
  3. "title": "标题二",
  4. "content": "内容二",
  5. "icon": "assets/i/favicon.png" //关键:多出一个icon属性
  6. }, ..省略..]
  7. };
  8. var demoTemplate = Handlebars.compile($("#demo-template").html()); //得到编译后的模板
  9. var demoHtml = demoTemplate(demoData); //传入数据,运行模板,得到结果
  10. $("#div1").html(demoHtml); //显示结果
示例05.Web组件-华瑞手风琴组件 (请下载附件查看示例)
示例中关键代码1(huarui.accordion.helper.js):
这是一个自定义Web组件的js支持文件,这个文件的编写很简单,复制 amazeui.widgets.helper.js 改一改就好了。
  1. //注册一个新组件,名叫:hr-accordion
  2. hbs.registerPartial('hr-accordion', '\
  3. {{#this}}\
  4. <section data-am-widget="accordion" class="am-accordion {{#if theme}}am-accordion-{{theme}}{{else}}am-accordion-default{{/if}}{{#if widgetId}} {{widgetId}}{{/if}}{{#if className}} {{className}}{{/if}}" {{#if id}} id="{{id}}" {{/if}} data-am-accordion=\'{ {{#if options.multiple}}"multiple": true{{/if}} }\'>\
  5. {{#each content}}\
  6. <dl class="am-accordion-item{{#if active}} am-active{{/if}}{{#if disabled}} am-disabled{{/if}}">\
  7. <dt class="am-accordion-title" style="color:#0094ff;">\
  8. <!-- 添加图标的关键代码 -->\
  9. {{#if icon}}<img src="{{icon}}" style="width:20px;" />{{/if}}\
  10. {{{title}}}\
  11. </dt>\
  12. <dd class="am-accordion-bd am-collapse {{#if active}}am-in{{/if}}">\
  13. <div class="am-accordion-content">\
  14. {{{content}}}\
  15. </div>\
  16. </dd>\
  17. </dl>\
  18. {{/each}}\
  19. </section>\
  20. {{/this}}');

示例中关键代码2(引用相关js文件):

  1. <!-- handlebars.js 是一个开源的js库,用于在网页上实现语义模板。 -->
  2. <script src="assets/js/handlebars.min.js"></script>
  3. <!-- 华瑞手风琴组件,调用 handlebars.js 的辅助类 -->
  4. <script src="assets/js/huarui.accordion.helper.js"></script>

示例中关键代码3(调用JS使其工作):

  1. var demoData = { //定义数据
  2. "content": [..略.., {
  3. "title": "标题二",
  4. "content": "内容二",
  5. "icon": "assets/i/favicon.png" //关键:多出一个icon属性
  6. }, ..略..]
  7. };
  8. //得到编译后的模板,传入数据,运行模板,得到结果
  9. var demoHtml = Handlebars.compile('{{>hr-accordion}}')(demoData);
  10. $("#div1").html(demoHtml); //显示结果
看完以上的示例,得出结论:
在AmazeUI(妹子UI)中,Web组件可以不编写模板而直接使用,若如此,则与JS插件没什么太大区别,官方原话也说可以这么调用的。
Web组件与JS插件的不同之处在于,Web组件借助 handlebars.js 实现了强大的模板功能,我们能编写自定义模板从而使Web组件更具个性,甚至是编写出新的Web组件。

下载附件:AmazeUI的Web组件.zip

AmazeUI(妹子UI)中CSS组件、JS插件、Web组件的区别的更多相关文章

  1. 20170305深圳Meetup Rails中CSS,JS引用关系分析

    新手上路,若有错误请及时提醒 Rails中CSS,JS引用关系分析 一.Rails静态文件存放位置 二.Rails中CSS引用方式 三.Rails中JS引用方式与CSS类似 四.上面都是默认引用app ...

  2. HTML中css和js链接中的版本号

    背景 在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css.js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候, 浏览器 ...

  3. struts2中css,js等资源无效 非路径问题(新手问题)

    一个小小的Strust2例子 然后发现css,js,图片用不了,debugger下发现无法访问这些资源(404错误),妈的,那个例子明明可以的,起码从书上的图片看. 发现是web.xml中的过滤器的问 ...

  4. RSuite 一个基于 React.js 的 Web 组件库

    RSuite http://rsuite.github.io RSuite 是一个基于 React.js 开发的 Web 组件库,参考 Bootstrap 设计,提供其中常用组件,支持响应式布局. 我 ...

  5. vue中使用laydate.js插件

    1.到官网下载laydate.js https://www.layui.com/laydate/ 2.下载好后,将包解压好放在index.html同级的地方.我是在public中建立个statick文 ...

  6. 在MUI框架中使用video.js插件,并在暂停的时候利用Asp.net将观看时长保存到sqlserver数据库

    本次保存数据的情况有三种: 在视频播放的时候点击暂停,将本视频的进度保存到数据库 利用mui内部的控件,返回上一页操作时,进行保存 安卓手机触发返回键的时候,进行保存 示例一: 在video标签上面添 ...

  7. 在Asp.Net MVC 中如何用JS访问Web.Config中appSettings的值

    应用场景: 很多时候我们要在Web.Config中添加appSettings的键值对来标识一些全局的信息,比如:调用service的domain,跳转其他网站页面的url 等等: 那么此时就涉及到了一 ...

  8. amazeui中内置的web组件有哪些且如何用

    amazeui中内置的web组件有哪些且如何用 一.总结 一句话总结: 1.组件还是jquery.js+amazeui.js,和插件一样,准确的说是amazeui.css+jquery.js+amaz ...

  9. amazeui中css组件、js组件、web组件的区别

    amazeui中css组件.js组件.web组件的区别 一.总结 一句话总结: 1.可直接像调用js插件那样调用:在AmazeUI(妹子UI)中,Web组件可以不编写模板而直接使用,若如此,则与JS插 ...

随机推荐

  1. flask 扩展之 -- flask-login

    一. 使用 Werkzeug 实现密码散列. generate_password_hash(password, method=pbkdf2:sha1, salt_length=8) 将原始密码作为输入 ...

  2. 学容器必须懂 bridge 网络 - 每天5分钟玩转 Docker 容器技术(32)

    上一节我们讨论了 none 和 host 类型的容器网络,本节学习应用最广泛也是默认的 bridge 网络. Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果 ...

  3. 阿里云OSS存储

    1.accessKeyId 与 accessKeySecret 是由系统分配给用户的,称为ID对,用于标识用户,为访问OSS做签名验证. 2.Bucket是OSS上的命名空间,相当于数据的容器,可以存 ...

  4. 九度OJ:1002-Grading

    时间限制:1 秒内存限制:32 兆特殊判题:否提交:24102解决:6126 题目描述: Grading hundreds of thousands of Graduate Entrance Exam ...

  5. 门控开关项目--使用Multism仿真

    可以修改桥式整流电路的电容,发现容值不合适的时候,直流不平稳.

  6. 如何利用keytool查看一个apk的签名

  7. python 写csv文件

    一.只有一列内容: def create_file(self, a, b): # 上传csv 文件 # os.remove('openfile.csv') open_file = open('5000 ...

  8. weblogic漏洞修复:CVE-2014-4210,UDDI Explorer对外开放

    漏洞描述:http://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cv ...

  9. Python数据分析之路(一)查询和统计

    0. 如何入门数据分析 关注沙漠之鹰的同学一定看过沙漠君写得很多篇数据分析文章,比如分析房价,车价,预测机动车摇号这些话题.其实文章中所有的分析都使用了Python和它非常强大的数据分析库Pandas ...

  10. requireJS 源码(二) data-main 的加载实现

    (一)requireJs 的整体结构: requireJS 源码 前192行,是一些 变量的声明,工具函数的实现 以及 对 三个全局变量(requirejs,require,define)若被占用后的 ...