在开发过程中不可避免的要引用其他第三方 JavaScript 库。虽然通过直接引用可以调用库的类和方法,但是却无法通过 TypeScript 的严格类型检查机制。会提示这种的错误
无法找到模块“@iget/pd-menu-frame”的声明文件。“/Users/liyanxin/alarm_infomer/node_modules/@iget/pd-menu-frame/lib/pd-menu-frame.js”隐式拥有 “any” 类型。 尝试使用 npm i --save-dev @types/iget__pd-menu-frame
(如果存在),或者添加一个包含 declare module '@iget/pd-menu-frame';
的新声明(.d.ts)文件
在 types.d.ts
解决办法 TypeScript开发教程
报错 类型“NodeRequire”上不存在属性“context”
npm i @types/webpack-env -D
实现页面刷新
1 . 用vue-router重新路由到当前页面,页面是不进行刷新的
2 . 采用window.reload(),或者router.go(0)刷新时,整个浏览器进行了重新加载,闪烁,体验不好
控制路由的组件中写一个函数(使用v-if控制router-view的显示隐藏,这里的原理不作赘述),然后把这个函数传递给后代,然后在后代组件中调用这个方法即可刷新路由
//app.vue
<router-view v-if="isShowRouter"/>
export default {
name: 'App',
provide(){
return{
reload:this.reload
}
},
data(){
return{
isShowRouter:true,
}
},
methods:{
reload(){
this.isShowRouter = false;
this.$nextTick(()=>{
this.isShowRouter = true;
})
}
}
}
有遇到icon消失的问题 貌似是静态路径的原因
我把css上传到cdn又引了一遍 …
element的弹框会双倍弹出 感谢大佬的文章
vue处理el-message重复弹出问题
import { Message } from 'element-ui'
let messageDom = null
const resetMessage = (options) => {
if (messageDom) messageDom.close() // 判断弹窗是否已存在,若存在则关闭
messageDom = Message(options)
}
const typeArr = ['success', 'error', 'warning', 'info']
typeArr.forEach(type => {
resetMessage[type] = options => {
if (typeof options === 'string') options = { message: options }
options.type = type
return resetMessage(options)
}
})
export const message = resetMessage
// ----- main.js -----
import { message } from '@/utils/resetMessage' // 引入重写的js文件
Vue.use(ElementUI)
Vue.prototype.$message = message
// 必须放置在Vue.use(ElementUI)之后