BUI入门系列-Hello BUI !

导引
欢迎使用BUI!在这一章节里,我们将学习以下内容:

如何加载BUI文件和开始使用BUI的一些基础功能
BUI依赖的其他框架
如何去定义模块和加载模块
如何使用API以及对应的demo
在使用过程中遇到的问题如何去处理

如何开始

最简单的使用BUI的方式是直接引用CDN上的文件,这能节约很多部署文件带来的问题,不过这也要求,你必须能访问公共网络。

你只需要把你要运行的页面放到一个web server上,BUI框架没有什么安全上的限制,所以不需要服务器有特别的功能,不过如果能提供Combo功能更好,Combo功能在下面会介绍。

最简单的示例

<pre class="prettyprint linenums" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); margin-top: 8px; box-shadow: rgb(251, 251, 252) 40px 0px 0px inset, rgb(236, 236, 240) 41px 0px 0px inset; color: rgb(51, 51, 51); font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Tutorial: Hello BUI!</title>
  6. <link href="https://s.tbcdn.cn/g/fi/bui/css/dpl-min.css" rel="stylesheet">
  7. <link href="https://s.tbcdn.cn/g/fi/bui/css/bui-min.css" rel="stylesheet">
  8. </head>
  9. <body>
  10. <h1>Hello</h1>
  11. <script src="https://s.tbcdn.cn/g/fi/bui/jquery-1.8.1.min.js"></script>
  12. <script src="https://s.tbcdn.cn/g/fi/bui/seed-min.js?t=201212261326"></script>
  13. <script>
  14. BUI.use('bui/overlay', function (Overlay) { //因为message属于
  15. Overlay.Message.Alert('欢迎使用BUI');
  16. });
  17. </script>
  18. </body>
  19. </html>

</pre>

上面的代码演示了如何使用BUI,你需要引入:

  1. BUI默认的CSS文件,如果你有自定义的样式可以不引入
  2. BUI依赖的类库,默认是JQuery,也可以更换为Kissy,参看详情

你可能需要处理使用https的资源,你可以直接将地址换成类似于:
https://s.tbcdn.cn/g/fi/bui/seed-min.js的地址

不使用loader

如果你对loader陌生,可以直接将整个BUI引入,但是我们不推荐这样做:

  1. 整个BUI文件很大,超过200k
  2. 有一些模块并未包含到打包好的文件中
  3. 未来不排除,在新的版本中去掉这种引入方式

<pre class="prettyprint linenums" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); margin-top: 8px; box-shadow: rgb(251, 251, 252) 40px 0px 0px inset, rgb(236, 236, 240) 41px 0px 0px inset; color: rgb(51, 51, 51); font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Tutorial: Hello BUI!</title>
  6. <link href="https://s.tbcdn.cn/g/fi/bui/css/dpl-min.css" rel="stylesheet">
  7. <link href="https://s.tbcdn.cn/g/fi/bui/css/bui-min.css" rel="stylesheet">
  8. </head>
  9. <body>
  10. <h1 id="greeting">Hello</h1>
  11. <script src="https://s.tbcdn.cn/g/fi/bui/jquery-1.8.1.min.js"></script>
  12. <script src="https://s.tbcdn.cn/g/fi/bui/bui-min.js?t=201212261326"></script>
  13. <script>
  14. BUI.Message.Alert('欢迎使用BUI'); //Message 属于Overlay模块,BUI.Message = BUI.Overlay.Message
  15. //TO DO
  16. </script>
  17. </body>
  18. </html>

</pre>

<label class="label label-info" style="display: inline-block; padding: 1px 4px 2px; font-size: 12px; font-weight: bold; line-height: 18px; color: rgb(255, 255, 255); vertical-align: middle; white-space: nowrap; text-shadow: rgba(0, 0, 0, 0.25) 0px -1px 0px; background-color: rgb(58, 135, 173); border-radius: 3px;">注意</label> 以下几点:

  1. css文件放到head标签中
  2. script文件作为body的最后标签,防止JS阻塞DOM加载

更多的关于加载和配置BUI的内容请参看:BUI的加载和配置

模块规范

BUI的模块规范遵循CMD规范,加载默认方式使用seajs,可以去seajs的文档了解更多的信息。

作为BUI的开发者为了方便用户,我们在实现和加载层次上,屏蔽了底层loader的存在,您只需要按照BUI的写法既可以无障碍的使用loader。

定义模块

模块的定义遵循CMD规范,模块的名称一般使用"/",例如 bui/list/simplelist,模块名称必须跟目录有对应关系,上面定义的模块的文件是bui/list/simplelist.js

这里有非常复杂的目录映射,不过日常使用中,使用最简单的方式:文件目录名跟模块名一致的规则即可。

示例如下:

<pre class="prettyprint linenums" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); margin-top: 8px; box-shadow: rgb(251, 251, 252) 40px 0px 0px inset, rgb(236, 236, 240) 41px 0px 0px inset; color: rgb(51, 51, 51); font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

  1. //定义模块的函数,有3个变量,模块名称、依赖的模块和模块的主体函数

  2. //模块名称和依赖的模块可以省略

  3. define('newModuleName',['module1','module2'],function(require){

  4. var Module1 = require('module1'); //根据模块名称获取模块

  5. var NewModule = function(){ //定义模块

  6. };

  7. return NewModlue; //将定义的新模块返回,在其他模块中require('newModuleName')来使用

  8. });

</pre>

CMD的规范比这里的示例要复杂,但是仅仅使用BUI,了解示例的代码就足够了。如果想了解更多这方面的知识的话,可以去深入了解一下seajs。

模块加载

以下代码简单的展示加载BUI模块的方式:

默认的加载方式

BUI.use(id, callback)

<pre class="prettyprint linenums" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); margin-top: 8px; box-shadow: rgb(251, 251, 252) 40px 0px 0px inset, rgb(236, 236, 240) 41px 0px 0px inset; color: rgb(51, 51, 51); font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

  1. <script src="https://s.tbcdn.cn/g/fi/bui/jquery-1.8.1.min.js"></script>

  2. <script src="https://s.tbcdn.cn/g/fi/bui/seed-min.js?t=201212261326"></script>

  3. <script type="text/javascript">

  4. BUI.use('bui/list',function(List){

  5. });

  6. //一次加载多个模块

  7. //bui/list 对应模块 List

  8. //bui/data 对应模块 Data

  9. BUI.use(['bui/list','bui/data'],function(List,Data){

  10. });

  11. </script>

</pre>

加载多个模块时,当模块加载完毕后会调用指定的callback方法,其中回调方法的参数与加载的模块一一对应。如:加载['bui/list','bui/data'],其后的回调方法则需要定义两个参数function(List,Data),则参数List所对应的是bui/list模块的对象,如此类推。

使用CDN

我们所有的示例中皆使用cdn上的JS文件,这意味着你可以直接复制代码粘贴到本地运行,而不需要修改任何路径,但这里有以下缺点:

  • 开发方面,cdn上的文件都是经过build的,经过压缩和代码优化,这也意味着调试困难
  • 这也要求你能说服你的客户,接受引用cdn上的文件,很多情况下,这很困难。
  • 加载你自己的模块时,你需要额外配置自己的配置文件。
  • 目前CDN上的代码更新比较频繁,因为BUI处于开发阶段必然会接受大量需求和反馈,为了能及时响应,所以不可避免的会偶尔的引入一些问题。

上面的所有问题都有对应的解决方案,可以查看以下章节加载文件编译自己的模块来进一步了解。

假如你要部署自己的本地应用,你可以下载BUI的源码,同时部署到自己的web server上。你可以将自己的代码放在自己的目录下,如下图:

image

然后这样引用文件:

<pre class="prettyprint linenums" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); margin-top: 8px; box-shadow: rgb(251, 251, 252) 40px 0px 0px inset, rgb(236, 236, 240) 41px 0px 0px inset; color: rgb(51, 51, 51); font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Tutorial: Hello BUI!</title>
  6. <link href="../assets/css/bui/css/dpl-min.css" rel="stylesheet">
  7. <link href="../assets/css/bui/css/bui-min.css" rel="stylesheet">
  8. </head>
  9. <body>
  10. <h1 id="greeting">Hello</h1>
  11. <script src="../assets/js/bui/jquery-1.8.1.min.js"></script>
  12. <script src="../assets/js/bui/seed-min.js?t=201212261326"></script>
  13. <script>
  14. BUI.use('bui/list',function(List){
  15. //TO DO
  16. });
  17. </script>
  18. </body>
  19. </html>

</pre>

获取帮助

  • 你可以去BUI网站查看更多的Demo
  • 你可以去BUI论坛参与交流和探讨
  • 你可以去BUI API查看控件的API以便更加了解BUI
  • 你可以去issue列表里提交自己的问题和需求
  • 你可以参加旺旺群:778141976,QQ群:138692365

下一步学习

开始使用BUI是非常简单的,只需要引入BUI所依赖的文件,和引入对应的模块即可。但是BUI有很多非常好的机制和功能,根据你的需要你可以按照不同的章节进行学习。

  • 假如你使用过BUI,你想了解更多的BUI整体的设计和未来的方向,你可以去看一下BUI的现状章节
  • 假如你想知道更多的加载BUI模块相关的信息,你可以去查看一下加载文件章节
  • 假如你仅仅是被BUI的控件吸引,可以直接去BUI网站复制对应的Demo
  • 假如你想了解BUI的控件结构,基于BUI进行新控件的开发和扩展,可以从类的创建和继承开始

BUI 刚刚起步,但是我们坚持的理念是:让您的工作更轻松,不让前端领域成为您项目的瓶颈,更希望您能参与到BUI的开发当中!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342