惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
Project Zero
Project Zero
L
LINUX DO - 最新话题
C
Cisco Blogs
P
Privacy International News Feed
S
Schneier on Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Security @ Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
Webroot Blog
Webroot Blog
K
Kaspersky official blog
Help Net Security
Help Net Security
博客园_首页
Security Archives - TechRepublic
Security Archives - TechRepublic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
雷峰网
雷峰网
The Last Watchdog
The Last Watchdog
WordPress大学
WordPress大学
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
A
Arctic Wolf
I
Intezer
V
V2EX
博客园 - 【当耐特】
Latest news
Latest news
T
Tenable Blog
Google Online Security Blog
Google Online Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
Cyberwarzone
Cyberwarzone
量子位
G
GRAHAM CLULEY
T
Troy Hunt's Blog
博客园 - Franky
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 三生石上(FineUI控件)
TaoSecurity Blog
TaoSecurity Blog
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
Jina AI
Jina AI
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Scott Helme
Scott Helme

博客园 - 长沙游学者

填坑 Plugin 'mysql_native_password' is not loaded 裁员相关法律知识 自己写了个截图工具 .net操作oracle,一定要用管理员身份运行 visual studio 啊,切记切记,免得报奇怪的错误。 基于 bootstrap 的 vue 分页组件 前端UI框架《Angulr》入门 EF 中 Code First 的数据迁移以及创建视图 Oracle自动备份.bat 最新更新(支持Win10了) 总结一下Android中主题(Theme)的正确玩法 并不优雅 思考:有三扇门,其中一扇门里有奖品,三选一,你选择其中一扇门之后,主持人先不揭晓答案,而是从另外两扇门中排除掉一个没有奖品的门,现在主持人问你,要不要换个门,请问你换还是不换? 深入分析结构体——结构体里有属性必须new才能使用? TableEx 小更新 本地包含的JS 原创的java数据访问框架 java十宗罪 Oracle自动备份.bat 更新 C++ 方块游戏小更新 Oracle自动备份.bat
AmazeUI(妹子UI)中CSS组件、JS插件、Web组件的区别
长沙游学者 · 2017-07-30 · via 博客园 - 长沙游学者

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