来学习开源模块化前端框架—Layui【Layui 极致轻量前端框架】

简介: 它是一个开源的 Web UI 解决方案,采用自己的经典模块化规范,遵循原生 HTML/CSS/JS 开发模式。它很容易使用。它的风格简单轻巧,而组件优雅而丰富。从源代码到使用方法的每一个细节都经过精心雕琢,非常适合快速开发的 web 界面。Layui 不同于那些基于 MVVM 的前端框架,但它并不违背这条道路,而是相信回归自然的方式。准确地说,它更面向后端开发人员。不需要参与前端工具,只需面对浏览器本身,让您需要的所有元素和交互都来自这里。

一.为什么要学习layui?

网络异常,图片无法展示
|

它是一个开源的Web UI解决方案,采用自己的经典模块化规范,遵循原生HTML/CSS/JS开发模式。它很容易使用。它的风格简单轻巧,而组件优雅而丰富。从源代码到使用方法的每一个细节都经过精心雕琢,非常适合快速开发的web界面。Layui不同于那些基于MVVM的前端框架,但它并不违背这条道路,而是相信回归自然的方式。准确地说,它更面向后端开发人员。不需要参与前端工具,只需面对浏览器本身,让您需要的所有元素和交互都来自这里。

二.目录结构

目录结构如下:

├─css //css目录
  │  │─modules //模块 css 目录(一般如果模块相对较大,我们会单独提取,如下:)
  │  │  ├─laydate
  │  │  └─layer
  │  └─layui.css //核心样式文件
  ├─font  //字体图标目录
  └─layui.js //核心库

三.CDN 方式引入

UNPKG 和 CDNJS 均为第三方开源免费的 CDN,通过 NPM/GitHub 实时同步。UNPKG 引入示例

<!-- 引入 layui.css -->
<link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">
<!-- 引入 layui.js -->
<script src="//unpkg.com/layui@2.6.8/dist/layui.js">

四.经典的模块化”

Layui被定义为“经典的模块化”,并不是为了炫耀她有多么优秀,而是为了刻意避免当前JS社区的主流解决方案,并尝试以尽可能简单的方式解释效率!所谓的经典在于她对回归自然的痴迷。以当前浏览器普遍认可的方式组织模块!我们相信,这对中国的大多数程序员来说是一个很好的指南,可以帮助他们在未来从旧时代过渡到新标准。因此,layui本身并不完全遵循AMD时代。准确地说,她试图建立自己的模型:

layui 模块的定义(新 js 文件)

layui.define([mods], function(exports){
  //……
  exports('mod', api);
});  
//layui 模块的使用
layui.use(['mod1', 'mod2'], function(args){
  var mod = layui.mod1;
  //……
});

有早期AMD的影子,但不受commonjs的规章制度限制。Layui认为这种轻量级组织比webpack更适合大多数场景。因此,她坚持采用经典的模块化,正是为了让人们避免复杂的工具配置,回归简单,安静高效地编织原始的HTML/CSS/JS。然而,layui不是像requirejs那样的模块加载器,而是一个UI解决方案。与bootstrap的不同之处在于,layui结合了自己对经典模块化的理解。这使在layui组织的框架内更好地用更易维护的代码编织丰富的用户界面。

五.建立模块入口

可以根据layui的模块规范创建条目文件,并使用layui use()加载条目文件,如下所示:存放新模块的目录,注意,不是 layui 的模块目录:

<script src="./layui/layui.js"></script> 
<script>
layui.config({
  base: '/res/js/modules/' 
}).use('index');
</script>

上述指数为指数。js在/RES/js/modules/目录中。其内容应如下:

layui.define(['layer', 'form'], function(exports){
  var layer = layui.layer
  ,form = layui.form;
  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'); //
</script>

这里的 main 模块包含了 mod1、mod2、mod3 等等扩展模块如我们所见,我们最多只需要加载两个JS文件:layui,js和main.js。这将显著减少对静态资源的请求。

七.全局配置

在使用该模块之前,请全局配置一些参数,尽管大多数情况下不需要这样做。因此,我们目前提供的全局配置项很少,这也是为了减少一些不必要的工作,并使使用尽可能简单。当前支持的全局配置项如下:

layui.config({
  dir: '/res/layui/'
  ,version: false 
  ,debug: false 
  ,base: '' 
});
  • layui.js 所在目录(如果是 script 单独引入 layui.js,无需设定该参数)一般可无视
  • 一般用于更新模块缓存,默认不开启。设为 true 即让浏览器不缓存。也可以设为一个固定的值,如:201610
  • 用于开启调试模式,默认 false,如果设为 true,则JS模块的节点会保留在页面
  • 设定扩展的 layui 模块的所在目录,一般用于外部模块扩展

如果对layui JS本身执行动态加载和其他特殊场景的看法是正确的,那么上述由config设置的layui-the-dir参数将变得无效。它将在加载某些组件的依赖文件(CSS)后执行。此时,我们可以动态加载layui JS定义了一个我们事先约定的全局对象:

<script>  
var LAYUI_GLOBAL = {
  dir: '/res/layui/' 
};
</script>

八.定义模块

使用此方法,可以在新的JS文件中定义layui模块。参数mods是可选的,用于声明模块依赖的模块。回调是加载模块后的回调函数。它返回一个exports参数以输出模块的接口。

layui.define(function(exports){
  //do something
  exports('demo', {
    msg: 'Hello Demo'
  });
});

与requirejs最大的区别在于接口输出。Exports是一个接受两个参数的函数。第一个参数是模块名,第二个参数是模件接口。声明上述模块后,可以在外部使用它。演示将在layui对象下注册,可以使用VaR demo=layui demo获得模块接口。还可以在定义模块时声明模块所需的依赖项,例如:

layui.define(['layer', 'laypage', 'mod1'], function(exports){ //此处 mod1 为你的任意扩展模块
  //do something
  exports('demo', {
    msg: 'Hello Demo'
  });
});

上述的 layer、laypage 都是 layui 的内置模块。

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

相关文章
|
2月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
transition过渡属性 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成。 但在CSS3中新增加了一个新的模块transition,它可以通过一些简单的CSS事件来触发元素的外观变化, 让效果显得更加细腻。简单点说,就是通过鼠标经过、获得焦点,被点击或对元素任何改变中触发, 并平滑地以动画效果改变CSS的属性值。 在CSS中创建简单的过渡效果可以从以下几个步骤来实现: 在默认样式中声明元素的初始状态样式; 声明过渡元素最终状态样式,比如悬浮状态; 在默认样式中通过添加
233 0
|
2月前
|
前端开发 JavaScript 算法
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
transform变形 css3在原来的基础上新增了变形和动画相关属性,通过这些属性可以实现以前需要大段JavaScript才能实现的 功能。 CSS3的变形功能可以对HTML组件执行位移、旋转、缩放、倾斜4种几何变换,这样的变换可以控制HTML组件 呈现出丰富的外观。 借助于位移、旋转、缩放、倾斜这4种几何变换,CSS3提供了transition动画。 transition动画比较简单,只要指定HTML组件的哪些CSS属性需要使用动画效果来执行变化,并指定动画时间,就可保证动画播放。 比transitio
185 0
|
5月前
|
JSON 前端开发 JavaScript
惊艳!阿里开源 15.2k Star 企业级低代码引擎揭秘,如何变革前端开发方式?
阿里巴巴开源的 LowCodeEngine 是一款企业级低代码引擎,具备可视化编排、UI 渲染、代码生成等全链路能力。支持 React、Vue、Rax 等框架,提供高扩展性与类型安全,助力高效开发,降低维护成本,适用于后台系统、多端同步等场景。
1005 1
|
4月前
|
JSON 监控 前端开发
AMIS:百度开源的前端低代码神器,18.4k star 背后的开发效率提升利器
AMIS(前端低代码框架)是百度开源的低代码前端框架,基于纯 JSON 配置即可生成完整后台页面,包括表单、表格、图表、CRUD 列表,支持可视化拖拽编辑。,星标数已达 18.4k,百度内部已沉淀超过 5 万个页面,广泛应用于审核系统、数据管理后台、模型监控等落地场景
982 0
|
8月前
|
人工智能 自然语言处理 前端开发
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
DeepSite是基于DeepSeek-V3模型的在线开发工具,无需配置环境即可通过自然语言描述快速生成游戏、网页和应用代码,并支持实时预览效果,显著降低开发门槛。
1641 93
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
|
5月前
|
Web App开发 前端开发 关系型数据库
GitHub 2.8k star 开源既封神,“Liquid‑Glass‑React”,让你前端界面瞬间拥有苹果级液态玻璃效果!
Liquid-Glass-React 是一款开源前端组件,旨在将 Apple iOS 26 的“液态玻璃”视觉效果引入 React 应用。凭借逼真折射、多种反射模式、响应式交互及高度可配置性,它已获得 2.8k stars,成为提升 UI 质感的热门工具。
613 0
|
6月前
|
人工智能 前端开发 数据可视化
天都塌了,17K+ Star 的AI开源神器!Onlook 如何颠覆前端开发与设计协作?怎么办
Onlook是一款开源的视觉优先代码编辑器,结合Figma直观操作与VS Code强大功能,支持浏览器中实时构建、编辑和部署React应用。项目已获17K+Star,提供快速创建Next.js应用、所见即所得的可视化编辑、AI驱动开发工具及一键部署协作等功能,是前端开发与设计协作的理想选择。
1019 0
|
10月前
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
523 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
10月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
307 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
10月前
|
JSON 前端开发 数据可视化
前端开发者狂喜!30K star开源组件库,界面美观度/开发速度双碾压!
嗨,大家好,我是小华同学。Layui 是一款开源前端 UI 组件库,具有极简设计、强大功能和卓越性能,支持布局、表单、表格、弹层等六大模块,组件高度可定制。它无需复杂构建工具,直接面向浏览器开发,极大提升开发效率与界面美观度。适合新手和老手,快来试试吧!
527 0

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    601
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    250
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    233
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    185
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    293
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    423
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    182
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    124
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    196
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    272