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

一、总结

一句话总结:

1、可直接像调用js插件那样调用:在AmazeUI(妹子UI)中,Web组件可以不编写模板而直接使用,若如此,则与JS插件没什么太大区别,官方原话也说可以这么调用的。

2、能编写自定义模板通过js代码调用:Web组件与JS插件的不同之处在于,Web组件借助 handlebars.js 实现了强大的模板功能,我们能编写自定义模板从而使Web组件更具个性,甚至是编写出新的Web组件。

二、amazeui中css组件、js组件、web组件的区别

AmazeUI(妹子UI)是非常优秀的国产前端UI,现在来介绍一下AmazeUI中CSS组件、JS插件与Web组件的区别。 
CSS组件顾名思义就是仅使用CSS渲染而成的组件,而JS插件也很容易理解,就是由CSS渲染和JS来控制行为的组件。
比较不好理解就是Web组件,好像跟JS插件意思差不多,都是CSS和JS组成的。它们到底区别在哪?我们重点来讲这个。
我们通过学习如何调用Web组件(其中的手风琴组件)来一步一步了解其与JS插件的区别。

 

示例01.Web组件-直接使用 (请下载附件查看示例)

示例中关键代码:
 <section data-am-widget="accordion" class="am-accordion am-accordion-default">
<!-- 这里面还有代码,本例的大概意思就是不写JS代码,直接调用Web组件。 -->
</section>

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

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

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

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

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

 var $tpl = $('#my-tpl'); //得到原始模板
var template = Handlebars.compile($tpl.text()), //得到编译后的模板
//...这里定义了数据...代码较多...略...
var html = template(data); //传入数据,运行模板,得到结果
var $tpl.before(html); //显示结果

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

示例中关键代码1(引用 handlebars.js 和 妹子ui调用handlebars.js的辅助js): 同上,所以省略...
示例中关键代码2(调用JS代码使其工作):
 var template = Handlebars.compile('{{>accordion}}'), //得到编译后的模板 (字符串就算是原始模板了)
var html = template(data.accordionData); //传入数据,运行模板,得到结果
$("#div1").before(html); //显示结果

示例04.Web组件-通过自定义模板来调用 (请下载附件查看示例)

示例中关键代码1(引用 handlebars.js )
  
  不一样的地方在于,这次只引用了 handlebars.js ,而没有引用 妹子ui调用handlebars.js的辅助js ,因为不需要了。
 
示例中关键代码2(自定义原始模板):
 <!-- 自定义原始模板 -->
<script type="text/x-handlebars-template" id="demo-template">
//这里还有很多代码,因为不关键就省略了...
<!-- 关键代码:添加图标 icon 属性 -->
{{#if icon}}<img src="{{icon}}" style="width:20px;" />{{/if}}
//这里还有很多代码,因为不关键就省略了...
</script>

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

 var demoData = { //定义数据
"content": [..省略.., {
"title": "标题二",
"content": "内容二",
"icon": "assets/i/favicon.png" //关键:多出一个icon属性
}, ..省略..]
};
var demoTemplate = Handlebars.compile($("#demo-template").html()); //得到编译后的模板
var demoHtml = demoTemplate(demoData); //传入数据,运行模板,得到结果
$("#div1").html(demoHtml); //显示结果

示例05.Web组件-华瑞手风琴组件 (请下载附件查看示例)

示例中关键代码1(huarui.accordion.helper.js):
这是一个自定义Web组件的js支持文件,这个文件的编写很简单,复制 amazeui.widgets.helper.js 改一改就好了。
 //注册一个新组件,名叫:hr-accordion
hbs.registerPartial('hr-accordion', '\
{{#this}}\
<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}} }\'>\
{{#each content}}\
<dl class="am-accordion-item{{#if active}} am-active{{/if}}{{#if disabled}} am-disabled{{/if}}">\
<dt class="am-accordion-title" style="color:#0094ff;">\
<!-- 添加图标的关键代码 -->\
{{#if icon}}<img src="{{icon}}" style="width:20px;" />{{/if}}\
{{{title}}}\
</dt>\
<dd class="am-accordion-bd am-collapse {{#if active}}am-in{{/if}}">\
<div class="am-accordion-content">\
{{{content}}}\
</div>\
</dd>\
</dl>\
{{/each}}\
</section>\
{{/this}}');

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

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

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

 var demoData = {  //定义数据
"content": [..略.., {
"title": "标题二",
"content": "内容二",
"icon": "assets/i/favicon.png" //关键:多出一个icon属性
}, ..略..]
};
//得到编译后的模板,传入数据,运行模板,得到结果
var demoHtml = Handlebars.compile('{{>hr-accordion}}')(demoData);
$("#div1").html(demoHtml); //显示结果

看完以上的示例,得出结论:

在AmazeUI(妹子UI)中,Web组件可以不编写模板而直接使用,若如此,则与JS插件没什么太大区别,官方原话也说可以这么调用的。
Web组件与JS插件的不同之处在于,Web组件借助 handlebars.js 实现了强大的模板功能,我们能编写自定义模板从而使Web组件更具个性,甚至是编写出新的Web组件。

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

amazeui中css组件、js组件、web组件的区别的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. AmazeUI(妹子UI)中CSS组件、JS插件、Web组件的区别

    AmazeUI(妹子UI)是非常优秀的国产前端UI,现在来介绍一下AmazeUI中CSS组件.JS插件与Web组件的区别. CSS组件顾名思义就是仅使用CSS渲染而成的组件,而JS插件也很容易理解,就 ...

  7. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  8. 学习React系列(七)——Fragments、Portals、Error Boundaries与WEB组件

    React.Fragment portals Error Boundaries WEB组件 React.Fragment 想象一个场景,想把td包装为组件添加到table中去,代码如下: class ...

  9. PHP分帧后台模板页面css样式,js引入方法

    一,首先把下载好的分帧后台模板放到对应的目录中,HTML显示页面放到View目录中,CSS和JS.img图片等公共资源放到include目录中 二.然后开始准备更改CSS和JS , img路径操作:( ...

随机推荐

  1. zookeeper 配置文件说明(zoo.cfg)

    clientPort      # 客户端连接server的port,即对外服务port,一般设置为2181. dataDir        # 存储快照文件snapshot的文件夹. 默认情况下.事 ...

  2. 需求:在浏览器加载完毕后,自动播放视频:出现play() failed because the user didn't interact with the document first.错误

    解决方法:给video标签加入<video muted></video> 静音即可. Chrome 66为了避免标签产生随机噪音. 参考链接:https://juejin.im ...

  3. Fragment事务管理源代码分析

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/53132952 本文出自: [HansChen的博客] 概述 在Fragment使用中 ...

  4. [RxJS] Avoid mulit post requests by using shareReplay()

    With the shareReplay operator in place, we would no longer fall into the situation where we have acc ...

  5. The Swift Programming Language 中文翻译版

    原文(http://www.cnblogs.com/lkvt/p/3765349.html) 一.Welcome to Swift 1.关于Swift Swift是一种用于iOS和OS X应用的全新编 ...

  6. Ten ways to improve the performance of large tables in MySQL--转载

    原文地址:http://www.tocker.ca/2013/10/24/improving-the-performance-of-large-tables-in-mysql.html Today I ...

  7. Undo表空间数据文件损坏

       UNDO表空间数据文件和system表空间数据文件都是数据库的关键数据文件,如果损坏会导致sql执行失败,用户无法登录,甚至实例崩溃等.同样恢复UNDO表空间数据文件也必须在数据库mount状态 ...

  8. 使用ajax发送图片等文件

    1.使用H5的FormData()对象,append()添加文件 2.processData: false, // 告诉jQuery不要去处理发送的数据    contentType: false, ...

  9. 关于python的拷贝

    https://blog.csdn.net/koukehui0292/article/details/82993958 Python的 深度拷贝: import copy d=copy.deepcop ...

  10. softmax 与 sigmoid & softmax名字的由来

    Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广. 参考:http://blog.csdn.net/u014422406/article/details/52805924 ...