首页 web前端 js教程 layui的项目优化以及无侵入优化的详细解析

layui的项目优化以及无侵入优化的详细解析

Aug 25, 2018 am 09:51 AM
layui 项目优化

本篇文章给大家带来的内容是关于layui的项目优化以及无侵入优化的详细解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

基于layui的实战优化,无侵入优化 form date open-iframe data-table upload verify-form laytpl laypage laytree tableTree

10560984_1535077194117_97174.png
# layui-update

#### 项目介绍

##### 基于layui的实战优化,无侵入优化

###### [1. 表单元素优化](https://bable2000.gitee.io/layui-update/view-demo/imit-form.html)

1、 表单元素不用包裹在layui-form中
2、 动态添加表单元素不用form.render()渲染
3、 时间控件无JS设置,min max动态设置,开始结束时间分开输入
4、添加input select date radio checkbox失焦校验
5、[独立form表单的校验(不必要触发提交,也不需要设置过滤器)](https://bable2000.gitee.io/layui-update/view-demo/verify-form.html)
6、追加下拉按钮组、搜索选择框(自由型)
7、追加表单组按钮组

###### 2. [简化固定表格](https://bable2000.gitee.io/layui-update/view-demo/fixed-table.html)(表头固定、第一列固定、最后一列固定、表尾固定)

###### 3. [数据表格](https://bable2000.gitee.io/layui-update/view-demo/data-table.html)
1. 表头固定、第一列固定、最后一列固定、表尾固定,但表单结构一点不发生变化
2. 自定义表单模板(可以自己修改)
3. 分页与表格独立开(便于数据请求后展示前的处理)
4. 因为自定义表单模板,所以允许checkbox的默认checked/disabled
5. 添加了表尾手动‘合计’的功能

[数据表格.png](http://oyh4crb8q.bkt.clouddn.com/data-table.png)

###### 4. [修改laytpl模板写法成vue模式](https://bable2000.gitee.io/layui-update/view-demo/laytpl.html),laytpl复杂模板太难写了

###### 5. 优化layer(根据项目需求)

1. [添加layer的异步请求](https://bable2000.gitee.io/layui-update/view-demo/layer-open.html),减少ajax->layer的嵌套

```
layer.open({
 type: 1,
 async: true, //异步请求,content为请求地址
 content: '../template/xx.tpl',
 data: { 
 /*静态tpl文件搭配动态数据,生成动态提示框.*/
 /*(好处:不用后端生成动态文件,不用前端拼接字符串,不用一次性把当前页面可能涉及的弹窗内容全部都提前加载完)*/
 v1: '李先生,你好!',
 v2: '没有开通权限/已开通权限'
 },
 btn: ['按钮一', '按钮二', '按钮三'],
 success: function(layero, index) {
 console.log(layero, index);
 }
})
```
登录后复制

2. [添加iframe弹窗的打开位置与溯原性](https://bable2000.gitee.io/layui-update/)

```
var open1 = function() {
 layer.open({
 type: 2,
 goal: top, //顶层窗口top,父级窗口parent,父级的父级窗口parent.parent
 content: './view-demo/iframe-source-2.html',
 area: ['50%', '50%'],
 success: function() {
 console.log('加载完')
 }
 })
};
parent.layer.close(layerIndex) //当前窗口信息
layerSource.parent.layer.close(layerSource.layerIndex) //关闭打开当前窗口的窗口
console.log('iframe弹窗发起方 layerSource:', layerSource.document);
console.log('iframe弹窗layer索引值 layerIndex:', layerIndex)
```
######
 6. 
[数据变化监控](https://bable2000.gitee.io/layui-update/view-demo/watchData.html)
 , 
[指定节点变化监控](https://bable2000.gitee.io/layui-update/view-demo/watchDom.html)
```
<div id="d1" class="box" attr-1=""></div>
<button type="button" onclick="$(&#39;.box&#39;).addClass(&#39;box-1&#39;)">改变1</button>
<button type="button" onclick="document.getElementById(&#39;d1&#39;).setAttribute(&#39;attr-1&#39;,&#39;x1&#39;)">改变2</button>
<button type="button" onclick="document.getElementById(&#39;d1&#39;).innerHTML=&#39;HTML&#39;">改变3</button>
<script type="text/javascript">
var data = {
 a: 200,
 b: [1, 2, 3],
 c: {
 c1: 1,
 c2: 2
 }
};
$.watchData(data, function(x, y, z) {
 var c = &#39;data发生了改变↓&#39; + &#39;</br>&#39; +
 &#39;新值:&#39; + JSON.stringify(x) + &#39;</br>&#39; +
 &#39;旧值:&#39; + JSON.stringify(y) + &#39;</br>&#39; +
 &#39;key:&#39; + JSON.stringify(z);
 layer.alert(c);
});
$.watchDom(document.getElementById(&#39;d1&#39;), function() {
 layer.alert(&#39;box改变&#39;);
});
</script>
```
登录后复制

###### 6. [文件上传预览,上传进程条* 及各种前后端错误处理,文件全屏预览,旋转](https://bable2000.gitee.io/layui-update/view-demo/upload.html)

[文件上传.png](http://oyh4crb8q.bkt.clouddn.com/file-1.png)

[文件全屏预览.png](http://oyh4crb8q.bkt.clouddn.com/file-2.png)

1、 reader.readAsDataURL(file)->window.URL.createObjectURL(file) =>异步文件预览改为 同步(浏览器支持性相同)

\* [引用Stream的代码,再'优化'](https://fly.layui.com/jie/31616/)

###### 7. 外部文件递归引用

```
<imports href="../template/imports-1.tpl">同步引入失败替换内容(引入片段中允许有script)</imports>
<imports href="../template/imports-1.tpl" async>异步引入失败替换内容</imports>
```
登录后复制

###### 8. js引入外部文件

> requires方法内部用promise实现缓存,如需重复请求一个动态文件,请加时间戳
```
"请求js"
requires(jsBase + &#39;imit.js&#39;); //同步阻塞引入js
requires(jsBase + &#39;imit.js&#39;, true); //异步引入js
requires(jsBase + &#39;imit.js&#39;, function(){/*加载成功回调*/}); //异步引入js
var req1=requires(jsBase + "tpl.js", true);
req1.then(function(){/*promise式请求*/});
"请求css"
requires(&#39;css|style1.css&#39;) //异步请求style1.css
"请求html,html#,tpl,ftl"
requires(&#39;text|file.tpl&#39;, function(html) {/*以文本形式引入file.tpl,剔除了<html><head><body>标签,*/})
requires(&#39;text|file.tpl#x1&#39;, function(x1) {/*引入file.tpl,并获取x1锚点内容*/})
requires(&#39;text|file.tpl#y1&#39;, function(y1) {/*不再发起重复请求,直接从file.tpl文件缓存中,并获取y1锚点内容*/})
```
登录后复制

#### 软件架构

基于layui架构 /** layui-v2.2.6 MIT License By https://www.layui.com */

#### 安装教程

基于layui架构

layui 首个版本发布于2016年金秋,她区别于那些基于 MVVM 底层的 UI 框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,她更多是为服务端程序员量身定做,你无需涉足各种前端工具的复杂配置,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。

你需要引入:

```
<link rel="stylesheet" type="text/css" href="../js/layui/css/layui.css" />
<link rel="stylesheet" type="text/css" href="../css/common.css" />
<script src="../js/jquery.min.js"></script>
<script src="../js/layui/layui.js"></script>
<script src="../js/common.js"></script>
```
登录后复制

相关推荐:

JavaScript 项目优化总结

怎样使用gulp自动优化requireJS的项目

WEB项目优化技巧(必会)

以上是layui的项目优化以及无侵入优化的详细解析的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

layui登陆页面怎么设置跳转 layui登陆页面怎么设置跳转 Apr 04, 2024 am 03:12 AM

layui 登录页面跳转设置步骤:添加跳转代码:在登录表单提交按钮点击事件中添加判断,成功登录后通过 window.location.href 跳转到指定页面。修改 form 配置:在 lay-filter="login" 的 form 元素中添加 hidden 输入字段,name 为 "redirect",value 为目标页面地址。

layui怎么获取表单数据 layui怎么获取表单数据 Apr 04, 2024 am 03:39 AM

layui 提供了多种获取表单数据的方法,包括直接获取表单所有字段数据、获取单个表单元素值、使用 formAPI.getVal() 方法获取指定字段值、将表单数据序列化并作为 AJAX 请求参数,以及监听表单提交事件获取数据。

如何优化Java开发工作项目经验 如何优化Java开发工作项目经验 Nov 02, 2023 am 09:47 AM

Java开发是当今世界上最流行的编程语言之一,随着越来越多的公司和组织使用Java进行应用程序开发,Java开发人员的数量也在不断增加。然而,Java开发者可能会面临一些常见问题,例如重复代码、缺乏文档、低效的开发流程等。在这篇文章中,我们将探讨一些优化Java开发工作项目经验的方法。使用设计模式使用设计模式可以避免代码的重复和不必要的复杂性,同时提高代码的

layui如何实现自适应 layui如何实现自适应 Apr 26, 2024 am 03:00 AM

通过使用layui框架的响应式布局功能,可以实现自适应布局。步骤包括:引用layui框架。定义自适应布局容器,设置layui-container类。使用响应式断点(xs/sm/md/lg)隐藏特定断点下的元素。利用网格系统(layui-col-)指定元素宽度。通过偏移量(layui-offset-)创建间距。使用响应式实用工具(layui-invisible/show/block/inline)控制元素的可见性和显示方式。

layui怎么传数据 layui怎么传数据 Apr 26, 2024 am 03:39 AM

使用 layui 传输数据的方法如下:使用 Ajax:创建请求对象,设置请求参数(URL、方法、数据),处理响应。使用内置方法:使用 $.post、$.get、$.postJSON 或 $.getJSON 等内置方法简化数据传输。

layui跟vue有啥区别 layui跟vue有啥区别 Apr 04, 2024 am 03:54 AM

layui与Vue的区别主要体现在功能和关注点上。layui专注于快速开发UI元素,提供预制组件简化页面构建;而Vue是一个全栈框架,注重数据绑定、组件化开发和状态管理,更适合构建复杂应用程序。 layui学习简单,适合快速构建页面;Vue学习曲线陡峭,但有助于构建可扩展和易维护的应用程序。根据项目需求和开发者技能水平,可以选择合适的框架。

layui是什么意思啊 layui是什么意思啊 Apr 04, 2024 am 04:33 AM

layui是一个前端UI框架,它提供了丰富的UI组件、工具和功能,帮助开发人员快速构建现代化、响应式和交互式Web应用程序,特点包括:灵活轻量、模块化设计、丰富的组件、强大的工具和易于定制。它广泛应用于各种Web应用程序的开发中,包括管理系统、电商平台、内容管理系统、社交网络和移动端应用。

layui框架和vue框架的区别 layui框架和vue框架的区别 Apr 26, 2024 am 01:27 AM

layui和vue是前端框架,layui是一种轻量级的库,提供UI组件和工具;vue是一个全面的框架,提供UI组件、状态管理、数据绑定和路由等功能。layui基于模块化的架构,vue基于组件化的架构。layui拥有较小的生态系统,vue拥有庞大且活跃的生态系统。layui学习曲线较低,vue学习曲线较陡。layui适用于小型项目和快速开发UI组件,vue适用于大型项目和需要丰富功能的场景。

See all articles