这是我参与「第四届青训营」笔记创作活动的的第8天。
这是我参与「第四届青训营」笔记创作活动的的第8天。在实现低代码平台的过程中,我遇到了许多问题,在此分为三篇进行总结。本篇主要记录一些有用的方法和莫名其妙的报错,技术栈是Vue3 + Vite3.0 + TypeScript。
JavaScript:怎么判断NaN?
判断NaN不能用==、!==这些,而是要isNaN():
if (isNaN(someObject.someValue)) ...
或者更现代的Number.isNaN
if (Number.isNaN(someObject.someValue)) ...
Anything that is not
NaNreturnsfalse. Strings,null,undefined, booleans - they'll all returnfalsefromNumber.isNaN()or plainisNaN(). The function does not test if something "isn't a number", but rather if it "is NaN" which is a specific invalid number value, in practice. To test if something is not a number, dotypeof something !== "number" || isNaN(something)
详见链接
Vue:TransitionGroup
列表过度、进入离开过渡、状态过度,都是非常常用的动画过度,Vue已经内置这三种动画,而且很不错。
详细可见链接
TypeScript:e.target.dataset报错
这次还是在这位大神的blog下找到了相关信息:Borislav Hadzhiev
当然了这个是直接的答案:链接
Why Does the
EventTargetType Not Inherit FromElementType? The reason this is the case is simply because all event targets might not be HTML elements. For example the event target can be also beXMLHttpRequest,FileReader,AudioNode,AudioContext, etc.
一个是声明为HtmlDivElement、Element(看具体情况,我感觉细一点好),一个是给函数参数断言一下类型(as)
Vue3:数组响应式问题 - reactive定义的数组无反应
答案参考链接:vue3使用reactive包裹数组如何正确赋值
想起来了,数组不能直接reactive,至少外面得包一层对象,要么就用ref,不过要加个value。一个加个属性,一个加value,两个方案半斤八两,直接ref算了
后来又测试过,无论如何Vue都监测不到push、splice对数组的改变,只有直接赋值“=”改变指针了才会响应布局。
Vite3:vite build失败/Rollup失败
答案:Vite3需要Node 14.18+/16+,用nvm换了16.16.0之后好了
- 记得开管理员模式的cmd
至于后面那个,Rollup,其实既不是vue的问题也不是vite的问题,而是img标签的src属性有错:
去掉src即可
TypeScript:Cannot use import statement outside a module
这是因为script没写上type=”module”,而index.html引入的是模块化的ts文件
Vue3:”Order Matters” - #app挂载失败
原因在于标签顺序,要把script放在body后面
跟顺序没关系,可能是Vue修复这个bug了。
原因是没写id为app的div标签,这下知道“#app”是什么意思了吧,是选择器。
刚刚试过,script甚至丢到body前面去都是没问题的。
Vite:resolve一个.umd.js,里面有process,但是报process is not defined
国内找到了一个答案:CSDN
当然了,也是参考Github Issues的。
另外,可见onLoad函数是读取完成,resolve是解析完成,其顺序如下: