数据封装

ajax与jsonp中的几个封装函数

时光毁灭记忆、已成空白 提交于 2019-11-29 16:42:05
首先是ajax里的get 在页面上添加几个标签用作测试 <body> <input type="text" id="user"> <input type="text" id="pass"> <input type="button" id="btn"> </body> js部分: var ouser = document.getElementById("user") var opass = document.getElementById("pass") var obtn = document.getElementById("btn") obtn.onclick = function(){ var url = "http://localhost/ajax/data/data.php"; ajaxGet(url,function(res){ console.log(res) },{ user:ouser.value, pass:opass.value }); } function ajaxGet(url,cb,data){ // 1.处理data的默认值 data = data || {}; // "url?user=admin&pass=123" // 2.解析要发送的数据 var str = ""; for(var i in data){ str += `${i}=${data[i]

SSH框架之Struts2第二篇

我与影子孤独终老i 提交于 2019-11-29 13:57:06
1.2 知识点 1.2.1 Struts2的Servlet的API的访问 1.2.1.1 方式一 : 通过ActionContext实现 页面: <h1>Servlet的API的访问方式一:解耦合的方式</h1> <form action="${ pageContext.request.contextPath }/requestDemo1.action" method="post"> 姓名:<input type="text" name="name"/><br/> 年龄:<input type="text" name="age"><br/> <input type="submit" value="提交"> </form> 编写Action /** * Servlet的API的访问方式一:解耦合的方式 * * 只能用于接收参数 和 操作域中的数据 * @author jt */ public class RequestDemo1Action extends ActionSupport{ @Override public String execute() throws Exception { // 接收数据: /** * 在ActionContext中提供了一些方法:操作域对象的数据 * * Map<String,Object> getParameters(); * * Map

Vuex框架原理与源码分析

混江龙づ霸主 提交于 2019-11-29 13:54:53
本文授权转自微信公众号“美团点评技术团队”。 作者简介: 明裔,美团外卖高级前端研发工程师,2014年加入美团外卖,负责Web主站开发。先后参与了外卖B端、C端、配送等全业务线系统开发后,目前主要负责商家券活动系统。 责编: 陈秋歌,关注前端开发等领域,寻求报道或投稿请发邮件至chenqg#csdn.net,或加微信:Rachel_qg。 Vuex是一个专为Vue服务,用于管理页面数据状态、提供统一数据操作的生态系统。它集中于MVC模式中的Model层,规定所有的数据操作必须通过 action - mutation - state change 的流程来进行,再结合Vue的数据视图双向绑定特性来实现页面的展示更新。统一的页面状态管理以及操作处理,可以让复杂的组件交互变得简单清晰,同时可在调试模式下进行时光机般的倒退前进操作,查看数据改变过程,使code debug更加方便。 最近在开发的项目中用到了Vuex来管理整体页面状态,遇到了很多问题。决定研究下源码,在答疑解惑之外,能深入学习其实现原理。 先将问题抛出来,使学习和研究更有针对性: 使用Vuex只需执行 Vue.use(Vuex) ,并在Vue的配置中传入一个store对象的示例,store是如何实现注入的? state内部是如何实现支持模块配置和模块嵌套的? 在执行dispatch触发action(commit同理)的时候

JS中ajax和jsonp的综合封装

余生长醉 提交于 2019-11-28 15:28:52
Ajax是前后端数据交互的重要手段 Ajax是由一串技术的集合: 1.JavaScript,通过用户或其他与浏览器相关事件捕获交互行为 2.XMLHttpRequest 对象,通过这个对象可以在不中断其它浏览器任务的情况下向服务器发送请求; 3.服务器上的文件,以 XML、HTML 或 JSON 格式保存文本数据; 4.其它 JavaScript,解释来自服务器的数据(比如 PHP 从 MySQL 获取的数据)并将其呈现到页面上。 ajax 包含众多特性,优势与不足也非常明显。优势主要以下几点: 1.不需要插件支持(一般浏览器且默认开启 JavaScript 即可); 2.用户体验极佳(不刷新页面即可获取可更新的数据); 3.提升 Web 程序的性能(在传递数据方面做到按需发送,不必整体提交); 4.减轻服务器和带宽的负担(将服务器的一些操作转移到客户端); ajax 的不足由以下几点: 1.不同版本的浏览器对 XMLHttpRequest 对象支持度不足(比如 IE5 之前); 2.前进、后退的功能被破坏(因为 Ajax 永远在当前页,不会记录前后页面); 3.搜索引擎的支持度不够(因为搜索引擎爬虫还不能理解 JS 引起变化数据的内容); JSONP:就是利用浏览器对html标签(如:a,img,link,script等)没有做跨域请求限制的情况

Angular入门

别来无恙 提交于 2019-11-27 19:42:12
参考原文链接:半小时入门Angular2 Angular官方文档列出的8个核心概念:模块、组件、模板、元数据、数据绑定、指令、服务、依赖注入 从总览的角度来看,各个概念在应用中所处的位置如下图所示: 与用户直接交互的是模板,模板并不是独立的模块,它是组成组件的要素之一。另一要素是组件类,用以维护组件的数据模型及功能逻辑; 模板是通过元数据指定的,元数据还包含很多其他的重要信息,这些信息是用来告诉 Angular 如何去解释一个普通的类,如上图所示,元数据结合普通类而构成组件; 指令是 Angular 里的独立构成,他与模板密切关联,用来增强模板特性,间接扩展了模板的语法; 服务也是 Angular 里的独立构成,他是封装单一功能逻辑的单元,通常为组件提供功能扩展; 服务要能为组件所使用,是通过“依赖注入”机制把服务引入到组件内部,服务既可以单独注入到某一组件,亦可注入到模块,两种注入方式使得服务的作用域不一样,后文详解。 组件 先来聚焦单个组件,每个 Angular 组件内部除了有独立的 JavaScript 逻辑,还包含有 HTML(即模板)及 CSS 代码。所以每个组件不仅有自己独立的业务逻辑,也有属于自己的视图层来渲染自己。 简单的组件示例代码如下: import { Component } from '@angular/core'; @Component({

websql操作类封装

倖福魔咒の 提交于 2019-11-27 13:42:37
  在之前,我写了一个websql的封装类库,代码如下: (function(win) { function smpWebSql(options){ options = options || {}; this.database = null; this.DateBaseName = options.DateBaseName || 'SmpDB'; this.Version = options.Version || '1.0'; this.Description = options.Description || 'SmpDB'; this.DataBaseSize = options.DataBaseSize || 2 * 1024 * 1024; this.init(); } smpWebSql.prototype = { init: function() { this.database = openDatabase(this.DateBaseName, this.Version, this.Description, this.DataBaseSize); //初始化数据库 }, addBlob: function (tableName, arr,index,isFirst,callback) {//批量添加字段 /* 注 : 数据里面的第一个key存储类型为BLOB @param

优雅之道

ぃ、小莉子 提交于 2019-11-27 10:13:35
案例一 现象描述: 不完善的写法: thisName != null && thisName.equals(name); 更完善的写法: (thisName == name) || (thisName != null && thisName.equals(name)); 建议方案: Objects.equals(name, thisName); 案例二 现象描述: !(list == null || list.isEmpty()); 建议方案: import org.apache.commons.collections4.CollectionUtils; CollectionUtils.isNotEmpty(list); 主要收益 函数式编程,业务代码减少,逻辑一目了然; 通用工具函数,逻辑考虑周全,出问题概率低。 拆分超大函数 当一个函数超过80行后,就属于超大函数,需要进行拆分。案例一:每一个代码块都可以封装为一个函 每一个代码块必然有一个注释,用于解释这个代码块的功能。 如果代码块前方有一行注释,就是在提醒你——可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。如果函数有一个描述恰当的名字,就不需要去看内部代码究竟是如何实现的。 现象描述: // 每日生活函数 public void liveDaily() { // 吃饭 // 吃饭相关代码几十行 //

TP5通用化API接口数据封装

*爱你&永不变心* 提交于 2019-11-27 09:38:04
之前在做项目的时候,特别是最近总是再使用前后端分离模式,向客户端提供接口,每次都傻不拉几的 在每一个方法里面 写 $data = ['status'=>1,'message'=>'XXX','data'=>$data]; 累的要死,这脑子从来没想过封装一下吗?真是年龄大了啊,这个项目就抽出来吧,在common.php下写一个函数 以后调用 show就行了 /** * 通用化接口封装 * @param $status * @param $message * @param $data * @param $httpCode * @return array */ function show($status, $message, $data, $httpCode){ $data = [ 'status' => $status, 'message' => $message, 'data' => $data, ]; return json($data,$httpCode); } 来源: https://www.cnblogs.com/we-jack/p/11356460.html

基础数据类型包装类

允我心安 提交于 2019-11-27 07:31:42
包装类:如Integer,Double等,这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作。 以java.lang.Integer为例:构造方法:   Integer(int value)   Integr(String s) 包装类常见方法 一下方法以java.lang.Integer为例 public static final int MAX_VALUE //最大的int型整数(2^31-1) public static final int MIN_VALUE //最小的int型整数(-2^31-1) public long longValue() //返回封装数据的long类型值 public double doubleValue() //返回封装数据的double值 public int intValue()//返回封装数据的int型值 public static int parseInt(String s)         throws NumberFormException 将字符串解析成int类型数据,返回该数据 public static Integer valueOf(String s)           throws NumberFormatExcedption 返回Integer对象,其中封装的整形数据为字符串s所表示。 来源: https:/

理解闭包

↘锁芯ラ 提交于 2019-11-27 01:28:22
闭包的使用场景:想把一些行为封装起来,这些行为依赖当前上下文的数据,而你不想重建一个方法,并且传递参数。这时候可以使用闭包。在C#中,闭包主要是通过匿名方法来体现的。 闭包的优点: 1、直接传递上下文数据,不需要传递。 2、延迟初始化器 闭包的缺点: 破坏了封装性,也就是说,使用了本不属于自己的东西。 转载于:https://www.cnblogs.com/nzbbody/archive/2012/01/12/2320834.html 来源: https://blog.csdn.net/weixin_30906185/article/details/99234367