GithubHelp home page GithubHelp logo

weberandphper / layui-admin Goto Github PK

View Code? Open in Web Editor NEW
417.0 16.0 125.0 7.47 MB

一个现成的 Layui+Vue的后台系统模板,开箱即用

License: MIT License

CSS 7.45% JavaScript 89.96% HTML 2.58%

layui-admin's Introduction

Layui-admin

一个现成的基于 Layui+Vue的后台系统模板,开箱即用(最近开源,将会长期维护,文档还在整理中)

注意:相较于vue的spa或者是后端模版,他最大的特点就是开发快,非常快。ui风格也非常统一。看过很多用vue的第三方ui框架做的后台,但是说实话最终呈现给用户的并不如ui本身一样美丽。这套的皮肤你可以自己定制,而且本省也很漂亮,很整洁。

前言

前后端小伙伴们对后台系统肯定都不陌生,市面上基于主流前端UI框架的后台模板一抓一大把。基于Bootstrap风格的,基于Vue的iView、Element。基于React的Ant Design等等。但是很多时候你想要的仅仅是一个现成的页面模板,一个能迅速帮你完成开发的框架而已,Layui-admin就是这样一个接近完成的后台系统模板,它已经帮你完成了从登录验证,记住密码,权限管理,字段校验,搜索查询,联动全屏,刷新,主题切换等一系列功能的后台模板。它最大的特定就是帮你完成了这类系统中常见的数据交互部分,你需要做的就是理解交互原理,对接接口,替换字段,刷新。哇!原来这么简单!(so cool !)。

注:因为众所周知的原因,本项目完全不支持ie9及ie9以下的浏览器,对于采用ie内核小于9的国产浏览器给出切换提示。首次加载采用极速模式。

说明

该项目是一个通用的后台系统模板框架,交互方式和代码复用性很高,基本上只要你理解了原理,会写一个页面,其他的自然不成问题。

技术栈

Layui 2 + Vue 2 + es5 + Router

特点

  • 整个前端页面原理基于iframe标签页实现,偏传统开发方式,没有纷杂的前端配置,能够做到上手即用,上手门槛低
  • 响应式框架,支持多端,提供常见主题,可自己定制(正在适配)
  • 封装了零碎小功能,可以更具需求增删改
  • 基础数据采用双向绑定,简单高效,常见交互方式demo完整,功能内容丰富
  • 浏览器不支持检测
  • 数据请求部分已经帮你写好,你要做的只是获取数据和简单校验
  • Layui-Admin基于Layui+vue,采用前后端完成分离的方式运行(JSON WEB TOKEN 认证)
  • 免费、开源

适用人群和项目

  • 中小型的后台系统
  • 服务器端开发人员
  • 时间紧,任务重,前端人数少,想尽快完成项目的小伙伴
  • 虽然采用了目前主流的方案,但实际效果并不理想

项目运行

git clone https://github.com/weberandphper/Layui-admin.git

修改common.js的接口配置文件

var baseUrl = window.baseUrl='http://192.168.1.138:8001';

设置WEB服务器站点(nginx,apache,iis,编辑器内置web服务器都可以)

浏览器访问 http:localhost/login.html

目标功能 (注:demo都是这类系统中最通用的功能模块,实际开发中根据需求自己改写)

  • 登录,记住账号密码 -- 完成
  • 功能菜单列表切换 -- 完成
  • 便捷菜单查询 -- 完成
  • 服务器时间,实时天气(已隐藏),主体皮肤切换 -- 完成
  • 个人信息,退出,消息提示,更新说明 -- 完成
  • 权限列表获取,功能菜单展开,收缩 -- 完成
  • 多页面切换,关闭,批量处理功能 -- 完成
  • 常见功能按钮(全屏,锁屏,刷新本页,二维码还有若干隐藏按钮) -- 完成

效果展示

查看demo请戳这里(请用chrome浏览器预览)

上图

登录

image

账户管理

image

公司列表

image

重置密码

image

屏幕锁

image

更换皮肤

image

菜单列表

image

列表

image

版本提示

image

运行程序

配置common.js接口地址和Layui模块入口

localhost/index.html

项目结构说明

.
├── build                                       // 项目主题,自定义模块
├── components                                  // 自定义组件
├── datas                                       // 模拟接口数据
├── module                                      // 业务模块划分(业务代码)
│   ├── account                              	// 账号模块
│   │   ├── account.html                        // 账号管理页面
│   │   └── role.html							// 角色管理页面
│   ├── count                              	    // 会员管理
│   │   ├── account.html                        // 会员列表
│   ├── drugstore                              	// 公司管理模块
│   │   ├── companylist.html                    // 公司列表
│   │   └── form.html							// 外部表单
│   ├── finance                              	// 财务管理模块
│   │   ├── tradedetail.html                    // 交易明细
│   ├── member                              	// 会员管理模块
│   │   ├── memberlist.html                     // 会员列表
│   ├── other                              	    // 其他模块
│   │   ├── resetpassword.html                  // 重置密码
│   ├── plugins                                 // 引用的插件或者资源库存(Layui+vue+echarts)
│   ├── resources                               // 静态资源
│   ├── About.txt                               // 更新说明
│   ├── common.css                              // 公共样式
│   ├── common.js                               // 公共函数,接口和Layui模块配置
│   ├── favicon.ico                             // ico图标
│   ├── index.html                              // 首页
│   ├── login.html                              // 登录页面
│   ├── main.html                               // 首页统计页面
│   ├── manifest.appcache                       // 应用缓存配置
│   ├── README.md                               // README.md
│   ├── styles.css                              // 首页样式


注意点

如果你想用这套的话,下面的就要好好看了。

由于数据请求全靠ajax,所以这块我已经提前封装好了,函数节流,防抖,还有请求超时或失败提示,token失效跳转等已经写好了,代码很简单,注释也很全面,所以和请求相关的尽量使用此封装,不满足需求的可在此基础上封装,模块位置 /build/js/ajaxmod.js

后端接口

后端接口格式


{
	"data": {
		"enums": {},
	},
	"success": true,
	"message": "",
	"code": 200
}

为了..... 等一系列原因,请尽量保证接口为restful,每个请求验证token。失效需要重新登录

后端特定code的定义

此code非http状态码,即便请求失败,但是code可能依然是200,此处我就不详细解释了。但是一般后端会将约定好的特定code返回表示特定的含义。比如后端小哥告诉我 code == 1001 代表 登录验证失效。所以我在ajax封装中对1001进行了特定的判断,然后 layer.msg('登录验证失效,即将跳转到登录页面');

分页接口

注意:后台系统中分页算是非常重要的一个功能了,其中包含了查询。Layui对分页的封装是我用过目前最方便和好用的。如果你是从后端分页过来的很容易get到点。当然现在即便分页放后端,后端框架也基本上都集成了。分页放前端,后端写的更少。

请尽量保证后端分页接口数据格式为:

{
	"data": [{
		"id": 20180612,
		"name": "anspray"
	}],
	"count": 2061,
	"success": true,
	"message": "",
	"code": 200
}

如果后端接口格式或者字段不匹配,请使用table.render(...response: {})进行转换

前端

checkbox bug

vue 绑定数据在遇到select和checkbox有问题

关键代码释解

页面模块如何划分

本项目是后台系统,所以主要开发任务在于功能页面的开发,前端module内的模块划分按照业务模块(原型)或者后端模块划分即可,具体命名可以和后端统一下。划分和单页应用开发的划分是类似的。

前端路由部分

该后台模板支持前端路由,采用url hash 原理,比如即 http://localhost/index.html#adduser, iframe 就会去请求module/user/adduser.html 页面完成加载。路由地址在build/js/routermod.js下,路由模块加载位于common.js下,在index.html完成对权限列表的添加。

编写原则

为什么采用Layui为主体呢,就是应为Layui提供一致的UI风格(很适合做这种后台系统),提供众多组件和交互方案,采用这套事倍功半。vue作为当下热门的mvvm框架,其实很多功能和Layui本身是冲突的。同一个功能或者数据操作Layui和Vue都可以完成。如何选择呢? 答:数据交互部分,包括数据的请求,发送,事件的触发常见函数的调用优秀采用Layui提供的,对于数据的操作,数据的绑定,优先用Vue,两者在操作dom和数据上尽量做到不冲突。让二者都发挥各自的优点。

吐槽

到目前为止,后台系统开发了很多个,从前端嵌套在后端页面中,到后端模板输出,到现在的前后端完全分离。每种方式都有自己的优点和特定,但是就后台系统而言,采用前后端分离应该最佳的开发方式了。

Layui 的暂存bug(老旧版本可能会有这个问题)

Layui的form.on在数据提交的时候,checkbox的序列化存在问题,会在[]中加入index,造成后端接受数据错误。目前在序列化表单前解决

Layui配合vue使用中出现的问题

Layui对原生表单的封装在和vue绑定数据的时候会有问题。

存在的问题

iframe中相同资源的加载

index.html和子iframe中的相同静态资源浏览器是怎么处理的呢?

你会发现假如你在父页面中引用了common.css,在子页面中的common.css是不是直接用缓存了呢?实际上iframe的所有资源浏览器是会重新请求一遍。这点不同于子页面是ajax获取渲染的方式。父页面和子页面(iframe)的数据传递就不要用url传值了,这个在序列化复杂对象时会有问题,推荐直接layero.find("iframe")[0].contentWindow.vm.setdata(data)这种,细节见代码,子对父的传值 parent.closeandrefresh(),加上双向数据绑定开发会很方便,contentWindow和parent请自行查阅文档

关于缓存

由于该后台模板不是按照单页面那样开发的,所以没有办法对静态资源部分进行单独处理。但在我实际的开发中页面缓存又很烦人,我这边采用的方式是配置应用缓存,appcache的配置和使用方法请自行查阅,web服务器端的meta头的设置不要忘了,不管是IIS还是apache还是nginx思路都是一样的。

多端适配

目前在多端的显示和提示还有很多问题,正在改进。

目标

我的目标是想编写一个相对完整的后台系统模板,它的交互方式成熟,页面风格统一,页面整齐。定制化程度相对较高。无论是前端还是后端都能够快速上手,帮助你又好又快的完成产品或者项目。

最后

由于我不太善于表达,所以文本都很生硬,请大家见谅

由于水平和时间有限,所以难免会有错误,欢迎lssues提出,我会在线解决。

如果喜欢一定要star呀 !

layui-admin's People

Contributors

weberandphper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

layui-admin's Issues

表格数据实时刷新

一个小小的建议

像后台管理系统这种的,数据表格刷新的实时性要求没有那么高,可以不用每次刷新,这样用户在第一个表格中操作完了,再去操作其他地方,回来还是在原来操作的位置,比较方便。

逗号表达式

为什么用这么多逗号表达式啊,有什么特殊的意义吗?

关于锁屏,和小菜单

锁屏的那一行小菜单是怎么弄的。我在开发者工具里面发现是在container里面,但是里面并没有写东西。不知道是怎么生成的,相关的解锁代码未找到。求指教,多谢了!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.