zui
Version:
一个基于 Bootstrap 深度定制开源前端实践方案,帮助你快速构建现代跨屏应用。
288 lines (255 loc) • 9.39 kB
Markdown
section: basic
id: edition
description: 选择合适的版本
icon: icon-code-fork
filter: xuanzebanben xzbb
---
# 选择版本和定制
ZUI 中提供了众多丰富的 Web 组件,几乎为你准备构建现代Web应用所有基础内容。但大部分场景并不需要所有组件,所以并没有将所有内容打包为一个 CSS 文件和一个 JS 文件。标准版中仅包含常用的组件,这些组件用于绝大部分场景。
在构建轻量级的应用时需要的内容更少。ZUI预编译版本中提供了一个简洁的版本。简洁版包含了 ZUI 中大部分常用内容,经过压缩后体积更小。你可以在 dist 目录下找到文件名包含 '.lite' 的文件即为简洁版。
## 标准版
在标准版中包含绝大部分常用组件。预编译的标准版包含以下文件:
```
zui/
└── dist/
├── css/ CSS文件
│ ├── zui.css
│ └── zui.min.css
├── js/ Javascript文件
│ ├── zui.js
│ └── zui.min.js
└── fonts/ 图标字体文件
├── zenicon.eot
├── zenicon.ttf
├── zenicon.woff
└── zenicon.svg
```
## 简洁版
在简洁版中包含大部分常用组件。标准版中已包含简洁版的所有内容。预编译的简洁版包含以下文件:
```
zui/
└── dist/
├── css/ CSS文件
│ ├── zui.lite.css
│ └── zui.lite.min.css
├── js/ Javascript文件
│ ├── zui.lite.js
│ └── zui.lite.min.js
└── fonts/ 图标字体文件
├── zenicon.eot
├── zenicon.ttf
├── zenicon.woff
└── zenicon.svg
```
## 独立组件
一些组件可能既不包含在标准版中,也没有包含在简洁版中,使用时只需要按需引用对应的资源文件即可。你可以在以下目录中找到独立组件包含的资源文件:
```
zui/
└── dist/
└── lib/ 独立加载的组件
├── chosen/ Chosen组件
├── datetimepicker/ 日期时间选择组件
├── datatable/ 数据表格组件
└── ... 更多组件....
```
<div class="alert alert-warning-inverse">
<h4>提示</h4>
<p>ZUI 包含的很多独立组件都需要jQuery和ZUI的其他基础插件支持,所以尽量配合 jQuery 和 ZUI 标准版或简洁版来使用。</p>
</div>
## 组件清单
组件清单帮助你快速查找所需的组件是否包含在指定版本中。在 ZUI 中目前包含 <span class="components-count"></span> 个可以选择使用的组件(不包括合并组件)。
<table class="table table-bordered" id="buildTable">
<thead>
<tr>
<th data-width="auto">组件</th>
<th data-width="7%" style="width: 7%" class="text-center">标准版</th>
<th data-width="7%" style="width: 7%" class="text-center">简洁版</th>
<th data-width="7%" style="width: 7%" class="text-center">独立组件</th>
<th data-width="15%" style="width: 15%" class="text-center">来源</th>
<th data-width="9%" style="width: 9%" class="text-center">许可</th>
<th data-width="30%" style="width: 30%" class="text-center">版本及描述</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="5" class="text-muted">正在加载列表...</td>
</tr>
</tbody>
</table>
<div class="alert alert-primary-inverse">
<h4>提示</h4>
<p>几乎所有第三方组件都经过 ZUI 定制,这些组件一般也不会一直与官方最新版本保持同步。</p>
</div>
## 使用 Gulp 定制
ZUI 使用 [Gulp](http://gulpjs.com/) 作为构建工具。如果不了解 Gulp 也没有关系,Gulp 是一个非常棒而且容易上手的工具。下面给出简要步骤来准备编译 ZUI,如果想了解更多请访问 [Gulp 官方网站](http://gulpjs.com/)。
### 安装 Gulp
Gulp 构建在nodejs 之上。在安装 Gulp 之前需要首先[下载并安装 node.js](http://nodejs.org/download/)。最新版的 node.js 安装包已包含 npm([node packaged modules](http://npmjs.org/))。npm 是nodejs用来管理扩展包的工具。
安装 nodejs 之后,在命令行进行如下操作:
* 在全局环境中安装 gulp :`npm install -g gulp`;
* 进入 ZUI 源码目录,执行 `npm install` 命令。nmp将读取包配置文件`package.json`文件并自动安装Gulp和所有依赖的扩展包。
### 使用 Gulp 来构建
完成上述步骤就可以进行编译了。只需要进入ZUI中使用命令行输入对应的命令就可以启动编译任务。内置的`build`命令可以完成大部分编译任务。以下为ZUI内置的一些常用任务命令。
<table class="table table-bordered">
<thead>
<tr>
<th style="width: 200px">命令</th>
<th style="width: 40%">说明</th>
<th>输出目录</th>
</tr>
</thead>
<tbody>
<tr>
<td>`gulp build -standard`</td>
<td>编译标准版</td>
<td>
<ul>
<li>`dist/js/zui*.js`</li>
<li>`dist/css/zui*.css`</li>
<li>`dist/fonts/**`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp build -lite`</td>
<td>编译简洁版</td>
<td>
<ul>
<li>`dist/js/zui.lite*.js`</li>
<li>`dist/css/zui.lite*.css`</li>
<li>`dist/fonts/**`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp build -dist`</td>
<td>编译标准版和简洁版以及常用独立组件</td>
<td>
<ul>
<li>`dist/js/**`</li>
<li>`dist/css/**`</li>
<li>`dist/fonts/**`</li>
<li>`dist/lib/*/**`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp dist`</td>
<td>`gulp build -dist`的简单写法</td>
<td>
<ul>
<li>`dist/js/**`</li>
<li>`dist/css/**`</li>
<li>`dist/fonts/**`</li>
<li>`dist/lib/*/**`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp lib`</td>
<td>`gulp build -lib`的简单写法,编译所有独立组件</td>
<td>
<ul>
<li>`dist/lib/**`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp build -doc`</td>
<td>编译文档所需资源</td>
<td>
<ul>
<li>`doc/js/zui*.js`</li>
<li>`doc/css/zui*.css`</li>
<li>`doc/fonts/**`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp build -theme`</td>
<td>编译主题</td>
<td>
<ul>
<li>`dist/css/zui-theme*.css`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp build -[build name]`</td>
<td>编译独立组件包,`[build name]`为组件包名称,可以为`calendar`、`kindeditor`、`chosen`等</td>
<td>
<ul>
<li>`dist/lib/[build name]/**`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp build -[control name]`</td>
<td>编译单独控件,`[control name]`为控件名称,可以为`button`、`alerts`、`panels`等</td>
<td>
<ul>
<li>`dist/lib/[control name]/**`</li>
</ul>
</td>
</tr>
<tr>
<td>`gulp watch:doc`</td>
<td colspan="2">监听`src/`目录下的文件变更,当文件发生更改之后立即调用 `gulp build -doc`命令。</td>
</tr>
<tr>
<td>`gulp watch:dist`</td>
<td colspan="2">监听`src/`目录下的文件变更,当文件发生更改之后立即调用 `gulp build -dist`命令。</td>
</tr>
<tr>
<td>`gulp watch:theme`</td>
<td colspan="2">监听`src/`目录下的文件变更,当文件发生更改之后立即调用 `gulp build -theme`命令。</td>
</tr>
<tr>
<td>`gulp prettify:js`</td>
<td colspan="2">整理并优化`src/`目录下所有javascript源码文件的代码格式。</td>
</tr>
</tbody>
</table>
你也可以通过编辑`gulpfile.js`文件来定义自己的编译任务。
### 自定义gulpfile
你可以在ZUI源码根目录新建一个`gulpfile.custom.js`文件,然后在此文件中自定义更多的gulp任务。
```js
// 文件:gulpfile.custom.js
// 必须导出一个函数 function(gulp, $)
module.exports = function(gulp, $) {
// 自定义gulp任务'hello'
gulp.task('hello', function() {
console.log('hello world!');
});
// 第二个参数 $ 包含gulpfile.js中大部分可用工具函数和数据
// $: {
// less: less,
// cssmin: cssmin,
// csscomb: csscomb,
// autoprefixer: autoprefixer,
// concat: concat,
// header: header,
// uglify: uglify,
// rename: rename,
// change: change,
// sourcemaps: sourcemaps,
// prettify: jsbeautifier
// buildBundle: buildBundle,
// zui: zui,
// pkg: pkg,
// del: del,
// mkdirp: mkdirp,
// runSequence: runSequence
// }
};
```
<script>
function onPageLoad() {
return false;
}
function afterPageLoad() {
if($.doc) {
$.doc.displayPkgLibTable($('#buildTable'));
}
setTimeout($.doc.stopPageLoading, 1500);
}
</script>