LayUi介绍&前言

2023-11-16

   

目录

   1.什么是layui

2.layui、easyui与bootstrap的对比

  有趣的对比方式,嘿嘿嘿....  easyui=jquery+html4(用来做后台的管理界面) 半老徐娘  bootstrap=jquery+html5 美女 拜金  layui 清纯少女

      2.1 layui和bootstrap对比(这两个都属于UI渲染框架)

      2.2 layui和easyui对比

3.layui入门

       3.1 路径问题

4.如何扩展一个layui(自定义模块)    参考 模块规范

   3)设定扩展模块所在的目录,然后就可以在别的JS文件中使用

5.构建登录页面

        5.1 dao方法

        5.2 Action

        5.3 mvc搭建

6.主页搭建


1.什么是layui

   layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。其风格简约轻盈,而组件优雅丰盈,从源代码到使用方法的每一处细节都经过精心雕琢,非常适合网页界面的快速开发。layui 区别于那些基于    MVVM 底层的前端框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,它更多是面向后端开发者,你无需涉足前端各种工具,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。

   官方网站:https://www.layui.com/(已下线)
   参考地址:http://layui.org.cn/demo/index.html(已下线,非官网)

   由国人开发(作者贤心),16年出厂的框架,其主要提供了很多好看、方便的样式,并且基本拿来即用,和Bootstrap有些相似,但该框架有个极大的好处就是定义了很多前后端交互的样式接口,如分页表格,只需在前端配置好接口,后端则按照定义好的接口规则返回数据,即可完成页面的展示,极大减少了后端人员的开发成本。

2.layui、easyui与bootstrap的对比


  有趣的对比方式,嘿嘿嘿....
  easyui=jquery+html4(用来做后台的管理界面) 半老徐娘
  bootstrap=jquery+html5 美女 拜金
  layui 清纯少女

      2.1 layui和bootstrap对比(这两个都属于UI渲染框架)

          1.layui是国人开发的一套框架,2016年出来的,现在已更新到2.X版本了。比较新,轻量级,样式简单好看(目前官网已下架,开源了)
          2.bootstrap 相对来说是比较成熟的一个框架,现在已经更新到4.X版本。是一个很成熟的框架,这个大部分人一般都用过

          1)适用范围不一样

      
            1.layui 其实更偏向与后端开发人员使用,在服务端页面上有非常好的效果。
      
            2.适合做后台框架

            3.layui是提供给后端开发人员最好的ui框架,基于DOM驱动,在实现前端交互上比较麻烦,页面的增删改查都需要查询DOM元素。所以在不需要交互的时候,用layui还是不错的(说这句话的人,只能说明你对layui不了解)
             
            4.bootstrap 在前端响应式方面做得很好,PC端和移动端表现都不错。
      
            5.适合做网站
             
            6.如果是类似官网,且需要同时满足PC端和移动端效果,bootstrap 表现很好,但是如果是要交互的网站,比如商城之类,layui显然更好,前后端分离

          2)大小不一样
           
             1.layui 轻量级
             2.bootsrap 因为成熟,所以使用方便,但是同时也是因为成熟,就显得有些冗余

      2.2 layui和easyui对比

          1.easyui 是非开源的,有需要解决的问题的话,就只能等官方更新了
          2.layui是开源的,社区比较活跃,解决问题还是比较快的
          3.easyui诞生的早些,所以功能相对完善一些,很多功能都能是比较健全的
          4.layui就相对来说少一些了,不过,功能都是像官网说的,精雕细琢
          5.layui更符合现在的审美

3.layui入门

   将layui下载到了本地,那么可将其完整地放置到你的项目目录(或静态资源服务器),并在页面中分别引入:
   <!-- 引入 layui.css -->
   <link rel="stylesheet" href="xxx/layui.css">
   <!-- 引入 layui.js -->
   <script src="xxx/layui.js"></script> 

       3.1 路径问题

       1) 相对路径/绝对路径
       2) base标签

   入门案例:点击弹出框  

4.如何扩展一个layui(自定义模块)    参考 模块规范

   1)第一步:确认模块名,假设为:test.js文件放入项目任意目录下(注意:不用放入layui目录)

   2)编写test.js
  
   layui.define(function(exports){ //提示:模块也可以依赖其它模块,如:layui.define('layer', callback);
      var obj = {
         hello: function(str){
            alert('Hello '+ (str||'test'));
         }
      };
 
      //输出test接口
      exports('test', obj);
   });   

   3)设定扩展模块所在的目录,然后就可以在别的JS文件中使用

   layui.config({
      base: '/res/js/' //假设这是test.js所在的目录
   }).extend({ //设定模块别名
      test: 'test' //如果test.js是在根目录,也可以不用设定别名
   });
 
   //使用test
   layui.use('test', function(){
      var test = layui.test;
 
      test.hello('World!'); //弹出Hello World!
   });

   案例:
   1)弹出hello方法
   2)日期格式转换

5.构建登录页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="common/header.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" rev="stylesheet" href="${pageContext.request.contextPath}/static/css/iconfont.css" type="text/css" media="all">
<link rel="stylesheet" rev="stylesheet" href="${pageContext.request.contextPath}/static/css/login.css" type="text/css" media="all">
<style> body{color:#;}a{color:#;}a:hover{color:#;}.bg-black{background-color:#;}.tx-login-bg{background:url(static/images/bg.jpg) no-repeat 0 0;}</style>
</head>
  <body class="tx-login-bg">
        <div class="tx-login-box">
            <div class="login-avatar bg-black"><i class="iconfont icon-wode"></i></div>
				<ul class="tx-form-li row">
					<li class="col-24 col-m-24"><p><input type="text" id="username" placeholder="登录账号" class="tx-input"></p></li>
					<li class="col-24 col-m-24"><p><input type="password" id="password" placeholder="登录密码" class="tx-input"></p></li>
					<li class="col-24 col-m-24"><p class="tx-input-full"><button id="login" class="tx-btn tx-btn-big bg-black">登录</button></p></li>
					<li class="col-12 col-m-12"><p><a href="#" class="f-12 f-gray">新用户注册</a></p></li>
					<li class="col-12 col-m-12"><p class="ta-r"><a href="#" class="f-12 f-gray">忘记密码</a></p></li>
				</ul>
            </div>
            
            
<script>
layui.use(['layer', 'jquery'], function(){
  var layer = layui.layer
  ,form = layui.form
  ,$=layui.jquery;
  
  $("#login").click(function(){
	  $.ajax({
		  url:'${pageContext.request.contextPath}/user.action?methodName=login',
	 	  dataType:'json',
	 	  data:{
	 		 loginName:$("#username").val(),
	 		 pwd:$("#password").val()
	 	  },
	 	  method:'post',
	 	  success:function(data){
	 		  if(data){
	 			 layer.alert('恭喜'+data.name+'登录成功', {icon: 1});
	 		  }else{
	 			 layer.msg('登录失败', {icon: 5});
	 		  }
	 	  }
	  
	  });
	  
	  
	  
	  
	 
  });
  
 
});
</script> 
    </body>
</html>

        5.1 dao方法

package com.zking.dao;

import java.util.List;

import com.zking.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;

public class UserDao extends BaseDao<User> {
	
	public List<User> list(User user, PageBean pageBean) throws Exception {
		String sql="select *from t_oa_user where 1 = 1";
		return super.executeQuery(sql, User.class, pageBean);
	}

	
	public User login(User user) throws Exception {
		String sql="select *from t_oa_user where loginName = '"+user.getLoginName()+"' and pwd ='"+user.getPwd()+"' ";
		List<User> lst = super.executeQuery(sql, User.class, null);
		if(lst != null && lst.size() ==1) {
			return lst.get(0);
		}
		return null;
	}
}

        5.2 Action

package com.zking.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zking.dao.UserDao;
import com.zking.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.ResponseUtil;

public class UserAction extends ActionSupport implements ModelDriver<User> {

	private User user = new User();
	private UserDao usedDao = new UserDao();
	
	
	public void login(HttpServletRequest req, HttpServletResponse resp) {
		try {
			User u = usedDao.login(user);
			ResponseUtil.writeJson(resp, u);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	@Override
	public User getModel() {
		return user;
	}

}

        5.3 mvc搭建

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<action path="/blog" type="com.zking.web.BlogAction">
		<forward name="list" path="/blogList.jsp" redirect="false" />
		<forward name="toList" path="/blog.action?methodName=list"
			redirect="true" />
		<forward name="toEdit" path="/blogEdit.jsp" redirect="false" />
	</action>
	
	
		<action path="/user" type="com.zking.web.UserAction">
	</action>

<!-- 	<action path="/meetingInfo" type="com.zking.web.MeetingInfoAction"> -->
<!-- 		<forward name="list" path="/meetingInfoList.jsp" redirect="false" /> -->
<!-- 		<forward name="toList" path="/meetingInfo.action?methodName=list" -->
<!-- 			redirect="true" /> -->
<!-- 		<forward name="toEdit" path="/meetingInfoEdit.jsp" redirect="false" /> -->
<!-- 	</action> -->

<!-- 	<action path="/solrBlog" type="com.test.web.SolrBlogAction"> -->
<!-- 		<forward name="list" path="/solrBlogList.jsp" redirect="false" /> -->
<!-- 		<forward name="toList" path="/solrBlog.action?methodName=list" -->
<!-- 			redirect="true" /> -->
<!-- 		<forward name="toEdit" path="/solrBlogEdit.jsp" redirect="false" /> -->
<!-- 	</action> -->

	<action path="/studentBlog" type="com.test.web.StudentBlogAction">
		<forward name="list" path="/studentBlogList.jsp" redirect="false" />
		<forward name="toList" path="/studentBlog.action?methodName=list" redirect="true" />
		<forward name="toEdit" path="/studentBlogEdit.jsp" redirect="false" />
	</action>

	<action path="/solrBlog" type="com.xiaoli.web.SolrBlogAction">
		<forward name="list" path="/solrBlogList.jsp" redirect="false" />
		<forward name="toList" path="/solrBlog.action?methodName=list" redirect="true" />
		<forward name="toEdit" path="/solrBlogEdit.jsp" redirect="false" />
	</action>



</config>


6.主页搭建

   参考地址:http://layui.org.cn/demo/admin.html


   

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LayUi介绍&前言 的相关文章

随机推荐

  • 数字图像处理中一元函数f(x)的二阶导数=f(x+1)+f(x-1)-2f(x)的由来

    在 为什么说数字图像的一阶微分为f x 1 f x 介绍了数字图像处理中一元函数的一阶导数的由来 该一阶导数为 在该书中 同时定义了一元函数f x 其二阶导数的基本定义为 关于这个推导其中有点点小技巧 式3 6 1也可以表述为 f x f
  • C++基础——初始化列表

    目录 一 初始化列表 1 列表格式 情况1 成员变量中有const成员 但列表处成员不被初始化时 情况1 成员变量中有const成员 给缺省值时 情况1 成员变量中有const成员 列表处成员不仅初始化 还有缺省值 情况2 成员是自定义类型
  • WinCE 下 RAS 拨号连接的建立和拨号过程

    在 CE 下如果系统没有建立拨号网络 要实现上网功能时 就需要通过代码来实现建立拨号网络 拨号实现上网的过程 以下代码中的参数和拨号所用数值 都是电信 EVDO 的配置 如果换 GSM 或 WCDMA 时 请相应修改 cpp view pl
  • PHP学习笔记 Win平台下PHP开发环境的搭建

    Win平台下PHP开发环境的搭建 本文参考了PHP官方文档 http php net manual zh install windows iis7 php 写成 如果需要了解详细信息 请直接参考PHP官方文档 下载并配置PHP 下载PHP
  • 第十四届蓝桥杯模拟赛(第三期)试题与题解 C++

    目录 一 填空题 一 最小的十六进制 答案 2730 二 Excel的列 答案 BYT 三 相等日期 答案 70910 四 多少种取法 答案 189 五 最大连通分块 答案 148 二 编程题 一 哪一天 二 信号覆盖 三 清理水草 四 最
  • 关于我写了三万字博客后悔了好久这件事之第二个三万字GUI(swing)

    目录 简介 使用Swing的优势 Swing的特征 Swing基本组件的用法 Swing组件层次 AWT组件的Swing实现 简单了解swing JFrame 弹窗 标签 面板 按钮 3 6 列表 3 7 文本框 JTree TreeMod
  • java的静态与非静态 及其代码演示示例

    静态与非静态的概念 运行Java应用程序时 在实际的代码运行之前的一个步骤是加载类 具体点说 在Java SE 8的JVM中 需要先把类加载到Metaspace 如果类中有静态成员 加载类时会在heap中为其分配空间 此空间是属于类的 类中
  • colab 跑 deformable-detr 记录:

    GPUS PER NODE 1 tools run dist launch sh 1 configs r50 deformable detr sh 报错 cannot import name NewEmptyTensorOp from to
  • ChatGPT能够识别并纠正错误吗?

    ChatGPT在一定程度上可以识别和纠正错误 但其能力有限 以下是对ChatGPT识别和纠正错误能力的详细分析 1 基于模型训练的纠错 ChatGPT模型是通过大规模的训练数据进行训练的 这些训练数据通常是从互联网上收集的文本数据 在这个过
  • C++ 时间函数gmtime、gmtime_r、localtime、localtime_r

    测试环境 vmware 7 Redhat5 5 系统时间使用UTC 时区为上海 1 函数功能介绍 使用man gmtime或man localtime都可以的得到这几个函数的介绍 原型如下 struct tm gmtime const ti
  • JS特性

    JS是解释型语言 不需要提前预编译 JS是弱类型语言 在定义变量的时候不需要定义变量的类型 变量是松散类型 即可以用来保存任何类型的数据 JS没有块作用域 if for都是块 但有函数作用域 JS重复定义变量并不会报错 定义的新变量的值会覆
  • AQS原理 自己浅显理解

    http ifeve com java special troops aqs 这篇博客讲的很好 通篇看完收获不少 精简一下自己的收获 1 AQS是一个基于状态 state 的链表管理方式 reentracntlock这个锁是基于AQS实现的
  • shell-循环语句和case分支

    一 if 循环 if 条件 then 执行内容 elif then 执行内容 else 执行内容 fi 或者 if 条件 then 执行内容 else 执行内容 fi 例 chmod x 脚本名 给与执行权限 二 case 分支 case
  • 1-2、如何学习Linux

    1 2 如何学习Linux 版本说明 版本 作者 日期 备注 0 1 loon 2018 12 6 初稿 目录 文章目录 1 2 如何学习Linux 版本说明 目录 一 前言 二 如何学习Linux 三 最后 一 前言 注意 这里不是要教你
  • 一个人走的快,一群人才走的远

    有太多的技术文章来指引我们解决技术痛点问题 但很少有文字来帮助我们解答个人成长 职业发展 持续学习等思维意识层面的问题 07年计算机专业毕业后 抱着无限的迷茫踏上了漫漫职业生涯路 从菜鸟做起 一路走来也是跌跌撞撞 诚惶诚恐 很多时候都在想
  • Exception: Content is not allowed in prolog-搜集

    用webwork验证时老发生错误 提示Content is not allowed in prolog 由于是解析xml文件出错 找到相应的文件一看 发现开头有几行汉字说明忘注释掉了 我把它们注释掉 问题得到解决 由于以前没遇到这种问题 于
  • MRI是如何实现成像体素的空间定位的

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 磁共振的每一个信号都含有全层的信息 因此需要对磁共振信号进行空间定位编码 即频率编码和相位编码 接收线圈采集到的MR信号实际是带有空间编码信息的无线电波 属于模拟信号而非数
  • matlab 与 VC 混编函数参数传递<2>

    下面是这个例子用到的m代码 它定义了一个名为myadd2的函数 Copy to clipboard CODE function y z myadd2 a b dummy function just to demonstrate the id
  • vmware导入别人虚拟机

    https blog csdn net qq 43271194 article details 105855516 utm source app app version 4 21 1
  • LayUi介绍&前言

    目录 1 什么是layui 2 layui easyui与bootstrap的对比 有趣的对比方式 嘿嘿嘿 easyui jquery html4 用来做后台的管理界面 半老徐娘 bootstrap jquery html5 美女 拜金 l