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

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

时间: 2024-07-31 13:45:38

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

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

一个小小的Strust2例子 然后发现css,js,图片用不了,debugger下发现无法访问这些资源(404错误),妈的,那个例子明明可以的,起码从书上的图片看. 发现是web.xml中的过滤器的问题,代码是这样的: web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:x

struts2中css,js等资源无效 非路径问题(新手问题)揍琢子抓抓仔

今天有幸被召回母校给即将毕业的学弟学妹们讲我这两年的工作史,看了下母校没啥特别的变化,就是寝室都安了空调,学妹们都非常漂亮而已..好了不扯蛋了,说下今天的主题吧.这些天我在深度定制语法高亮功能的同时发现了博客园提供的一些有意思的函数,甚至有几个博客园都没用到,我也不知道怎么才能触发那些功能..打开这个js就可以看到很多好用的东西了,虽然写的不怎么样,但是至少有这些功能. ps: 推荐安装一个代码格式化的插件,否则一坨看着蛋疼.比如第一个就是 log,方便调试. http://www.orion3

几种实现隔行换色的写法(1中css其余js)

第一种: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>隔行变色</title> <style> *{ margin:0; padding:0; } div{ margin:0 auto; width:80%; height:30px; border:1px solid #000; curs

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

一,首先把下载好的分帧后台模板放到对应的目录中,HTML显示页面放到View目录中,CSS和JS.img图片等公共资源放到include目录中 二.然后开始准备更改CSS和JS , img路径操作:(在操作之前要明白以下几点) 1.     ./   表示是当前目录(表示当前文件所在的目录) 2.     ../  表示是上一级目录(表示当前文件所在目录的上一级目录) 3.    include(require) 引入(包含)      [引入(包含)相当于把引入(包含)的文件复制一份到需要引入

Web组件 – 构建商业化应用的基石

概述 Web Components(Web 组件)规范是一个新兴的技术集合,允许您在前端Web应用程序中定义已封装的自定义HTML元素. 使用Web Components,您可以创建自己声明的API来定义UI,从而创建您自己的商业化应用程序. 本文介绍了Web组件技术及其在新一代纯前端控件集 WijmoJS 中的应用. Web组件核心技术 Web组件的核心技术由以下四个标准组成: 自定义元素 Shadow DOM HTML模板 HTML导入 自定义元素 自定义元素允许您创建自己的HTML元素,可

前端常用框架和js插件 UI组件等

前言:写这个随笔,是记录一下工作以来用到的各种框架.以免日后忘记: JS库: 1. jquery.js 2. zepto.js ----jquery的精简版,专门用于手机上的,但是zepto主体默认是没有触摸组件的,触摸的js需要在其官网额外下载. 3.iscroll.js ---主要用于移动端网站和移动app页面的.常见的上拉刷新,下拉加载它都有,我没有用过,但盆友推荐过 前端框架: 1.响应式(UI框架为主): 1(1).Bootstrap:国际品质.名声持久:ui样式和组件,基本的都有,比

对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析

最近在研究HTML页面中JavaScript的执行顺序问题.在JavaScript中,定义一个方法或者函数有很多方式,最常见的有2中,function语句式与函数直接量方式. 对于function语句式,解释器会优先解释.即加载了这个js文件后,会扫描一下所有的js代码,然后把该优先执行的东西先执行了,然后再从上到下按顺序执行.所以,定义的代码可以在执行的代码后边.就跟C#中的方法定义一样.解释器已经记住了这个方法,知道在内存中的哪里,用的时候直接去取就行了. C#语言是,对象中的属性与方法具有

Django 的css和js压缩插件:django_compressor

今天尝试了django_conpressor,一个在django框架中压缩css和js的插件,灰常有用 我把它加载在我的base的HTML template中,原来未经压缩的css和js是: <link rel="stylesheet" href = "include/style.css" type="text/css"> <link rel="stylesheet" href = "include

Django 程序中添加js插件文本编辑器

第一步:在首页中添加写博客的按钮     <li>         <a href="{% url 'create_article' %}">写博客</a>     </li> 第二步:写相应的创建博客视图,编辑views.py文件 def create_article(request):     if request.method == "GET" :         return  render(request,'