前言

首先会做这次记录,也是因为自己也是第一次去接触这个框架,以前总是听说,并没有去用过。这次出于实习的原因,去学习了一下Layui这个“面向后端开发者的框架”。其次,此篇记录仅供参考,毕竟我也不是开发者,所以不能保证文章引用的内容以及自己的理解是否正确,请自行决断一些内容的正确性。

前段时间看到一个不错的博客是个人写的关于前端面试的还是比较全面基础的(虽然个人是后端,但是如果有学前端的看到这篇随笔,可以当做参考一下)

在这里贴出来:

GitHub】:https://github.com/WindrunnerMax/EveryDay

博客https://blog.touchczy.top/#/


Layui

官方文档https://www.layui.com/doc/

官方示例https://www.layui.com/demo/

Giteehttps://gitee.com/sentsin/layui

GitHubhttps://github.com/sentsin/layui

简介

做总结的时候才发现其实自己要总结的点还是比较少的,因为官方文档已经说的很详细了,所以在此我想说的是,目前个人用的多的还是像组件这类东西,毕竟现在基本都是封装之后的东西,而且这些封装过后的东西也是用的比较多比较爽的,还有就是Gitee上有一个开源模板"Layuimini",个人感觉作为后台BOSS的模板还是挺不错的,毕竟大部分人觉得layui比amazeui稍微好看一点点(不过还是出于真心,各有各的好,有的人也觉得amazeui更好看一点,至于官网地址自己可以搜搜看,我放文章后面了)。

像框架、工具这类的东西,感觉直接看官网文档是来的较快而且比较权威的。

【开源仓库】Layuiminihttps://gitee.com/zhongshaofa/layuimini


内容摘抄于官方文档中——入门指南篇

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

layui 定义为「经典模块化」,并非是自吹她自身有多优秀,而是有意避开当下 JS 社区的主流方案,试图以尽可能简单的方式去诠释高效!她的所谓经典,是在于对返璞归真的执念,她以当前浏览器普通认可的方式去组织模块!我们认为,这恰是符合当下国内绝大多数程序员从旧时代过渡到未来新标准的绝佳指引。所以 layui 本身也并不是完全遵循于 AMD 时代,准确地说,她试图建立自己的模式

//layui 模块的定义(新 js 文件)
layui.define([mods], function(exports){ //…… exports('mod', api);
}); //layui 模块的使用
layui.use(['mod1', 'mod2'], function(args){
var mod = layui.mod1; //…… });

没错,她具备早前 AMD 的影子,又并非受限于 CommonJS 的那些条条框框,layui 认为这种轻量的组织方式,比WebPack更符合绝大多数场景。所以她坚持采用经典模块化,也正是能让人避开工具的复杂配置,回归简单,安静高效地编织原生态的 HTML/CSS/JS。

但是 layui 又并非是 RequireJS 那样的模块加载器,而是一款 UI 解决方案,与 BootStrap 的不同又在于:layui 糅合了自身对经典模块化的理解。这使得你可以在 layui 组织的框架之内,以更具可维护性的代码、去更好的编织丰富的用户界面


JavaScript模块化开发

早期的Javascript是作为浏览器的脚本语言,使用标签直接引入,没有所谓的模块化。也就是说如果我们需要一个js文件,我们就加一个标签,把需要的js引入进来。这种方式的特点在于:简单粗暴。

但是当项目越来越大,依赖越来越多时可能就会出现问题,比如逻辑越来越混乱,页面也越复杂,然后可维护性就变差了,除此之外还存在全局变量暴露、文件的引入顺序的问题。比如说一个文件引入另一个文件,另一个文件又依赖另一个文件,那么这三个加载数据就会很重要,如果第一个没有加载完,那么接下来就会出错。

实际上,在JavaScript的发展历史上,第一个真正模块化的是nodejs,nodejs就是使用了我们其中的一个模块化标准的规范,它就是common js。

有了这个模块化的概念后,便有了node,node的文件管理都是基于模块化的;我们可以从另一个角度来看,如果JavaScript想要进军服务端,在服务端没有模块化这是一个灾难,因此common js社区制定了一个commonjs规范,也就是模块化的规范;有了这个规范之后,node就出现了。

JavaScript引入模块化解决了哪些问题:

避免了全局污染

模块复用,提高了开发效率和协作

模块功能单一职能方便维护

解决了文件依赖顺序

模块化的标准(有三个):

CommonJs

AMD - 异步模块

CMD - 通用模块

AMD (异步模块定义Asynchronous Module Definition)格式的最终目的是提供一个当前开发者能使用的模块化Javascript方案。它出自于Dojo用XHR+eval的实践经验,这种格式的支持者想在以后的项目中避免忍受过去的这些弱点

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。由于不是JavaScript原生支持,使用AMD规范进行页面开发需要用到对应的库函数,也就是大名鼎鼎RequireJS,实际上AMD 是 RequireJS 在推广过程中对模块定义的规范化的产出

它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。

RequireJS主要解决两个问题

多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器

js加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应时间越长

CommonJS模块建议指定一个简单的用于声明模块服务器端的API,并且不像AMD那样尝试去广泛的操心诸如io,文件系统,约定以及更多的一揽子问题。

这种形式为CommonJS所建议--它是一个把目标定在设计,原型化和标准化Javascript API的自愿者工作组。迄今为止,他们已经在模块和包方面做出了批复标准的尝试

根据CommonJS规范:

1.一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性。

2.输出模块变量的最好方法是使用module.exports对象。

3.加载模块使用require方法,该方法读取一个文件并执行,返回文件内部的module.exports对象

CMD 即Common Module Definition通用模块定义,CMD规范是国内发展出来的,就像AMD有个requireJS,CMD有个浏览器的实现SeaJS,SeaJS要解决的问题和requireJS一样,只不过在模块定义方式和模块加载(可以说运行、解析)时机上有所不同

最后可参考这些文章(仔细甄别内容正确性,因为我也是做了个参考,并未保证这些文章百分百正确):

前端模块化


谈谈我的理解-组件化/模块化

对前端工程化、模块化、组件化开发的理解


前端框架官方文档

Vue.js

https://vuejs.bootcss.com/guide/
https://cn.vuejs.org/

ElementUI

https://element-plus.gitee.io/#/zh-CN

Layui

https://www.layui.com/

妹子UI(amazeui)

http://amazeui.shopxo.net/

Semantic UI

https://semantic-ui.com/

EasyUI

https://www.jeasyui.net/

BootStrap

https://www.bootcss.com/

Bootstrap可视化布局

https://www.bootcss.com/p/layoutit/

Layui引起的对前端的一次记录的更多相关文章

  1. html中layui+jfinal模板实现前端搜索功能

    <input type="text" id="campus" class="layui-input" onkeyup="ck ...

  2. layui上传文件前端报404,实际文件已经上传成功

    原因:上传回调的方法接收的参数应该是json格式的,之前返回的是String,所以一直走异常的方法 第一种 在后台上加上@ResponseBody 第二种 @ResponseBody @Request ...

  3. WEB前端学习代码片段记录

    1.JS设计模式片段 Function.prototype.addMethod = function (name,fn) { this.prototype[name] = fn; return thi ...

  4. DWZ前端框架使用问题记录

    心得体验:DWZ依赖特定的HTML结构,所以一定要注意项目中的HTML结构,多用firebug查看,还有如果使用一些组件的时候出现问题,可以查看下返回JSON格式是否符合组件规定的JSON格式,很多都 ...

  5. Web前端开发的一点记录

    工欲善其事必先利其器,开发工具选择Sublime Text 简称(ST) 本文所说的均在Windows NT 环境下使用的ST3运行. ST的Package Control安装方法: 1. 直接输入p ...

  6. Antd前端开发采坑记录

    背景 基于页面友好,界面整洁美观:基于Antd框架开发虾能平台 选型 基于Antd-admin工程架构,进行开发:基于Antd+React+Umj 采坑记录 按照Html方式天机onClick方法,每 ...

  7. android下前端开发诡异bug记录&解决方法

    1.border-radius有bug,围不住background 描述:设置了border-radius后,背景色依然会从圆角里冒出来 解决方法:在设置了border-radius的容器加上back ...

  8. 前端nginx后端tomcat记录真实ip

    修改nginx主配置文件:/usr/local/nginx/conf/nginx.conf proxy_set_header Host $host; proxy_set_header X-Real-I ...

  9. 网页前端之JavaScript学习记录总结篇

    咔咔咔咔咔咔扩扩扩扩扩扩扩扩扩扩

随机推荐

  1. 关于 .NET 与 JAVA 在 JIT 编译上的一些差异

    最近因为公司的一些原因,我也开始学习一些 JAVA 的知识.虽然我一直是以 .NET 语言为主的程序员,但是我并不排斥任何其它语言.在此并不讨论 JAVA .NET 的好坏,仅仅是对 .NET 跟 J ...

  2. javascript里面的document.getElementById

    一.getElementById:获取对 ID 标签属性为指定值的第一个对象的引用,它有 value 和 length 等属性 1.获取当前页面的值input标签值:var attr1=documen ...

  3. GetOverlappedResult 函数

    BOOL GetOverlappedResult( HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferre ...

  4. 解决org.hibernate.LazyInitializationException的正确姿势

    项目运行过程中,一个报错信息,报错信息如下: org.hibernate.LazyInitializationException: could not initialize proxy [xxx.do ...

  5. spring 读取account-service中的值

    account-service //main--resources--account-service.properties 文件位置 email.protocol=smtps email.host=s ...

  6. C# JSON学习之序列化与反序列化

    在我的个人计划中,学习制作c#下的曲线平台属于下半年的重点.关于前后端的数据传递-json数据的学习很有必要,通过一个例子来加深自己的理解. 新建一个console控制台程序,通过导入NewstonS ...

  7. 自学linux——10.Linux的网络知识

    linux的网络知识 一.网络相关概述 1.网络的分类 局域网(LAN):在几百米到十几公里内办公楼群或校园内的计算机相互连接所构成的计算机网络 城域网(MAN):覆盖相距不远的几栋办公楼,也可以覆盖 ...

  8. charles抓取https设置

    第一步:打开charles,查看电脑ip,手机设置代理(需要手机和电脑在同一网络) 手机下载证书不要用自带的下,会失败 1.查看电脑ip 2.手机设置代理,修改网络,保存 3.手机访问"看图 ...

  9. Python设计模式: 最佳的"策略"模式实践代码

    Python设计模式: 最佳的"策略"模式实践代码 今天抽空看了下流畅的python,发现里面介绍了不少python自带的库的使用实例,用起来非常的优雅. 平时用Python来写爬 ...

  10. BUUCTF[强网杯 2019]随便注(堆叠注入)

    记一道堆叠注入的题.也是刷BUU的第一道题. ?inject=1' 报错 ?inject=1'--+ //正常 存在注入的.正常查询字段数,字段数为2.在联合查询的时候给了新提示 ?inject=0' ...