-

开始使用 - 入门指南

Layui(谐音:类 UI) 是一套开源的 Web UI 组件库,采用自身轻量级模块化规范,遵循原生态的 HTML/CSS/JavaScript 开发模式,极易上手,拿来即用。其风格简约轻盈,而内在雅致丰盈,甚至包括文档在内的每一处细节都经过精心雕琢,非常适合网页界面的快速构建。Layui 区别于一众主流的前端框架,却并非逆道而行,而是信奉返璞归真之道。确切地说,它更多是面向于追求简单的务实主义者,他们无需涉足各类构建工具,只需面向浏览器本身,即可轻松掌握页面所需的元素与交互,进而信手拈来。

兼容性和面向场景
layui 兼容人类正在使用的全部浏览器(IE6/7 除外),可作为 Web 界面速成开发方案。
下载引用

1. 官网首页下载

你可以在我们的 官网首页 下载到 layui 的最新版,它经过了自动化构建,更适合用于生产环境。目录结构如下:
  layui/
  ├─css
  │  └─layui.css   # 核心样式库
  └─layui.js       # 核心模块库
     

2. Git 下载

你也可以通过 GitHubGitee 下载 released 版本。或者直接下载整个仓库,以便进行二次开发。也可以 Fork layui 参与项目。

3. npm 下载

npm i layui
      

4. 第三方 CDN 方式引入:

UNPKG 和 CDNJS 均为第三方免费的 CDN,资源通过 NPM/GitHub 进行同步。另外还可以采用国内的 Staticfile CDN
<!-- 引入 layui.css -->
<link href="//unpkg.com/layui@/dist/css/layui.css" rel="stylesheet">
 
<!-- 引入 layui.js -->
<script src="//unpkg.com/layui@/dist/layui.js">
      
快速上手

如果你将 Layui 下载到了本地,那么可将其放置到你项目的静态资源目录,并在页面引入核心文件即可。这是一个基本的入门页面:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>开始使用 layui</title>
  <link href="./layui/css/layui.css" rel="stylesheet">
</head>
<body>
 
<!-- 你的 HTML 代码 -->
 
<script src="./layui/layui.js"></script>
<script>
layui.use(['layer', 'form'], function(){
  var layer = layui.layer;
  var form = layui.form;
  
  layer.msg('Hello World');
});
</script> 
</body>
</html>
      
返璞归真

Layui 采用自身轻量级模块化规范,并非是有意违背 CommonJS 和 ES Module ,而是试图以更简单的方式去诠释高效,这种对返璞归真的执念源于在主流标准尚未完全普及的前 ES5 时代,后来也成为 Layui 独特的表达方式,而沿用至今。如下是一个关于模块的简单示例:

// 定义模块(通常单独作为一个 JS 文件)
layui.define([modules], function(exports){
  //…
  
  exports('mod1', api);
});  
 
// 使用模块
layui.use(['mod1'], function(args){
  var mod1 = layui.mod1;
  
  //…
});   

我们可以将其视为「像使用普通的 API 一样来管理模块」,在此前提下,组件的承载也变得轻松自如,我们完全可以游刃在以浏览器为宿主的原生态的 HTML/CSS/JavaScript 的开发模式中,而不必卷入层出不穷的主流框架的浪潮之中,给心灵一个栖息之所。

当然,Layui 自然也不是一个模块加载器,而是一套相对完整的 UI 解决方案,但与 Bootstrap 又并不相同,除了 HTML+CSS 本身的静态化处理,Layui 更倾向于组件的动态化渲染,并为之提供了相对丰富和统一的 API,只需稍加熟悉,便可以在各种交互中应付自如。

建立模块入口

您可以遵循 layui 的模块规范建立一个入口文件,并通过 layui.use() 方式来加载该入口文件,如下所示:

<!-- 你引入的 layui.js 建议是通过官网首页下载的。当然也可以由 github 或 gitee clone -->
<script src="./layui/layui.js"></script> 
<script>
layui.config({
  base: '/res/js/modules/' //你存放新模块的目录,注意,不是 layui 的模块目录
}).use('index'); //加载入口
</script>    
    
上述的 index 即为你 /res/js/modules/ 目录下的 index.js,它的内容应该如下:
/**
  index.js 项目 JS 主入口
  以依赖 layui 的 layer 和 form 模块为例
**/    
layui.define(['layer', 'form'], function(exports){
  var layer = layui.layer
  ,form = layui.form;
  
  layer.msg('Hello World');
  
  exports('index', {}); //注意,这里是模块输出的核心,模块名必须和 use 时的模块名一致
});    
      

从 layui 2.6 开始,如果你引入的是构建后的 layui.js,里面即包含了 layui 所有的内置模块,无需再指定内置模块。如:

/**
  index.js 项目 JS 主入口
**/ 
layui.define(function(){ // 需确保您的 layui.js 是引入的构建后的版本(即官网下载或 git 平台的发行版)
  //直接可得到各种内置模块
  var layer = layui.layer
  ,form = layui.form
  ,table = layui.table;
  
  //…
  layer.msg('Hello World');
  
  exports('index', {}); //注意,这里是模块输出的核心,模块名必须和 use 时的模块名一致
});
      
管理扩展模块

除了使用 layui 的内置模块,必不可少也需要加载扩展模块(可以简单理解为符合 layui 模块规范的 JS 文件)。我们假设你的项目中存放了很多个扩展模块,如下所举:

//mod1.js
layui.define('layer', function(exports){
  //…
  exports(mod1, {});
});
 
//mod2.js,假设依赖 mod1 和 form
layui.define(['mod1', 'form'], function(exports){
  //…
  exports(mod2, {});
});  
 
//mod3.js
//… 
 
//main.js 主入口模块
layui.define('mod2', function(exports){
  //…
  exports('main', {});
});
      

上述扩展模块在经过了一定的模块依赖关系后,同样可以合并为一个文件来加载。我们可以借助 Gulp 将上述的 mod1、mod2、mod3、main 等扩展模块构建合并到一个模块文件中:main.js,此时你只需要加载它即可:

<script src="./layui/layui.js"></script>  
<script>
layui.config({
  base: '/res/js/modules/' //你的扩展模块所在目录
}).use('main'); //这里的 main 模块包含了 mod1、mod2、mod3 等等扩展模块
</script> 
      

可以看到,这样我们最多只需要加载两个 JS 文件:layui.js、main.js。这将大幅度减少静态资源的请求。

通过上面的阅读,也许你已大致了解如何使用 layui 了,不过你可能还需要继续阅读后面的文档,尤其是「基础说明」。
那么,欢迎你开始拥抱 layui!愿它能成为你得心应手的 Web 界面解决方案,化作你方寸屏幕前的亿万字节!

layui - 在每一个细节中,用心与你沟通