项目技术问题归纳
vue问题
#(1)vouter的addRoutes方法---用户权限
//自定义添加路由方法,防止重复添加路由
#使用后
路由结构
const user = () => import('../views/user/list')
const routeArr = [
{
path: '/user/list',
name: '用户管理',
show: 'user',
component: user,
},
]
导航守卫
const commonUser = window.localStorage.getItem('menuList')
const commonUserRoute = routeArr.filter(function (page) {
return commonUser.includes(page.show)
})
router.addRoutes(commonUserRoute)
router.beforeEach((to, from, next) => {
if (to.name === null || to.name === '') {
Message.error('您无权访问该页面!')
next({ name: 'Error' })
} else {
next()
}
})
#(2)var that=this的使用
使用事项:
axios请求中this指向这个回调函数,可以在axios请求外面设置that=this,that就会指向这个自身实例
eg:methods:{
searchMusic(){
var that=this;
axios.get("http://xxxxx.com").then(
function(res){
that.mustlist=res.data.songs;//如果使用this就会代表这个axios回调函数
}
)
}
}
`可以使用箭头函数代替函数就不会出现在实例中this指向问题`
#(3)router和route的区别
#this.$router和this.$route的区别
1.this.$router是VueRouter实例方法,是全局路由的,可以使用this.$router.push()方法跳转路由,但会留下history记录,this.$router.replace()替换路由不会留下记录
方法:
$router.push
// 命名的路由
this.$router.push({ name: 'user', params: { userId: 123 }})
// 带查询参数,变成 /register?plan=123
this.$router.push({ path: 'register', query: { plan: '123' }})
$router.go
// 页面路由跳转 前进或者后退
this.$router.go(-1) // 后退
2.this.$route是当前路由,包含了当前 URL 解析得到的信息。包含当前的路径,参数,query对象等。
方法:
1.$route.path
字符串,对应当前路由的路径,总是解析为绝对路径,如 "/foo/bar"。
2.$route.params
一个 key/value 对象,包含了 动态片段 和 全匹配片段,
如果没有路由参数,就是一个空对象。
3.$route.query
一个 key/value 对象,表示 URL 查询参数。
#(4)/deep/和>>>
在style用scoped属性实现组件的私有化时,深层样式不生效使用/deep/和>>>
/deep/可以用于各种预处理器(/deep/在vue 3.0会报错,/deep/在vue 3.0会报错)
>>>只用于css,(scss,less,scss无法解析>>>)
echarts图表问题
#(1)echarts重绘问题
需要将数据清空,不然会在之前的图表后面追加图表数据绘图
#(2)
antdVue框架问题
#(1)slot/slot-scope插槽问题
#(2)v-decorator表单校验
用于表单标签里面
v-decorator=[
'name',
{
rules:[//设置校验规则
{
initialValue: "",//初始化值,也就是默认值,可不写
required:true,//必须
message:'xxxxxx',//未输入提示信息,
pattern:/^ &/, //正则规则,可选
}
]
}
]
在script中
data(){
form:this.$form.createForm(this)//表单创建后可以使用form方法
},
methods:{
sumbit(){
this.form.validateFields((err, values) => {//获取输入表单的数据
if (!err) {
console.log('Received values of form: ', values);
}
});
}
}
this.form.resetFields() 重置一组输入控件的值(为 initialValue)与状态,如不传入参数,则重置所有组件
#(3)
在 中使用实现自定义对话框页脚内容
eg:
Return
Submit
Some contents...
Some contents...
#(4)
若一个组件只用于展示数据,所有动态数据都从父组件传递进来(只有props),内部没有逻辑交互(无methods方法、也没有mounted等任何生命周期处理函数),没有状态修改(无data),则推荐使用函数式组件来提升vue的性能
#(5)表格中配置
如果只配置则需要在columns列数据中设置slots属性
eg:
slots: { title: 'hhhh' },
#(6)中html-type="submit"设置
使用type="submit"会跟设置antd按钮样式类型冲突,而html-type就可以设置原生按钮类型就可以触发form表单提交事件
#(7)$t('')用于文件字符容器来储存
#(8)fieldDecoratorOptions与v-deocorator表单校验的区别
fieldDecoratorOptions用于双向绑定,单页面template用v-decroator
fieldDecoratorOptions官方文档不再使用,推荐v-decorator
#(9)与div中的v-for
eg:
{{item}}
渲染生成后:为3个同级排列div
{{item}}
渲染生成为:3个div中嵌套一个div渲染内容
#(10) 模糊查询
#(11) axios.$put请求
请求修改数据
#(12) 的使用
是为了让超链接去执行js函数,点击此超链接时,页面不会进行任何操作,防止跳到其他页面
点击后,页面不动,只打开连接
eg:
看不清换一张?
#(13)antd中选择器select的filterOption属性
是否根据输入项进行筛选。当其为一个函数时,会接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 false
#(14)window.navigator.msSaveblob() 和 window.URL.createObjectURL()
方法允许用户在客户端上保存文件,方法如同从 Internet 下载文件
Blob 构造函数,接受两个参数。第一个参数是一个包含实际数据的数组,第二个参数是数据的类型,这两个参数都不是必需的
URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象
eg:
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([data]), fileName + '.xls')
} else {
let url = window.URL.createObjectURL(new Blob([data]))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName + '.xls')
document.body.appendChild(link)
link.click()
document.body.removeChild(link) //下载完成移除元素
window.URL.revokeObjectURL(url) //释放掉blob对象
}
Node安装问题
(1)npm install报错------安装node版本问题推荐使用nvm切换版本
海图经纬度转换
EPSG:4326(WGS84)用于GPS底图,适合用来存放数据
EPSG:3857(伪墨卡托),适合用来显示数据
项目使用3857底图需要转换4326底图
import { transform, fromLonLat, transformExtent } from "ol/proj"; //坐标系转换
nvm控node版本
nvm是管理node版本的工具,一个电脑中可以安装多个node版本
#(1)下载:
*****下载前需要卸载本机的node环境
进入官网--->
https://github.com/coreybutler/nvm-windows/releases
选择nvm-setup.zip压缩包下载
#(2)安装
安装文件夹位置(非C盘)
界面-->
同意协议--->
选择nvm安装路径(非C盘)--->
node安装位置(在nvm里)--->
点击安装按钮---<
配置-->(nvm安装路径下setting.txt)
nvm node_mirror https://npm.taobao.org/mirrors/node/
nvm npm_mirror https://npm.taobao.org/mirrors/npm/
#(3)nvm指令
nvm ls 查看已经安装的所有nodejs版本
nvm install 版本号,可安装指定版本的nodejs
nvm use 版本号,即可切换到指定版本
nvm uninstall 版本号,卸载指定版本