UNPKG

luy

Version:

所谓类```React```框架就是**和React用法一模一样**的框架。其实当初制造这个框架的目的是为了能更好的学习React内部结构,了解其原理而制作的玩具。但是随着框架的渐渐成长,代码越来越多,我还是决定将其发展下去. ![](https://github.com/215566435/Luy/blob/master/luy%20icon2.jpg?raw=true)

113 lines (102 loc) 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.styleHelper = styleHelper; exports.typeNumber = typeNumber; exports.isSameVnode = isSameVnode; exports.mapKeyToIndex = mapKeyToIndex; exports.isEventName = isEventName; exports.isEventNameLowerCase = isEventNameLowerCase; exports.extend = extend; var __type = Object.prototype.toString; var options = exports.options = { async: false, dirtyComponent: {} }; var numberMap = { //null undefined IE6-8这里会返回[object Object] "[object Boolean]": 2, "[object Number]": 3, "[object String]": 4, "[object Function]": 5, "[object Symbol]": 6, "[object Array]": 7 }; /** * 给数字类的加上'px' * @param {*} styleNumber */ var specialStyle = { zIndex: 1 }; function styleHelper(styleName, styleNumber) { if (typeNumber(styleNumber) === 3) { var style = specialStyle[styleName] ? styleNumber : styleNumber + 'px'; return style; } return styleNumber; } /** * undefined: 0, null: 1, boolean:2, number: 3, string: 4, function: 5, symbol:6, array: 7, object:8 * @param {any} data */ function typeNumber(data) { if (data === null) { return 1; } if (data === undefined) { return 0; } var a = numberMap[__type.call(data)]; return a || 8; } /** * 对比新旧Vnode是否一样 * @param {Vnode} pre * @param {Vnode} next */ function isSameVnode(pre, next) { if (pre.type === next.type && pre.key === next.key) { return true; } return false; } /** * 将节点的key放入map中 * * @param {Vnode} old */ function mapKeyToIndex(old) { var hascode = {}; old.forEach(function (el, index) { if (el.key) { hascode[el.key] = index; } }); return hascode; } /** * 判定否为与事件相关 * * @param {any} name * @returns */ function isEventName(name) { return (/^on[A-Z]/.test(name) ); } function isEventNameLowerCase(name) { return (/^on[a-z]/.test(name) ); } /** * 展开对象 * @param {*} obj * @param {*} props */ function extend(obj, props) { for (var i in props) { obj[i] = props[i]; }return obj; }