一些js的方法,本来想直接在模板上用,然后。。。
- 正则 要getRegExp,不能有/
比如
function kebabCase(str) {
return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
}
就不行,得替换:
function kebabCase(str) {
var newWord = str
.replace(getRegExp("[A-Z]", 'g'), function (i) {
return '-' + i;
})
.toLowerCase()
.replace(getRegExp("^-"), '');
return newWord;
}
- 不能用for in , 不能Object.keys,
然后看vant咋用的
它定义了一个objet.wxs
var REGEXP = getRegExp('{|}|"', 'g');
function keys(obj) {
return JSON.stringify(obj)
.replace(REGEXP, '')
.split(',')
.map(function(item) {
return item.split(':')[0];
});
}
module.exports.keys = keys;
使用: var keys = object.keys(styles); 就可以了
更新:
注意 ⚠️ ⚠️ ⚠️ ⚠️ 然后发现vant的这个也不靠谱,如果你的styles里面有{color:‘rgb(xx,xx,xxx)’}就不行了,因为它的逻辑‘split(‘,’)’…
改写了下objet.wxs:
var REGEXP = getRegExp('{|}|"', 'g');
function keys(obj) {
var str = JSON.stringify(obj).replace(REGEXP, '');
var parts = str.split('(');
var resultStr = '';
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
var rightIndex = part.indexOf(')');
if (rightIndex!== -1) {
resultStr += part.slice(rightIndex + 1);
} else {
resultStr += part;
}
}
return resultStr.split(',')
.map(function (item) {
return item.split(':')[0];
});
}
module.exports.keys = keys;
- 常见就,啥const let 啥不用啦,还有一些写习惯了的错误示范啦
// module.exports = {addPxIfNeeded,getStyle};
module.exports = {
addPxIfNeeded: addPxIfNeeded,
getStyle: getStyle
};
结论:垃圾