本篇文章给大家带来的内容是关于layui的项目优化以及无侵入优化的详细解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
基于layui的实战优化,无侵入优化 form date open-iframe data-table upload verify-form laytpl laypage laytree tableTree
# 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="$('.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> ```
###### 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 + 'imit.js'); //同步阻塞引入js requires(jsBase + 'imit.js', true); //异步引入js requires(jsBase + 'imit.js', function(){/*加载成功回调*/}); //异步引入js var req1=requires(jsBase + "tpl.js", true); req1.then(function(){/*promise式请求*/}); "请求css" requires('css|style1.css') //异步请求style1.css "请求html,html#,tpl,ftl" requires('text|file.tpl', function(html) {/*以文本形式引入file.tpl,剔除了<html><head><body>标签,*/}) requires('text|file.tpl#x1', function(x1) {/*引入file.tpl,并获取x1锚点内容*/}) requires('text|file.tpl#y1', 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> ```
相关推荐:
以上是layui的项目优化以及无侵入优化的详细解析的详细内容。更多信息请关注PHP中文网其他相关文章!

Python和JavaScript的主要区别在于类型系统和应用场景。1.Python使用动态类型,适合科学计算和数据分析。2.JavaScript采用弱类型,广泛用于前端和全栈开发。两者在异步编程和性能优化上各有优势,选择时应根据项目需求决定。

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver Mac版
视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

WebStorm Mac版
好用的JavaScript开发工具