Home > Article > Web Front-end > Detailed analysis of layui's project optimization and non-intrusive optimization
This article brings you a detailed analysis of layui's project optimization and non-intrusive optimization. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
Practical optimization based on layui, non-invasive optimization form date open-iframe data-table upload verify-form laytpl laypage laytree tableTree
# layui-update
## Practical optimization based on layui, non-intrusive optimization
[1. Form element optimization](https ://bable2000.gitee.io/layui-update/view-demo/imit-form.html)
1. Form elements do not need to be wrapped in layui-form
2. Dynamically added Form elements do not need to be rendered with form.render()
3. There is no JS setting for the time control, min max is dynamically set, and the start and end times are input separately
5. [Verification of independent form (no need to trigger submission, no need to set filters)](https://bable2000.gitee.io/layui-update/view-demo/verify-form.html)
6 , Add drop-down button group, search selection box (free type)
2. [Simplified fixed form](https://bable2000.gitee .io/layui-update/view-demo/fixed-table.html) (fixed table header, fixed first column, fixed last column, fixed table tail)
3. [Data table](https://bable2000.gitee.io/layui-update/view-demo/data-table.html)
2. Customize the form template (you can modify it yourself)
3. Pagination and tables are separated (to facilitate processing after data request and before display)
5. Added the function of manual 'total' at the end of the table
[Data table.png](http://oyh4crb8q.bkt.clouddn .com/data-table.png)
## 4. [Modify laytpl template writing into vue mode](https://bable2000.gitee.io/layui-update/ view-demo/laytpl.html), laytpl complex template is too difficult to write
5. Optimize layer (according to project requirements)
``` 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. [Add the opening position and traceability of iframe pop-up windows](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="$('.box').addClass('box-1')">改变1</button> <button type="button" onclick="document.getElementById('d1').setAttribute('attr-1','x1')">改变2</button> <button type="button" onclick="document.getElementById('d1').innerHTML='HTML'">改变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 = 'data发生了改变↓' + '</br>' + '新值:' + JSON.stringify(x) + '</br>' + '旧值:' + JSON.stringify(y) + '</br>' + 'key:' + JSON.stringify(z); layer.alert(c); }); $.watchDom(document.getElementById('d1'), function() { layer.alert('box改变'); }); </script> ```
1. reader.readAsDataURL(file)->window.URL.createObjectURL(file) =>Asynchronous file preview changed to Synchronization (same browser support)
\* [Quote the code of Stream and then 'optimize'](https://fly.layui.com/jie/31616/)
7. Recursive reference to external files``` <imports href="../template/imports-1.tpl">同步引入失败替换内容(引入片段中允许有script)</imports> <imports href="../template/imports-1.tpl" async>异步引入失败替换内容</imports> ```8. js introduces external files
Based on layui architecture/**layui-v2.2.6 MIT License By https://www.layui.com*/
# Installation tutorial
Based on layui architecturelayui The first version was released in the golden autumn of 2016. It is different from those UIs based on the bottom layer of MVVM. Framework, however, does not go against the grain, but believes in the way of returning to nature. To be precise, it is more tailor-made for server-side programmers. You do not need to get involved in the complex configuration of various front-end tools. You only need to face the browser itself, and all the elements and interactions you need can be found at your fingertips.
###You need to introduce:######``` <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> ```###Related recommendations:#########JavaScript Project Optimization Summary############## #How to use gulp to automatically optimize requireJS projects###############WEB project optimization skills (must know)######
The above is the detailed content of Detailed analysis of layui's project optimization and non-intrusive optimization. For more information, please follow other related articles on the PHP Chinese website!