vue3项目中组件引入ts/原生js文件并调用其方法遇到的一些问题 | 您所在的位置:网站首页 › 原生js使用什么运行项目 › vue3项目中组件引入ts/原生js文件并调用其方法遇到的一些问题 |
基础不扎实呀。。。 question Q1Q2Q3 Q1首先是关于ts/js的模块化编程 例如一个slide.ts文件: // 省略一些代码...... // 模块 export function slideInit() { new Slide().init(); } // 非模块,当引入vue组件中使用(比如调用上面的slideInit方法)时候会报错 // error: Couldn't resolve component "default" at "/" new Slide().init();vue中使用: import { slideInit } from './slide';参考: JavaScript中的模块化编程:https://blog.csdn.net/tyxjolin/article/details/130462589 Q2参考:Vue中使用原生js创建DOM,元素样式不生效解决办法:https://blog.csdn.net/qq_45118905/article/details/126840908 在Vue项目中也会遇到需要动态创建DOM的情况,但是采用指定className的方式给创建的DOM元素指定样式不起作用,在调试界面能看到类名被解析,但是样式未加载。 measureTooltipElement = document.createElement('div') measureTooltipElement.className = "ol-tooltip ol-tooltip-measure"样式: .ol-tooltip { position: relative; background: rgba(0, 0, 0, 0.5); border-radius: 4px; color: white; padding: 4px 14px 4px 8px; opacity: 0.7; white-space: nowrap; font-size: 12px; } .ol-tooltip-measure { opacity: 1; font-weight: bold; }但是在页面渲染时却不生效: 参考了网上众多方法,有以下几种可能: Vue组件中样式Style中scoped导致样式局部生效,因为采用scoped每个类渲染后会有一个单独的data-v-xxxx编码格式,防止样式污染,去除即可。使用样式穿透,跳过scoped,这样就不用去除scoped造成全局样式污染。Vue2使用/deep/ className,Vue3使用:deep(className),此外还有>>>(可以尝试一下,我这里没有效果)。 // Vue3 :deep(.ol-tooltip) { position: relative; background: rgba(0, 0, 0, 0.5); border-radius: 4px; color: white; padding: 4px 14px 4px 8px; opacity: 0.7; white-space: nowrap; font-size: 12px; } :deep(.ol-tooltip-measure) { opacity: 1; font-weight: bold; } // Vue2 /deep/ .ol-tooltip { position: relative; background: rgba(0, 0, 0, 0.5); border-radius: 4px; color: white; padding: 4px 14px 4px 8px; opacity: 0.7; white-space: nowrap; font-size: 12px; } /deep/ .ol-tooltip-measure { opacity: 1; font-weight: bold; } 可能是类的优先级,在子类前加上父类,这里时动态创建的类,所以使用了也没效果。我解决的办法:重新创建一个CSS/SCSS样式文件,然后在Vue组件中引用该文件即可,将不生效的样式都放在该样式文件中,不需要再去除scoped和deep。 ... import { slideInit } from './slide'; onMounted(() => { slideInit(); }) ... // 加了scoped,局部的 @import url('./index.less'); // 全局(为了生成DOM的样式能生效专门将其css写在一个单独的css文件) @import url('./slide.less'); Q3项目一般打包的时候会处理文件hash 写的图片路径明明是这个,但项目运行起来却变成另一个,有些还自动转成base64 |
CopyRight 2018-2019 实验室设备网 版权所有 |