框架 订阅
框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。框架这个广泛的定义使用的十分流行,尤其在软件概念。框架也能用于机械结构。 展开全文
框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。框架这个广泛的定义使用的十分流行,尤其在软件概念。框架也能用于机械结构。
信息
注    音
ㄎㄨㄤˋ ㄐㄧㄚˋ
拼    音
kuàng jià
英    译
Framework
释    义
联结而成的结构
中文名
框架
应用领域
软件、机械结构等
框架释义
1、释义:(1)建筑工程中,由梁、柱等联结而成的结构;(2)比喻事物的组织、结构。2、土木工程中,由梁、柱等构件刚性连结而成的结构体系。3、比喻事物的组织、结构:这部长篇小说已经有了一个大致的框架。
收起全文
精华内容
下载资源
问答
  • 框架
    千次阅读
    2022-01-01 22:15:22

    Bootstrap

    首先说 Bootstrap,估计你也猜到会先说或者一定会有这个( 呵呵了 ),这是说明它的强大之处,拥有框架一壁江山的势气。自己刚入道的时候本着代码任何一个字母都得自己敲出来挡我者废的决心,来让自己成长。结果受到周围各种基友的引诱开始了 Bootstrap 旅程。本人虽然是个设计+前端的万里有一的人才,但是老天只让我会用 PS 和各种设计工具却不给我跟设计妹子一样的审美,所以这也是我最初选择 Bootstrap 的原因之一,它让我做出来的东西好歹能在妹子面前装个逼,不过时间长了难免觉得 Bootstrap 美的让人烦躁, 但好在它的每个版本都会有很大的改变,不会让人觉得自己做的网站会跟很多网站撞脸。Bootstrap 的用法及其简单( 这也可能就是 Bootstrap 作者阅攻城士无数,了解他们痛的结果 ),以至于是个小前端都可以快速上手,几乎没什么学习成本。

    官网:Bootstrap · The most popular HTML, CSS, and JS library in the world.

    Github:https://github.com/twbs/bootstrap/

    作者:Mark Otto 和Jacob Thornton Star:93,112

    总结:Bootstrap 最大的优势就是它非常流行,流行就代表你有问题就有很多人帮你解决问题,就代表装逼它就是利器,还有就是界面比较和谐,容易上手,关注它的童鞋应该发现最新 V4 版也开始支持 FlexBox 布局,这是非常好的升级体验。 劣势是 class 命名不够语义化,并且各种缩写,以至于我离了文档就是个菜,最近开始整混合 APP,选框架的时候首选就是它,但之前搞 PC 一直没注意,后来搞混合右键属性看它的时候,瞬间一阵凉风袭来,Bootstrap 好小,小到我只好选择别的框架。

    AUI

    第三个是最近刚起来的AUI,虽然作者声称是专为APICloud开发者设计的一套UI框架,但实际它还是解决了很多移动前端开发的普遍问题,是主要面向混合开发的 CSS 框架。看起来作者比较猖狂,各种高级 CSS3 遍地使用,这让我也不得不去查查这些个 CSS3 的兼容性。不负众望果然选的都是兼容不错的属性,哈哈了一顿激动从前辈手上大胆认识了几个好东西,并且框架还提供了聊天界面、计数列表等组件,解决了很多复杂的让我骂娘的布局,现在可以直接拿走就用。

    Github:https://github.com/liulangnan/aui

    官网:auicss.com

    作者:流浪男 Star:92

    总结:这个框架对我来说有个优点就是纯 CSS 框架,自己以前也就用过 Pure,自己有点 JS 能力,如果不是复杂的效果,找个纯 CSS 框架自己随便改改就可以,而现在 CSS3 也已经能够做到动画,效率、质量、高效全兼顾,所以还是选择了这种 CSS 框架。有一点觉得不满的是这框架的文档真的好那什么,说好的高大上呢。

    Amaze UI

    第二个介绍的是妹子UI,最初使用它是因为本尊遇到了一个爱纠结细节设计士,有一次她跟我的字体较上真了,结果一句顶万句的 BOOS 夸了她,我只好根据她的想法去解决,结果最后找到了Amaze UI 框架( 我不介意你叫我懒淫 ),按照官方的话说就是 "基于社区开源项目构建的一个跨屏前端框架,以移动优先,从小屏到大屏,最终实现所有屏幕适配,适应移动互联潮流" 。但其实我就是看中它能解决国内浏览器存在的跨屏适配和兼容性问题。

    官网:http://amazeui.org/

    Github:https://github.com/amazeui/amazeui

    所属公司:云适配 Star:6710

    总结:Amaze UI 总的来说就是加入更多符合中国市场特性的元素,框架对跨屏、适配都做了的比较好的处理并且准备一了一系列的常用的网页组件,为减少搞兼容、适配各种敲键盘的加班狗们的工作时间做了不小的贡献。,框架还对中文排版优化,兼容中国本土主流浏览器、轻量化,不仅适用于桌面端,还更更适合移动端、包含一些封装好的Widgets。不过自也就我感觉 Amaze UI 文档是否有点太那什么了,比如 “人们不会在乎jQuery的那点流量。”,说实的在这真没啥,不过我从来不会说出来( 哈哈 ),代码和设计上感觉没太多突出的点。

    H UI

    1. 自由下载H-ui前端框架或提供下载H-ui前端框架;
    2. 完全免费的使用H-ui前端框架来开发自己的个人网站及商业站点。
    3. 您可以无任何限制的创建自己的风格。

    官网:http://h-ui.net/

    Github:h-ui: h-ui前端框架

    作者:郭俊辉

    总结:架起设计与后端的桥梁   好用就是了
              轻量级前端框架,简单免费,兼容性好,服务中国网站。

    Frozen UI

    第三个是Frozen UI,有段时间看到 QQ 瞬间高大上了,后来四处打听,原来 QQ 客服端也用了 HTML 混合开发,其中QQ会员前端就是用的 Frozen UI,并且这套框架开源,欣喜若狂耐不住心里的寂寞直接上手三下五除二试了一遍就开始试用,初体验的就是基础样式效果简单色调清爽,有个比较活跃的社区所以组件什么的也比较丰富。

    Github:https://github.com/frozenui/frozenui

    官网:http://frozenui.github.io/

    作者: QQVIP FD Team Star:1,067

    总结:如果拿 Frozen UI 配合一些如 APICloud 用来做混合 APP 感觉就太酷了,或者原生的火鸡们拿去嵌套在应用中做前端开发,并且这个框架对 android 2.3 +、ios 4.0 + 做了兼容,或者拿来做 Web app 也是极好的选择,不过要是放在微信里比这更合适的 WeUI 框架更是首选了,劣势的话从 UI 层面就可以看到了,谁让它是出生在QQ会员前端的呢。

    WeUIi

    第四个是WeUI和同 FrozenUI都属于 差不多的 WeUi了,也是一个比较专一的框架,WeUI应该说比FrozenUI前者更专一,话说连个官网都不搞,所有答疑都在 gitHub Issues 解决了,这个框架极其简单,体积当然就不用说了,模块也就 7 个左右,不过体量虽然小做的却不错,口碑看 star 就够了,框架从 16/1/23 发版至今 github star 超过 7K,不过也不排除用户没地方发泄所以都跑到 git 上来,哈哈。

    Github:https://github.com/weui/weui

    DEMO:http://weui.github.io/weui/

    Star:7,129

    总结:看完微信设计团队设计的这套 DEMO,二话不说如果要做微信公众,这个二话不说必然是首选了。框架不好的地方简而言之就是框架本身应该就没考虑过让用户用到非微信的场景之下。

    SUI

    “SUI 是一套基于bootstrap开发的前端组件库,同时它她也是一套设计规范。通过SUI,可以非常方便的设计和实现精美的页面”。 果然还是直接引用官方给的枯燥无味广告要节省自己的脑细胞( 囧… ),当然了就像广告说的,如果你之前用过 Bootstrap, 那么可以轻松转向 SUI,这可能就是淘宝给前端屌丝们的福利了。。 

    Github:https://github.com/sdc-alibaba/sui

    官网:http://sui.taobao.org/sui/docs/index.html

    Star:120

    AUI

    第六个是最近刚起来的最近刚起来的 AUI,虽然作者声称是专为APICloud开发者设计的一套UI框架,但实际它还是解决了很多移动前端开发的普遍问题,是它主要面向混合开发的 CSS 框架。,所以看起来作者比较猖狂,各种高级 CSS3 遍地使用,这也使得我不得不去查查这些个 CSS3 的兼容性。不负众望果然选的都是兼容不错的属性,哈哈了一顿激动从前辈手上大胆认识了几个好东西,并且框架还提供了聊天界面、计数列表等组件,解决了很多复杂的让我骂娘的布局,现在可以直接拿走就用。

    Github:https://github.com/liulangnan/aui

    官网:auicss.com

    作者:流浪男 Star:92

    总结:这个框架对我来说有个优点就是纯 CSS 框架,自己以前也就用过 Pure,自己有点 js 能力,如果不是复杂的效果自己找个纯 CSS 框架自己随便改改就能达到效果,而现在 CSS3 也已经能够做到各种动画,效率、质量、高效各种一顿考虑所以还是选择了这种 CSS 框架。而一直觉得不满的是这框架的文档真的好那什么,说好的高大上呢。

    MUI

    曾经一直使用 Android 系统的我,后来见到 IOS,果断移情别恋了,不知道为什么苹果每次调整系统我都特别喜欢,后来一段时间因为缺设计我专门模仿 IOS 系统做 UI,但始终不能够做到很好,无意间就发现了 MUI 这个框架,这个框架给我的吸引之处就是它的 UI 是以 IOS 为主体设计的,当然它也补充了android特有UI样式。并且MUI官方声称用来开发深入以后发现拿它做 APP 还能够提高用户使用流畅度,然后便试着更深入的了解和使用一段时间。

    官网:MUI-最接近原生APP体验的高性能前端框架

    Github:https://github.com/dcloudio/mui

    Star:2,450

    总结:就像之前说的这个框架是以两大系统为参照来封装UI组件,框架自身还有一个较为活跃的社区,不太好的地方这也是我特别关注的一点,关于开发应用的流畅度,我当然知道这是 H5 目前的劣势,但是看到官网给的描述,还是抱着期待的心理试试看能否提升,然而它其实还是需要是借助 Webview来提升,而不是框架本身。

    Semantic UI

    倒数第三个是 Semantic UI,接触这个框架还是因为 Bootstrap,Semantic UI 刚上线 github 就受到大量开发者的关注,以至于很多人拿它俩对比各种挑刺各种夸,是好是坏不能单凭别人三句四句就抬起手指开始赞,用了以后感觉 UI 上跟 Bootstrap 没太多的区别,不过代码命名规范上却相差甚大,本人认为 Semantic UI 是不是就想做的不一样,它的命名全是采用复合的方式,类名特别的离散,用的时候你得很小心自己扩展或者新增的 class 命名与它的类名冲突。

    官网:http://www.semantic-ui.cn/

    Github:https://github.com/semantic-org/semantic-ui/

     Foundation

    Foundation 算是框架界的元老啦,都说框架去的早,而这个框架一直到现在依然这么的热门,如果你比较介意 Bootstrap 开发撞脸的尴尬事情,那么你可以考虑使用 Foundation 。即使你使用预定义的 UI 元素, 也不会与其他网站太像,就像官方说的给开发者更灵活的框架体验。

    官网:The most advanced responsive front-end framework in the world. | Foundation

    Github:https://github.com/zurb/foundation-sites

    Star:22,736

    UiKit

    UIkit是YOOtheme团队开发的,在许多WordPress主题中都有应用(也就是如果你是个 WordPress 爱好者,那么这个框架应该比较适合深究),并且框架能够通过GUI编辑器和手动编辑,所以它提供了一个灵活、强大的自定义机制。框架借助LESS、jQuery、normalize.css及FontAwesome开源项目的独有特点,整合成了这么一款轻量级、模块化的前端框架。

    官网:UIkit
    Github:https://github.com/uikit/uikit
    作者:YOOtheme Star:6,372

    Pure

    终于最后一个了,我和你一样好开森 (~ ̄▽ ̄)~),这个框架是我在做管理系统时接触的,选择使用也是因为框架小巧,并且是纯 CSS,没有太多的牵扯,好用来与其他框架快速结合使用。

    官网:http://purecss.io/

    Github:https://github.com/yahoo/pure/

    更多相关内容
  • Android框架揭秘.pdf

    千次下载 热门讨论 2015-06-19 15:32:26
    《Android框架揭秘》通过对Android系统源代码的分析,主要介绍Android框架的初始化过程及主要组件的工作原理。作者直接分析和整理了Android框架的主要源代码,并详细讲解了理解框架工作原理所需的各种基础知识和构成...
  • Spring框架的简单实现

    2015-03-09 08:15:09
    我们从一个简单的容器开始,一步步的重构,最后实现一个基本的Spring框架的雏形,为了帮助我们更加深入的理解Spring的IoC的原理和源码。 详细内容见博文: 【SSH进阶之路】一步步重构容器实现Spring框架——从一个...
  • 基于SSM框架的博客系统源码

    热门讨论 2016-08-29 11:05:38
    使用 Maven3 管理项目,使用 Shiro 作为项目安全框架,使用 Lucene 作为全文检索,支持 restful 风格; 前台网页使用主流的 Bootstrap3 UI 框架;后台管理使用主流易用的 EasyUI 轻量级框架; 数据库连接池使用的是...
  • 关于Spring的外文文献加翻译文献名:Introducing the Spring Framework
  • SSH框架搭建源码

    热门讨论 2015-10-19 21:46:09
    里面是SSH框架搭建登录的demo,清楚的描述了SSH框架搭建过程的各种配置,另附博客地址:http://blog.csdn.net/u010539352
  • 一个免费的java权限后台管理系统框架

    千次下载 热门讨论 2015-01-23 17:52:35
    java权限后台开发框架,采用spring + srpingsecurity + springMVC + Hibernate + freemarker + jquery 等技术实现,页面及源文件打包发布程序。 完整的功能应用,包括:后台权限、人员机构、参数代码、角色权限、...
  • 免费漂亮的WPF界面框架

    热门讨论 2015-09-14 18:02:58
    基于FirstFloor.ModernUI的免费WPF界面框架,演示了如何自定义界面字体实现。该框架界面简洁明快,易于二次开发,可开发出靓丽的应用软件。时间久远,自主降低积分
  • MVC框架

    千次阅读 多人点赞 2021-10-10 18:44:44
    MVC框架MVC框架——个人理解,不管啦(头大,越研究越头大)1 经典MVC框架2 经典mvc模式就是jsp+servlet+JavaBean3 JavaBean4 实际MVC框架应用5 总结 MVC框架——个人理解,不管啦(头大,越研究越头大) 注意:mvc...

    MVC框架——一个理论框架!!!

    注意:mvc框架只是理论上的知识,是一个设计思维或者思想,而不是像ssh,ssm等可以实实在在应用的框架。

    前言——必看

    对于MVC框架总的认识:
    在百度百科中:经典mvc框架中model定义为业务逻辑,但同时也解释为业务规则,或者解释为企业数据(实体类)和业务规则

    题外话:很无语,不知道按照什么定义的,但是很明显业务逻辑不等同业务规则。
    业务逻辑构成为:领域实体,业务规则,完整性约束,业务流程及工作流。
    具体参考这篇文章细说业务逻辑

    根据百度百科的解释,无论怎么定义model,都会发现其实这三种都和业务有关系(至于有的博主会说model层就是仅仅和数据有关的实体类,,其实这个model本义上已经不是mvc框架里的那个model,,更多地像是一个层,例如service层,dao层之类的层。后面会解释。)

    mvc框架就是一个设计思想,根本就不是可以实实在在应用的框架(这一点让我吃了大亏,想骂人…)。mvc框架的宗旨就是要将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。而实际应用和项目里的mvc框架,其实是mvc和三层结构的混合体,常见的有ssh,ssm。

    以ssh举例,项目分层有controller,view,,然后原来mvc中的model层变为实体类,service,和dao,,然后很多人把这个实体类称为模型,我叫它模型二号,这个模型二号是和mvc那个模型不一样的。原来的模型model是带有逻辑,而这个模型二号model是实实在在地只和数据有关,和业务无关的实体类。至于为什么叫model:以model命名的层,里面存的是实体类的模型,一般是用来给前端用的(entity是数据库实体类,是和数据库对应的,此外还有domain,详细解释在文章第四部分

    如何区分model是含有逻辑的那个,还是只含有数据的那个,个人理解如下:带有逻辑的那个model是经典mvc框架里的model,是理论上的。而凡是涉及和具体项目,具体代码有关的model,都仅仅指的是实体类。

    另外,看其它的博文,还有博主说service是从controller中分离出来的,这里我只能说他把mvc框架当做三层结构用了,连mvc的宗旨都没弄明白——MVC要实现的目标是将软件用户界面和业务逻辑分离,而Controller层只是用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果,所以Controller中的内容能少则少,说白了就是controller尽量不含业务逻辑,一般只含有应用程序逻辑,但这一点在实际项目中很模糊,需要很优秀的开发人员在开发前设计好,目前我看到的实际项目,都是action里面装了一大堆逻辑,然后项目能跑起来就行了,无语~~


    1 经典MVC框架

    1,定义
    经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器。其中,View的定义比较清晰,就是用户界面。

    2,目的
    使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。 其中,View的定义比较清晰,就是用户界面。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
    简单流程图如下:
    mvc单线

    3,mvc三层解释
    V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。

    M即model模型是指模型,模型指企业数据(即实体类)和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

    C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

    4,mvc的宗旨就是:
    MVC要实现的目标是将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。
    View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性。

    2 经典mvc模式就是jsp+servlet+JavaBean

    注意:此时已经不是理论上的mvc框架了
    servlet

    3 JavaBean

    概述
    JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
    JavaBean

    1,JavaBean(就是一个Java类)的定义:满足一下2点 ,就可以称为JavaBean

    • a.public 修饰的类 ,public 无参构造
    • b.所有属性(如果有) 都是private,并且提供set/get (如果boolean 则get 可以替换成is)

    2 使用层面,JavaBean分为2大类:

    • a.封装业务逻辑的JavaBean (LoginDao.java封装了登录逻辑) 逻辑
      可以将jsp中的JDBC代码,封装到Login.java类中 (Login.java)
    • b.封装数据的JavaBean (实体类,Student.java Person.java ) 数据
      对应于数据库中的一张表

    封装数据的JavaBean 对应于数据库中的一张表 (Login(name,pwd))
    封装业务逻辑的JavaBean 用于操作 一个封装数据的JavaBean

    举例:数据模型(Javabean封装数据)

    package userLogin;
    
    public class Login {
    	
    	private String name;
    	private String pwd;
    	
    	public Login() { //无参构造
    		super();
    		// TODO Auto-generated constructor stub
    	}
    	
    	public Login(String name, String pwd) { //有参构造
    		super();
    		this.name = name;
    		this.pwd = pwd;
    	}
    	
    	public String getName() {
    		return name;
    	}
    	
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    	public String getPwd() {
    		return pwd;
    	}
    	
    	public void setPwd(String pwd) {
    		this.pwd = pwd;
    	}
    	
    }
    

    举例:业务规则模型(Javabean封装数据)

    package org.lanqiao.dao;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class LoginDao {
    	public int login(String name , String pwd)
    	{
    		String URL="jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezone=UTC&characterEncoding=UTF-8";
    	    String USERNAME = "root"; //账号
    	    String PWD = "123456"; //密码
    	    Connection conn = null;
    	    PreparedStatement pstmt = null;
    	    ResultSet rs = null;
    	    
    		try{
    			//导入驱动,加载具体的驱动类
    			Class.forName("com.mysql.cj.jdbc.Driver");
    			
    			//连接数据库
    			conn = DriverManager.getConnection(URL,USERNAME,PWD);
    			
    			//发送sql语句
    			// String sql = "select count(*) from login where name = ? and pwd = ?"; //报错,找不到原因
    			
    			String sql = "select * from login";
    			pstmt = conn.prepareStatement(sql);
    //			pstmt.setString(1, name);
    //			pstmt.setString(2, pwd);
    			
    			//执行查询,获取结果集
    			rs = pstmt.executeQuery(sql);
    			
    			//处理结果集
    			int count=0;
    			while(rs.next()){
    				String daoName = rs.getString("name");
    				String daoPwd = rs.getString("pwd");
    				if(name.equals(daoName) && pwd.equals(daoPwd)){
    					count = 1;
    					break;
    				}
    			}
    				
    			return count;
    			
    			}catch(Exception e){
    				e.printStackTrace();
    				return -1;
    			}finally{
    					try {
    						//关闭连接
    						if(rs!=null) rs.close();
    						if(pstmt!=null) pstmt.close();
    						if(conn!=null) conn.close();
    					} catch (SQLException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    			}
    	}
    		
    }
    
    

    注意:JavaBean在Java项目中更多的是封装数据。

    4 实际MVC框架应用

    实际应用mvc
    注意:更多地去研究ssh和ssm框架,mvc只是一个设计思想。

    5 总结

    mvc不是可以实实在在应用的框架,只是一种设计思想。
    mvc设计框架的思想就是:

    • MVC要实现的目标是将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。
    • View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性。
    展开全文
  • 完整Java项目 内含SSM框架源码

    热门讨论 2017-11-02 14:09:33
    开源项目之在线教育网站(SSM框架整合技术) 内含word说明文档 代码文档齐全
  • 谢家老幺-主框架程序

    千次下载 热门讨论 2015-10-20 14:14:42
    谢家老幺-主框架程序 工具的主框架,你懂的
  • 尽管学习如何使用单个php框架生成动态网页相对简单,但确定这3种主流web应用程序框架中哪一个最能满足您的要求却并不容易。《php框架高级编程——应用symfony、cakephp和zend》一书对3种最受欢迎的开源框架进行了...
  • Spring+SpringMVC+Mybatis完整项目(SSM框架)

    热门讨论 2016-11-18 09:25:22
    环境:基于SSM框架(Spring+SpringMVC+MyBatis) + Mysql数据库 + Tomcat7 数据库工具建议用SQLyog 登录、首页显示用户名和身份、分页、模糊查询、 页面跳转(首页、上一页、下一页、末页、指定页跳转(用户输入),第...
  • 自动化测试框架总结

    万次阅读 2021-12-26 15:05:36
    目录 1. 单元测试框架 2. Web自动化测试框架 3. iOS自动化测试框架 4. Android自动化测试框架 ...unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可..

    目录

     1. 单元测试框架

    2. Web自动化测试框架

    3. iOS自动化测试框架

    4. Android自动化测试框架

     1. 单元测试框架

    几乎所有的主流语言,都会有其对应的单元测试框架,下面简单介绍一下python,java,C#三种语言的常见单元测试框架

    1.1 Python

    python常见单元测试框架包括unittest, pytest

    1.1.1 unittest

    • unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。
    • unittest为python内置库,不需要单独安装(好像也和版本有关系)

    1.1.2 pytest

    pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:

    • 简单灵活,容易上手
    • 支持参数化
    • 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
    • pytest不是python内置库,需要单独安装

    1.1.3 unittest与pytest对比

    • unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:

    (1)测试文件必须先import unittest
    (2)测试类必须继承unittest.TestCase
    (3)测试方法必须以“test_”开头
    (4)测试类必须要有unittest.main()方法

    • pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。使用pytest编写用例,必须遵守以下规则:

    (1)测试文件名必须以“test_”开头或者"test"结尾(如:test_ab.py)
    (2)测试方法必须以“test
    ”开头。
    (3)测试类命名以"Test"开头。

    • unittest提供了setUp/tearDown,只能针对所有用例。
    • pytest提供了模块级、函数级、类级、方法级的setup/teardown,比unittest的setUp/tearDown更灵活。

    模块级(setup_module/teardown_module)开始于模块始末,全局的
    函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
    类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
    方法级(setup_method/teardown_method)开始于方法始末(在类中)
    类里面的(setup/teardown)运行在调用方法的前后

    • pytest还可以在函数前加@pytest.fixture()装饰器,在测试用例中装在fixture函数。fixture的使用范围可以是function,module,class,session。
    • fixture相对于setup和teardown来说有以下几点优势:

    (1)命名方式灵活,不局限于setup和teardown这几个命名
    (2)conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用。
    (3)scope="module" 可以实现多个.py跨文件共享前置
    (4)scope="session" 以实现多个.py跨文件使用一个session来完成多个用例
    (5)用yield来唤醒teardown的执行

    • 断言方面:
      unittest提供了assertEqual、assertIn、assertTrue、assertFalse.
      pytest直接使用assert 表达式,相对而言更简单且高效.

    • unittest不支持失败重跑,pytest支持

    • unittest依赖ddt库参数化,pytest直接使用@pytest.mark.parametrize装饰器

    pytest总的来说优于unittest,提供了更多的功能和可拓展性

    1.2 Java

    Java常见单元测试框架包括Junit、testNG

    1.3 C#

    C#常见单元测试框架包括NUnit

    2. Web自动化测试框架

    2.1 Selenium

    Selenium是一个用于Web应用程序测试的工具。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。Selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。Selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。

    selenium 1.0 包括以下两部分:selenium server、 Client Libraries组成

    2.1.1 selenium server

    selenium server负责控制浏览器的行为。主要有launcher,Http Proxy,selenium core。selenium core使用Selenium Server嵌入到浏览器页面中。实质上,selenium core是由JS函数组成,这样我们可以实现用程序对浏览器进行操作。

    2.1.2 client Libraries

    编写测试用例时控制selenium server的库

    下图介绍了testcase的执行过程:

     

    执行过程

    (1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。

    为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server是很正常的。

    (2).Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。

    (3).测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。

    (4).Selenium Core接收到指令后,执行操作。

    (5).浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的<u style="box-sizing: border-box; font-family: __SYMBOL, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", SimSun, sans-serif; font-variant-ligatures: none; font-variant-numeric: tabular-nums; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Web</u>页面。

    由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。

    (6).Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。

    (7).Selenium Server的Http Proxy把接收的Web页面返回给浏览器。

    2.2 Selenium2(Webdriver)

    Selenium 2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。

    下图介绍了Selenium2的架构:

     

    Selenium2架构

    • webdriver按照server–client的经典设计模式设计

    • server端就是remote server,可以是任意的浏览器:我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;

    • client端简单说来就是我们的测试代码:们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;

    • the WebDriver Wire Protocol是Selenium自己设计定义的协议,这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。

    • WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service,例如FirefoxDriver初始化成功,默认从http://localhost:7055开始,IE则是http://localhost:52432

    webdriver的工作原理:

    (1)启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。

    (2)客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。

    (3)Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

    3. iOS自动化测试框架

    3.1 XCTest

    About Testing with Xcode

    XCTest是苹果在iOS 7和Xcode5引入的一个简单而强大的测试框架,它的测试编写起来非常简单,并且遵循xUnit风格。XCTest的优点是与Xcode深度集成,有专门的Test导航栏,但因为受限于官方测试API,因此功能不是很丰富。

    3.2 UIAutomation

    https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UIAutomation.html

    UIAutomation是苹果提供的UI自动化测试框架,使用Javascript编写。基于UIAutomation有扩展型的工具框架和驱动型的框架。扩展型框架以JavaScript扩展库方法提供了很多好用js工具,注入式的框架通常会提供一些Lib或者是Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对app的驱动。驱动型UI Automation 在自动化测试底层使用了UI Automation库,通过TCP通信的方式驱动UI Automation来完成自动化测试,通过这种方式,编辑脚本的语言不再局限于JavaScript。

    3.3 Frank

    App Development Ireland - App Developers Dublin

    Frank是iOS平台一款非常受欢迎的app测试框架,它使用Cucumber语言来编写测试用例, Frank包含一个强大的“app inspector”–Symbiote,可以用它来获得运行中app的详细信息,便于开发者将来进行测试回顾。 它允许使用Cucumber编写结构化英语句子的测试场景。 Frank要求测试时在应用程序内部编译,这意味着对源代码的改变是强制性的。操作方式为使用Cucumber和JSON组合命令,将命令发送到在本地应用程序内部运行的服务器上,并利用UISpec运行命令。

    **优点: **测试场景是在Cucumber的帮助下,用可理解的英语句子写的。强大的Symbiote实时检查工具。 活跃的社区支持。 不断扩大中的库。

    缺点:对手势的支持有限。 在设备上运行测试有点难。 修改配置文件需要在实际设备上运行。 记录功能不可用。

    3.4 KIF

    iOS 中使用 KIF 测试 UI - OSCHINA - 中文开源技术交流社区

    KIF是Keep It Functional项目的缩写,是一款iOS app功能性测试框架,使用Objective-C语言编写,对苹果开发者来说非常容易上手,更是一款开发者广为推荐的测试工具。KIF tester使用私有API来了解App中的视图层级。但缺点是运行较慢。

    3.5 Calabash-ios

    详见Calabash-android 描述。

    3.6 Subliminal

    Subliminal

    Subliminal是另一款与XCTest集成的框架。与KIF不同的是,它基于UIAutomation编写,旨在对开发者隐藏UIAutomation中一些复杂的细节。

    3.7 Kiwi

    https://github.com/kiwi-bdd/Kiwi/wiki/Getting-Started-with-Kiwi-2.0

    Kiwi是对XCTest的一个完整替代,使用xSpec风格编写测试。 Kiwi带有自己的一套工具集,包括expectations、mocks、stubs,甚至还支持异步测试。它是一个适用于iOS 开发的Behavior Driven Development(BDD)库,优点在于其简洁的接口和可用性,易于设置和使用,非常适合新手开发者。Kiwi使用Objective-C语言编写,易于IOS开发人员上手。

    3.8 Appium

    Appium: Mobile App Automation Made Awesome.

    Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。 通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。

    总结:IOS自动化测试框架继承关系如下. XCTest与 Xcode 的 IDE 直接集成,使用简单, 但其不支持stub和mock, 所以单使用XCTest框架的较少. Kiwi是一个iOS平台十分好用的行为驱动开发BDD的测试框架,有着非常漂亮的语法,可以写出结构性强,非常容易读懂的测试。UI Automation是Apple官方提供的UI自动化测试的解决方法,但接口不够丰富。

     

     iOS自动化测试框架

    • KIF、Frank、Calabash都是通过使用代码的形式来模拟事件触发,使得被测代码就像是由用户行为所触发的一样。但这样的代价是插入一个额外层的复杂度。

    • IOS测试框架中支持BDD的有calabash 和Kiwi。

    • 可选用的单元测试框架有Kiwi,Specta,Quick等,而KIF,Subliminal和calabash更适用于UI级验收测试。

    4. Android自动化测试框架

    4.1 Instrumentation

    https://developer.android.com/reference/android/app/Instrumentation.html

    Instrumentaion 是Android自带的一个测试框架,是很多其它测试框架的基础,可以在同进程中加载被测组件。它有很多丰富的高层封装,使用者可以使用基于instrumentation的其他框架,避免过多二次开发量。但Instrumentation不支持跨应用,导致基于instrumentation的框架都继承了这个缺点。

    4.2 Robotium

    https://github.com/robotiumtech/robotium

    Robotium是基于Instrumentation框架开发的一个更强的框架. 对常用的操作进行了易用性的封装. 用于开发功能性、系统和验收测试场景。它运行时绑定到GUI组件。它安装了一个测试用例套件作为在Android设备或仿真器上的应用程序,并提供用于执行测试的真实环境。

    优点: 容易在最短的时间内编写测试脚本,易用性高。自动跟随当前activity。 由于运行时绑定到GUI组件,所以相比Appium,它的测试执行更快,更强大。 不访问代码或不了解app实现,也可以工作。 支持Activities、Dialogs、Toasts、Menus、Context Menus和其他Android SDK控件。

    缺点: 不能处理flash和web组件。在旧设备上会变得很慢。 由于不支持iOS设备,当自动化测试同时覆盖 android与iOS的情况时,测试会被中断。没有内置的记录和回放功能.,使用记录功能需要 TestDroid 和 Robotium Recorder 这样的收费工具。

    4.3 UIAutomator

    https://google.github.io/android-testing-support-library/docs/uiautomator/

    UIAutomator是由谷歌提供的测试框架,它提供了原生Android app和游戏的高级UI测试。这是一个包含API的Java库,用来创建功能性UI测试,还有运行测试的执行引擎。该库自带Android SDK。

    优点:它在运行访问不同的进程时,会给JUnit测试案例特权。库由谷歌社区支持和维护。

    缺点:仅支持android4.1(API level 16)及以上。 不支持脚本记录。 支持的重点是Java。 你不能获得当前活动或仪表化。目前不支持web视图。 库仅支持使用Java,因此很难和使用Ruby的cucumber混合。如想支持BDD框架,建议使用Java自己的BDD框架,例如Jbehave。

    4.4 Espresso

    https://google.github.io/android-testing-support-library/docs/espresso/index.html

    Espresso是Google的开源自动化测试框架。相对于Robotium和UIAutomator,它的特点是规模更小、更简洁、API更加精确、编写测试代码简单、容易快速上手。因为是基于Instrumentation的,所以不能跨App。

    4.5 Calabash

    https://github.com/calabash

    Calabash是一个适用于iOS和Android开发者的跨平台app测试框架,可用来测试屏幕截图、手势和实际功能代码。Calabash开源免费并支持Cucumber语言,Cucumber能让你用自然的英语语言表述app的行为,实现BDD(Behavior Driven Development,行为驱动开发)。 Cucumber中的所有语句使用Ruby定义。

    **优点: **有大型社区支持。列表项 简单,类似英语表述的测试语句支持在屏幕上的所有动作,如滑动,缩放,旋转,敲击等。 跨平台开发支持(同样的代码在Android和iOS设备中都适用)。

    缺点:测试步骤失败后,将跳过所有的后续步骤,这可能会导致错过更严重的产品问题。测试耗费时间,因为它总是默认先安装app。 需要Calabash框架安装在ios的ipa文件中, 因此测试人员必须要有iOS的app源码。 除了Ruby,对其他语言不友好。

    4.6 Appium

    Appium: Mobile App Automation Made Awesome.

    Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。 通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。

    4.7 Selendroid

    GitBook - Where software teams break knowledge silos.

    Selendroid 是一个基于Instrumentation的一个框架. 完全兼容Webdriver协议。 Selendroid 可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试。

    4.8 Robolectric

    Robolectric

    Robolectric 是一款Android单元测试框架,但它并不依赖于Android提供的测试功能,它通过实现一套JVM能运行的Android代码,然后在unit test运行的时候去截取android相关的代码调用,然后转到Robolectric实现的代码(shadow objects)去执行这个调用的过程。因此它不像模拟器或设备需要dexing(Android dex编译器将类文件编译成Android设备上的Dalvik VM使用的格式)、打包、部署和运行的过程,大大减少了测试执行的时间。Pivotal实验室声称使用Robolectric可以在28秒内运行1047个测试。

    除了实现Android里面的类的现有接口,Robolectric还给每个Shadow类额外增加了很多接口,可以读取对应的Android类的一些状态。比如它为ImageView提供了getImageResourceId()方法,测试者可以通过getImageResourceId()接口来确定是不是正确显示了期望的Image。

    4.9 RoboSpock

    http://robospock.org/

    RoboSpock是一个开源的Android测试框架,它提供了简单的编写BDD行为驱动开发规范的方法,使用Groovy语言,支持Google Guice库。RoboSpock合并了Robolectic和Spock的功能。

    4.10 Cafe

    项目管理iCafe_项目进度管理-百度智能云

    Cafe是百度出品的一个基于Robotium的测试框架,它提供了跨进程的测试解决方案。

    4.11 Athrun

    http://code.taobao.org/p/athrun/wiki/index/

    Athrun 是taobao出的一个移动测试框架,它支持Android和IOS。Android部分是基于Instrumentation,在Android原有的ActivityInstrumentationTestCase2类基础上进行了扩展,提供了一整套面向对象的API。 IOS上的自动化测试包括注入式自动化框架AppFramework,和基于录制的自动化框架Athrun_IOS, InstrumentDriver。

    4.12 其他

    其他自动化框架还有应用于稳定性测试的Monkey系列(Monkey, Monkeyrunner, MonkeyTalk), 其中MonkeyTalk 支持iOS 和 Android,它可以为应用进行真实的,功能性交互测试。MonkeyTalk 提供简单的 “smoke tests”,复杂数据驱动的测试套件。MonkeyTalk 支持原生,移动和混合应用,真实设备或者模拟器。MonkeyTalk 使得场景捕获非常容易,可以记录高级别,可读的测试脚本。还有适用于浏览器自动测试的Selenium WebDriver,可以真实测试用户行为,用户交互如触摸、手指滚动、长按等,还支持HTML5的一些特性,比如本地存储、session存储、应用缓存等。而CTS则是应用于兼容性测试的自动化工具, CTS大部分是基于Junit和仪表盘技术编写的。还扩展了自动化测试过程,可以自动执行用例,自动收集和汇总测试结果。CTS采用XML配置文件的方式将这些测试用例分组成多个测试计划(plan),第三方也可以创建自己的plan。

    总结:

    各个测试框架的继承关系如下,继承关系决定了有些框架的先天优势或先天不足. 在实际应用中可以集成多个框架。

     

     Android 自动化测试框架

    • 基于Instrumentation的测试框架,比如Espresso,Robotium,Selendroid等,都不能支持跨APP使用。 如自动化测试中有跨APP操作,可以结合UiAutomator实现。

    • 支持BDD的自动化框架比较少,可以在calabash 和 RoboSpock及Jbehave之间选择。

    • 若想同时支持Android和IOS,可选框架有Appium和Calabash,或AthRun。

    • 若为单元测试选择框架,可选Instrumentation或Robolectric。Robolectric实现了shadow object 类,耗时短。

    感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接免费拿走:

    ① 2000多本软件测试电子书(主流和经典的书籍应该都有了)

    ② 软件测试/自动化测试标准库资料(最全中文版)

    ③ 项目源码(四五十个有趣且经典的练手项目及源码)

    ④ Python编程语言、API接口自动化测试、web自动化测试、App自动化测试(适合小白学习)


    ⑤ Python学习路线图(告别不入流的学习)

    上图的资料 在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)

    可以自助拿走,群号953306497(备注“csdn111”)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

    展开全文
  • C#.NET NFine快速开发框架_V1.1 程序

    万次下载 热门讨论 2016-08-20 00:31:12
    NFine 是基于 C# 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展,让Web开发更迅速、简单。能解决60%重复工作。为您节约更多时间,去陪恋人、家人和朋友。...
  • mui框架中文帮助文档

    千次下载 热门讨论 2015-12-22 18:26:20
    MUI 是一个轻量级的 HTML、CSS 和 JS 框架,遵循 Google 的 Material Design 设计思路,中文帮助文档
  • 电商项目ssm框架

    2016-08-03 16:21:14
    电商项目ssm框架
  • Java EE核心框架实战

    2016-04-28 06:15:45
    核心框架、Java EE、实战、核心框架实战
  • 几大主流的前端框架(UI/JS)框架

    万次阅读 2020-12-14 11:03:25
    如今的前端已经不再像以前一样就是简单的写写页面和调调样式而已,现在的前端越来越复杂,知识点越来越丰富。...web前端发展至今,演变出了无数的库和框架;说到库第一时间想到的是不是jquery?在小编刚接触库的时候

    如今的前端已经不再像以前一样就是简单的写写页面和调调样式而已,现在的前端越来越复杂,知识点越来越丰富。

    要做WEB前端,就需要知道前端到底是什么,需要学习那些知识;前端至少要懂的三个部分:HTML,CSS,JavaScript(简称JS),那首先先明确这三个概念:

    HTML负责结构,网页想要表达的内容由html书写。

    CSS负责样式,网页的美与丑由它来控制

    JS负责交互,用户和网页产生的互动由它来控制。

    web前端发展至今,演变出了无数的库和框架;说到库第一时间想到的是不是jquery?在小编刚接触库的时候也是从jQuery开始的;今天我们就来说说前端发展到现在都有哪些好用的库框架。

    2016年开始应该是互联网飞速发展的几年,同时也是Web前端开发非常火爆的一年,Web 前端技术发展速度让人感觉几乎不是继承式的迭代,而是一次次的变革和创造。这一年中有很多热门的前端开发框架,下面源码时代web小编为大家总结2016年至今最受欢迎的几款前端框架。

    在这互联网飞速发展的信息时代,技术的更新迭代也在加快。目前看来,火了十几年的Java技术现在仍然是棵常青树。回想两年前初来咋到,也是想好好当一名java程序员,五年计划都行想好了,最后还是阴差阳错搞了前端。前端目前来看还是非常火的,随着IT技术的百花齐放,新的前端框架不断推出,但大多都还在狂吼的阶段。其实一直以来对技术的理解是技术服务于业务和产品,产品又在不同程度的推进着技术的演进。Web、无线、物联网、VR、PC从不同方向推进着技术的融合与微创新。程序员在不同业务场景下的角色互换。而随着Node.js的出现语言的角色也在发生着转变,js扮演了越来越重要的角色。也就有了茶余饭后也把了解到的知识整理一下。

    一、前端UI框架组件库:

    说到前端框架我第一印象中想起React、Vue和Angular,不知道你是否与我一样想到这些,现在常用的有:Bootstrap、jQuery UI、BootMetro、AUI常用的还有很多、就不一一跟大家举例出来了,因为很多朋友认为在不同项目开发中用到的前端框架不一样,其实也有一款可以适用于多种项目开发的前端框架,只是没发现。

    用前端框架开发项目的原因?

    这个应该是最好解决的问题,首先就是减少造轮子的想法,能够快速的开发一款web应用对于公司来说都是非常愿意开到的,在时间和成本之间就能够节约很多的时间,这是其中一点,另外一点就是使用前端框架的组件功能,只要组件功能强大,什么样的项目都能够开发(前提是:要熟悉前端框架的功能!),时间成本问题就能够轻松解决。

    没有设计师也能做出精美页面效果的前端框架

    虽然市场中有很多的前端框架,但部分UI框架是属于组件库,然而QUICK UI跟当下流行的三大底层框架React、Vue和Angular不同,QUICK UI提供了一整套前端解决方案,包括前后端分离的开发框架、100多种功能强大的UI控件、几十套精美的皮肤模板和近16万字的开发文档,满足你所以开发项目都不是问题。

    二、前端框架库:

    1.Node.Js

    地址:http://www.runoob.com/nodejs/nodejs-tutorial.html (中文网)
    描述:Node.js是一个Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
      Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

    简单的说 node.js 就是运行在服务端的 JavaScript。

    Node.js 是一个基于Chrome javascript 运行时建立的一个平台。

    Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

    用途:
      1. RESTful API(目前比较流行的接口开发风格)

    这是NodeJS最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。

    2. 统一Web应用的UI层

    目前MVC的架构,在某种意义上来说,Web开发有两个UI层,一个是在浏览器里面我们最终看到的,另一个在server端,负责生成和拼接页面。

    不讨论这种架构是好是坏,但是有另外一种实践,面向服务的架构,更好的做前后端的依赖分离。如果所有的关键业务逻辑都封装成REST调用,就意味着在上层只需要考虑如何用这些REST接口构建具体的应用。那些后端程序员们根本不操心具体数据是如何从一个页面传递到另一个页面的,他们也不用管用户数据更新是通过Ajax异步获取的还是通过刷新页面。

    3. 大量Ajax请求的应用

    例如个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,NodeJS能响应大量的并发请求。  总而言之,NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景。

    2.angular.Js(比较厉害,github排名也比较高)

    地址:http://www.runoob.com/angularjs/angularjs-tutorial.html (中文网)
    描述:AngularJS[1] 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
    用途:通过描述我们应该就能很好的明白AngularJS的真实用途了,MVVM,模块化,自动化双向数据绑定等等。除了简单的dom操作外,更能体现Js编程的强大。当然应用应该视场合而定。
    它的出现比较早,也是曾经比较流行的前端js框架,但是今年来随着reactJS与VueJS的出现,它的热度在慢慢降低。

    3.JQuery Mobile

    地址:http://www.w3school.com.cn/jquerymobile/ (中文网)
    描述:Query Mobile是jQuery 在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。jQuery Mobile开发团队说:能开发这个项目,我们非常兴奋。移动Web太需要一个跨浏览器的框架,让开发人员开发出真正的移动Web网站。
    用途:jQuery Mobile 是创建移动 web 应用程序的框架。
          jQuery Mobile 适用于所有流行的智能手机和平板电脑。

    jquery Mobile 使用 HTML5 和 CSS3 通过尽可能少的脚本对页面进行布局。

    4.requirejs

    地址:http://www.requirejs.cn/
    描述:RequireJS的目标是鼓励代码的模块化,它使用了不同于传统

    用途:模块化动态加载。

    5.Vue.js(目前市场上的主流)

    地址:http://cn.vuejs.org/
    描述:Vue.js 是用于构建交互式的 Web 界面的库。它提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单、灵活的 API。从技术上讲, Vue.js 集中在 MVVM 模式上的视图模型层,并通过双向数据绑定连接视图和模型。实际的 DOM 操作和输出格式被抽象出来成指令和过滤器。相比其它的 MVVM 框架,Vue.js 更容易上手。
    目前市场上比较流行的前后端分离的开发模式,大多前端都是vueJS做的,具体的优点请大家看官方文档。

    6.backbone.js

    地址:http://www.css88.com/doc/backbone/
    描述:Backbone 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构。其中模型用于绑定键值数据和自定义事件;集合附有可枚举函数的丰富API; 视图可以声明事件处理函数,并通过RESTful JSON接口连接到应用程序。

    7.React.js(gihub排名仅次于vue.js)

    地址:http://reactjs.cn/react/docs/why-react.html
    描述:React 是一个 Facebook 和 Instagram 用来创建用户界面的 JavaScript 库。很多人认为 React 是 MVC 中的 V(视图)。我们创造 React 是为了解决一个问题:构建随着时间数据不断变化的大规模应用程序。为了达到这个目标,React 采用下面两个主要的思想。

    8.Amaze UI

    Amaze UI是轻量级的前端应用框架,是国内比较流行的框架,比较适用于移动端响应式开发框架,可以按照项目要求生成专属的UI框架库进行使用,组件非常丰富,可以构建出漂亮的web页面。

    官网地址:http://amazeui.org/

    三、可视化组件

    1.Echarts

    地址:http://echarts.baidu.com/
    描述:ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

    2.tableau(收费)

    地址:http://www.yuandingit.com/special/tableau/index.html
    描述:Tableau 是桌面系统中最简单的商业智能工具软件,Tableau 没有强迫用户编写自定义代码,新的控制台也可完全自定义配置。在控制台上,不仅能够监测信息,而且还提供完整的分析能力。Tableau控制台灵活,具有高度的动态性。

    四、前端构建工具

    1.gulp

    地址:

    描述:易于使用
          通过代码优于配置的策略,Gulp 让简单的任务简单,复杂的任务可管理。
          构建快速
          利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 IO 操作。

    插件高质
          Gulp 严格的插件指南确保插件如你期望的那样简洁高质得工作。

    易于学习
          通过最少的 API,掌握 Gulp 毫不费力,构建工作尽在掌握:如同一系列流管道。

    2、ES or webPackage

    1.Bootstrap中文网

    先分享下,如果有想一起学习web前端,HTML5及JavaScript的可以来一下我的前端群733581373,好友都会在里面交流,分享一些学习的方法和需要注意的小细节,每天也会准时的讲一些前端的炫酷特效,及前端直播课程学习
    Bootstrap,让你的页面更简洁、直观、强悍、移动设备优先的前端开发框架,让web开发更迅速、更简单。它还提供了更优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。有着丰富的网格布局系统以及丰富的可重用组件,还有强大的支持十几的JavaScript、jQuery插件以及组件定制等。
    Bootstrap中文网地址:http://www.bootcss.com/

    2. Layui

    layer是一款口碑极佳的web弹层组件,是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。layui 首个版本发布于2016年秋,她区别于那些基于 MVVM 底层的 UI 框架,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。

    Layui官网地址:https://www.layui.com/

    3.ElementUI

    Element-Ul是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是Mint UI 。适合于Vue的UI框架;
    官网地址:http://element-cn.eleme.io/#/zh-CN

    4.Mint UI

    Mint UI 是 由饿了么前端团队推出的 一个基于 Vue.js 的移动端组件库,Mint UI 包含丰富的 CSS 和 JS 组件,能够满足日常的移动端开发需要。通过它,可以快速构建出风格统一的页面,提升开发效率。
    官网地址:http://mint-ui.github.io/

    5.angular

    AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是MVW(Model-View-Whatever)、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
    官网地址:http://www.angularjs.net.cn/

    6.React

    React 可以非常轻松地创建用户交互界面。为你应用的每一个状态设计简洁的视图,在数据改变时 React 也可以高效地更新渲染界面。React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。
    官网地址:http://react-china.org/

    7.vue.js

    近几年最火的前端框架当属Vue.js了,Vue.js是一个构建数据驱动的 web 界面的渐进式框架。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点”。授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪
    几款常用的高质量web前端框架
    Web前端框架就是为了节约开发成本和时间,一般开发一个项目都会用到前端框架(除非自己有前端开发团队),根据我经验找的几款web前端框架做出了分析。都是个人意见,仁者见仁智者见智。

    QUICK UI
    QUICK UI是一套完整的企业级web前端开发解决方案,由基础框架、UI组件库、皮肤包、示例工程和文档等组成。使用QUICKUI开发者可以极大地减少工作量,提高开发效率,快速构建功能强大、美观、兼容的web应用系统。
    QUICK UI优势:
    ①功能最为强大
    QUICKUI经历了7年的迭代更新,不断从客户的各种业务中对组件的需求进行归纳和抽离,从而打造新的组件和功能。现在最新的4.0版本框架包含了一百多种组件,一千多个应用场景示例。可以说在前端框架领域中,QUICKUI拥有功能最强大组件库。

    ②运行最为稳定
      很多其他的第三方UI控件在简单场合使用OK,到了复杂的场景中就会出现很多问题,这种现象很常见,因为在组件设计时无法预料到所有的应用场合。而QUICKUI在7年间经历了数千个项目实际检验,在各种复杂场景都应用过,并根据客户的反馈不断完善和调整。目前的第四代可以说是最稳定、最完美的版本。

    ③丰富精美的界面皮肤
      跟其他web前端框架仅仅是一套组件库不同,QUICKUI是一整套前端解决方案,拥有丰富的外观界面解决方案。采用现今流行的扁平化设计理念,推出了包括登录、响应式web、工作桌面、地图类、门户风格、大屏展示风格等等几百套制作精美、用户体验优秀的界面。这些界面是以QUICKUI皮肤包的形式发布,使用和更换都非常方便。

    ④事无巨细的开发文档
    QUICKUI拥有16万字+的开发文档,框架和组件的每一个功能点都有详细的讲解和代码示例,用于开发过程中随时查阅。除了框架机制讲解和组件使用教程,文档还涉及web前端开发的很多知识。仔细阅读并结合框架使用的话,你很快就能成为web开发的高手。

    ⑤上手开发非常容易
    QUICKUI采用组件化思想来构建组件,一个组件就是一两句html的标签,使用起来非常简单。将开发人员从繁琐的JS编码中解脱出来,很大程度减少前台编码的出错率;保留了HTML的布局方式,从而快速进行页面布局。对开发者前台技术要求也非常低,只需要了解html语法和一些简单的JS即可,从而把更多精力放在业务功能的实现上,极大地提高开发效率。

    ⑥浏览器兼容性非常好
    QUICKUI4.0使用了很多HTML5,CSS3技术用于提高表现力和用户体验,这些新的特性在现代浏览器中会有很好的效果。但是,国内依然有大量的用户在使用IE7、IE8等旧时代的浏览器,为照顾这部分用户,框架采用了渐进式思想,确保低版本浏览器也能正常使用。所以,QUICKUI兼容IE7以上所有主流浏览器。

    flex
    Apache基金会今天发布了Flex4.8版本,这是Adobe将Flex捐献给Apache基金会后发布的第一个版本。
      需要注意的是,Flex目前还在孵化阶段,还不是Apache的正式项目,Flex4.8也不是一个正式的Apache版本。
    Apache称,该版本标志着Flex新时代的开始,Flex的未来将由社区来驱动,而不是由一个公司驱动。开发者可以通过贡献代码,来帮助改进Flex,如修复bug、增加功能等。
      从Macromedia卖给Adobe,然后又捐给apache,不知道搞什么名堂。不过还好没有经过大幅重构,否则就真的是悲哀了!

    extjs
    ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。
      功能丰富,无人能出其右。
      无论是界面之美,还是功能之强,ext的表格控件都高居榜首。
      华丽的界面,灵活的功能,还有开发工具都是配套的,但有个最大的问题,用就得花钱!

    easyui
    easyui帮助你构建你的web应用更加容易。
      它是一个基于jquery的插件,开发出来的一套轻量级的ui框架,非常小巧而且功能丰富。
      但是她有一个最大的问题就是代码只能找到以前的开源的版本,到了1.2以后的版本源代码都是经过混淆的,如果遇到问题修改起来会非常麻烦!不过一个比较大的优势是开源免费,并且界面做的还说的过去!

    jQueryUI
    jQueryUI是一套jQuery的页面UI插件,包含很多种常用的页面空间,例如Tabs(如本站首页右上角部分)、拉帘效果(本站首页左上角)、对话框、拖放效果、日期选择、颜色选择、数据排序、窗体大小调整等等非常多的内容。  功能非常全面,界面也挺漂亮的,可以整体使用,也可以分开使用其中的几个模块,免费开源!

    MiniUI
      又一个基于jquery的框架,开发的界面功能都很丰富。
    jQueryMiniUI–快速开发WebUI。
      它能缩短开发时间,减少代码量,使开发者更专注于业务和服务端,轻松实现界面开发,带来绝佳的用户体验。
      使用MiniUI,开发者可以快速创建Ajax无刷新、B/S快速录入数据、CRUD、Master-Detail、菜单工具栏、弹出面板、布局导航、数据验证、分页表格、树、树形表格等典型WEB应用系统界面。
      界面做的挺不错,功能也挺丰富,但是有两个比较大的问题,一个是收费,一个是没有源码,说白了,不开源!基于这个开发如果想对功能做扩展就需要找他们的团队进行升级!

    DWZ
    DWZ富客户端框架(jQueryRIAframework),是中国人自己开发的基于jQuery实现的AjaxRIA开源框架.
      设计目标是简单实用,快速开发,降低ajax开发成本。
      欢迎大家提出建议,我们将在下一版本中进一步调整和完善功能.共同推进国内整体ajax开发水平。
      毕竟是国产的,支持一下,而且源码完全公开,可以选择一下!不过性能怎么样不敢确定!

    YUI
    Yahoo!UILibrary (YUI)是一个开放源代码的JavaScript函数库,为了能建立一个高互动的网页,它采用了AJAX,DHTML和DOM等程式码技术。它也包含了许多CSS资源。使用授权为 BSD许可证,基本上没怎么研究过!YUICompressor倒是挺出名的,这套UI库不知道应用的情况怎么样!

    Sencha
    Sencha是由ExtJS、jQTouch以及Raphael三个项目合并而成的一个新项目。
      大公司的框架,并且是几样库的强强联合,值得推荐!

    OperaMasks-UI
    OperaMasks-UI是OperaMasks团队2011下半年打造的一款轻量级前端JS组件库,旨在提供一款学习曲线低、定制性灵活、样式统一,且多浏览器支持、覆盖企业业务场景的前端JavaScriptUI组件库。目前,该团队已将这一产品以LGPL开源协议开放给社区。

    转载:https://blog.csdn.net/enweitech/article/details/89316979?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160791478419195283045635%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160791478419195283045635&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-89316979.nonecase&utm_term=%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6&spm=1018.2118.3001.4449

    展开全文
  • Java框架总结

    万次阅读 多人点赞 2020-01-17 14:14:13
    本系列用来记录常用java框架的基本概念、区别及联系,也记录了在使用过程中,遇到的一些问题的解决方法,方便自己查看,也方便大家查阅。 欲速则不达,欲达则欲速! 一、SSH 1、基本概念 SSH框架是JAVA EE中三种...
  • 最新版本的Struts2+Spring4+Hibernate4框架整合

    千次下载 热门讨论 2014-10-15 14:39:34
    整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
  • 非常漂亮的WPF UI框架 可更改主题

    热门讨论 2016-08-04 09:28:09
    非常实用漂亮的WPF 窗体控件资源,提供多种控件样式,并可以更改主题,定义上下左右的滑动窗口等等,做桌面应用首选
  • Android 快速开发框架:推荐10个框架

    千次阅读 2021-06-12 10:49:26
    Afinal是一个Android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,我们可以通过注解的方式进行绑定ui和事件。通过finalBitmap,我们可以方便的加载...
  • 框架特色: 1、基于ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout的架构设计开发 2、采用MVC的框架模式,具有耦合性低、重用性高、生命周期成本低、可维护性高、有利软件工程化管理等优点 3、采用WebAPI,客户端完全...
  • 随着struts的安全问题的暴露,原由Struts2+spring+hibernate构成的SSH2已经被越来越多的开发者所弃用,反而,由Spring+SpringMVC+Hibernate构成的SSH框架越来越受欢迎!这里提供了一个案例代码,希望对大家搭建环境...
  • Winform快速开发框架

    热门讨论 2015-03-25 10:20:44
    支持基类的三层架构,基类中封装了很多常用方法,支持实体类增删改扩展方法,可自定义各类属性及标签,布局采用weifengluo控件,十分小巧,数据库参考配置文件及实体类自己创建即可。
  • 后端开发框架SSM及前端开发框架Layui简介。
  • SSH2框架搭建实例源码

    万次下载 热门讨论 2013-04-25 09:53:29
    SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)全部采用最新版本.演示了用户登录和用户管理
  • 使用maven与MyEclipse整合ssm(Spring MVC、Spring、Mabatis)三大框架并实现用户注册实例源码下载,里面包含一个src目录、pom.xml文件,以及readme.txt。请先阅读readme.txt里面的内容.
  • 基于SSM框架的完整项目 Spring+SpringMVC+Mybatis+mysql 前段bootstrap 简单的一个后台管理系统

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,034,400
精华内容 1,613,760
关键字:

框架

友情链接: pingpang51.rar