MIP开发辅助工具 MIP模块介绍

1、替代 jquery、zepto

mip 不推荐使用 jquery 和 zepto。

为什么不推荐?

1、原生JS已经足够好用

2、jquery、zepto 性能相对于原生JS比较差

3、减少页面负担,不必引入额外的文件

没有jquery&zepto的情况下如何开发?

请参见后面的帮助,大部分都可以用原生JS替代,mip也提供了一些内置组件以解决兼容问题。

选择器推荐:

querySelector

querySelectorAll

// 全局

// jquery

$('selector');

// native

document.querySelectorAll('selector');

// 局部

varelement =document.getElementById('xxx');

// jquery

$('selector', element);

// native

element.querySelectorAll('selector');

// 另外原生也支持

element.getElementsByClassName

element.getElementById

element.getElementsByTagName

attr & data

//attr

//jquery

$element.attr('test');

$element.attr('test','123');

//native

element.getAttribute('test');

element.setAttribute('test','1');

element.hasAttribute('test');

//data

//jquery

$element.data('test');

$element.data('test','1');

//native

element.dataset['test'];

element.dataset['test'] ='1';

dom

var util =require('util');

// previousElement

// jquery

$element.prev();

// native

element.previousElementSibling;

// nextElement

// jquery$element.next();

// native

element.nextElementSibling;

// closest

// jquery

$element.closest(selector);

// mip

util.dom.closest(element, selector);

// contains

// jquery

jQuery.contains(parent, child);

// mip

util.dom.contains(parent, child);

// matches(判断element与selector是否匹配)

// mip

util.dom.matches(document.body,'body');

// true

// 其它常规操作

// native

element.appendChild

element.insertBefore

element.removeChild

element.innerHTML

element.textContent

css

// jquery

$element.css('display','none');

// mip

varutil =require('util');

util.css(element,'display','none');

util.css(element, {

left:100,

top:200

});

var arr = [element, element1, element2];

util.css(arr,'display','none');

class

// add

// jquery

$element.addClass('test');

// native

element.classList.add('test');

// remove

// jquery

$element.removeClass('test');

// native

element.classList.remove('test');

// has// jquery$element.hasClass('test');

// nativeelement.classList.contains('test');

// toggle

// jquery

$element.toggleClass('test');

// native

element.classList.toggle('test');

position&width&height

// position

// jquery

$element.position();

// native

element.offsetLeft

element.offsetTop

// offset

// jquery

$element.offset();

// mip

var util = require('util');

util.rect.getElementOffset(element);

ajax

异步请求使用 fetch 和 fetch-jsonp

fetch
fetch-jsonp

// get

fetch(location.href).then(function(res){

returnres.text();

}).then(function(text){

fetchElement.innerHTML ='fetch: '+ (text.search('mip-test') !==-1);

});

// jsonp

var fetchJsonp = require('fetch-jsonp');

fetchJsonp('xxx', {

jsonpCallback:' cb'

}).then(function (res) {

return res.json();

}).then(function (data) {

console.log(data);

});

event

// on、bind

// jquery

$element.on('click', fn);

// native

element.addEventListener('click', fn,false);

// off、unbind

// jquery

$element.off('click', fn);

// native

element.removeEventListener('click', fn);

// delegate

// jquery

$element.delegate(selector,'click', fn);

// mip

var util = require('util');

var undelegate = util.event.delegate(element, selector,'click', fn);

// mip

undelegateundelegate();

// trigger

// jquery

$element.trigger('click');

// native

var event= document.createEvent('MouseEvents');

event.initEvent('click',true,true);

element.dispatchEvent(event);

// mip

var util = require('util');

element.dispatchEvent(event, util.event.create('click', data));

util

varutil =require('util');

// extend

// jquery$.extend(a, b);

$.extend(true, a, b);

// mip

util.fn.extend(a, b);

util.fn.extend(true, a, b);

// isPlainObject

// jquery$.isPlainObject(obj);

// mip

util.fn.isPlainObject(obj);

// isArray

// jquery

$.isArray(obj);

// native

Array.isArray(obj);

// trim

// jquery

$.trim(str);

// native

str.trim();

浏览器判断

var util = require('util');

var platform= util.platform;

// IOS

platform.isIos();

// Safari

platform.isSafari();

// Chrome

platform.isChrome();

// Uc

platform.isUc();

// webkit

platform.isWebkit();

2、viewport 帮助

viewport 提供了视图相关的功能。

为什么要使用viewport?

1、提供一些视图相关的扩展功能
2、当页面被嵌入到iframe中,滚动以及页面相关的计算有一些bug

使用方式

var viewport =require('viewport');

// 获取 scrollTop

varscrollTop = viewport.getScrollTop();

// 设置 scrollTop

viewport.setScrollTop(20);

// 获取页面可视宽度

viewport.getWidth();

// 获取页面可视高度

viewport.getHeight();

// 获取页面实际宽度

viewport.getScrollwidth();

// 获取页面实际高度

viewport.getScrollHeight();

// 获取页面

Rectviewport.getRect();

// 页面 scroll 事件

viewport.on('scroll',function(){

// code

});

// 页面 changed 事件

// 当页面滚动结束,或者滚动速度比较低时,会触发 changed 事件

viewport.on('changed',function(){

// code

});

3、引入jquery or zepto

考虑到 jquery 和 zepto 有一定需求。 所以mip也为使用它们提供了异步引入的方式。

引入方式:

define(function(require){

var $ = require('jquery');

// or

var $ = require('zepto');

});

时间: 2024-10-26 02:41:11

MIP开发辅助工具 MIP模块介绍的相关文章

十个好用的iOS开发辅助工具与资源

「工欲善其事,必先利其器」为了开发出更好.更有创意又高质感的 iOS 应用程式,方便又大腕的辅助工具以及免费资源是绝对少不了的!这边让我们来介绍一些常用又简单的免费小工具吧. 1. Resizer 将 Retina 使用的图档(档名为 @2x 或 -hd 的图档)快速且完美地产生普通屏幕的图档尺寸. 2. LifeView 透过 Wifi 使用 iPhone 或是 iPad 直接预览电脑画面,方便检视图片在 Retina 屏幕中的效果. 3. Icon Viewer 线上快速预览你精心製作的 A

微信小程序购物商城系统开发系列-工具篇的介绍_javascript技巧

微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将给予微信小程序进行研发.基于对它的敬畏以及便于大家快速上手,特整理微信小程序商城开发系列,未来将持续增加微信小程序技术文章,让大家可全面了解如何快速开发微信小程序商城. 本篇文章主要介绍微信小程序官方提供的开发工具,俗话说:欲工善其身,必先利其器. 小程序开发文档地址https://mp.weixi

【爱心奉送】VS.NET 最佳开发辅助工具 CodeRush & Refactor Pro

问题描述 DeveloperExpress的CodeRushforVisualStudio.NET为MSVS.NET编程开发的辅助插件工具,它许多十分有用的智能化工具可大大地提高你编程的效率:帮你快速找到你想要到的地方,性能扩展的剪贴板工具,常用程序模板的使用,变量名等的提示和自动输入,等等.DeveloperExpress的RefactorPro是为VS.net编程开发的一套组件,这是一个代码重构工具,能在不改变结果的情况下,使算法更简易,快捷.在不改变代码原始执行结果的情况下对原有代码进行小

开发辅助工具--Subversion安装、配置与使用

一.为什么要进行代码控制 在软件开发的过程中,经常因为程序代码版本的不统一而导致重新开发,或者在多人开发的项目中, 多人共同修改了同一个公共代码文件而导致的相互复盖的问题,诸如此类的问题还有很多,下面我们就来 举一个例子. 比如说UserA和UserB各自为自己的需求需要在公共代码文件CommonFilesA增加自己的代码段,修改完 后都要把自己的代码合并到项目经理那里去,结果UserA修改了文件,UserB也修改了文件,合并的时候 UserA把文件拷贝了过去,UserB在UserA后把文件也拷

MIP教程大全 百度MIP使用教程

新手指南 完整 DEMO 什么是 MIP MIP 加速原理 开发规范 MIP HTML规范 MIP 校验规则 MIP Cache 规范 组件 开发规范 Canonical 使用规范 组件说明 组件概述 组件布局 内置组件 mip-carousel 多图轮播 mip-iframe mip-img 图片 mip-pix 统计 mip-video 视频 个性化组件 mip-accordion 折叠节点 mip-anim 动图 mip-appdl 下载 mip-audio 音频播放 mip-filter

介绍作为iBatis辅助工具的iBator的使用方法

目前从实际应用来看,ORM的老大自然是Hibernate,可是iBatis因为相对比 较直观.学习曲线相对较低,因而也赢得了不少用户的青睐. 本文主要介绍作为iBatis辅助工具的iBator的使用方法. iBator是一个iBatis相关代码的自动生成工具. 1.安装iBator的插件 在Eclipse中,使用添加站点的方法,输入网址 http://ibatis.apache.org/tools/ibator,进行iBator的安装. 2.建议不要直接在使用iBatis的项目里直接使用iBat

Linr PS toolkit(Photoshop开发人员辅助工具)

来自(vickey)的肖软件~ github地址:https://github.com/Linrstudio/LinrPSToolkit  Linr PS toolkit(Photoshop开发人员辅助工具) 一键导图:快速输出选区为Web所用格式;若当前图层被锁定则只输出当前图层的当前选区;  快速获取信息:快速获取图像选区尺寸(若无选区则获取图像完整尺寸); 快速获取前景色.背景色.边框设置; 生成CSS:当前图层为文本图层时获取文本样式并生成CSS;并将每个空格或换行符相间的文本转成超链接

[文档]百度云开发测试工具介绍

百度云开发测试工具介绍 董海峰   百度移动云计算测试部TC主席 temp_12051608208121.pdf

循序渐进开发WinForm项目(6)--开发使用混合式Winform模块

1.Winform数据访问模式定义 传统的Winform程序模块:用于传统的数据库通讯获取数据,这种方式获取数据,方便快捷,可以用于常规的业务系统的场景,用于单机版软件或者基于局域网内的业务系统软件. WCF的Winform程序模块:采用了WCF技术的分布式开发模式,系统能够通过远程的WCF服务获取数据,而不用直接和数据库相连,提高数据的安全性和可维护性,适用于互联网.局域网环境下的业务系统的搭建,是一种稳定.安全的框架应用. 混合式Winform程序模块:是指混合了传统数据访问和WCF数据访问