Ⅰ vue引入静态文件
vue-cli3静态资源配置静态资源可以通过两种方式进行处理:
在javaScript被导入或在template/CSS中通过相对路径被引用。这类引用会被webpack处理。
放置在public目录下或通过绝对路径被引用。这类资源将会直接被拷贝,而不会经过webpack的处理。
使用相对路径引入的静态资源文件,会被webpack处理解析为模块依赖。例如,在imgsrc="./logo.png"和background:url(./logo.png),以及CSS@import"./logo.png"是相对的资源路径。在vue2.x版本类似assets文件夹。
2.public文件夹
public文件夹下的文件并不会被Webpack处理:它们会直接被复制到最终的打包目录(文件名需指定)下。必须使用绝对路径引用这些文件,简单说就是用来存放万年不变的文件。
在vue2.x版本类似static/文件夹。
/public/logo.png
参考:
public/index.html文件是一个会被html-webpack-plugin处理的模板。构建中,各种资源路径会被注入解析。可以使用lodashtemplate语法插入内容。
除了被html-webpack-plugin暴露的默认值之外,所有客户端环境变量也可以直接使用。例如,BASE_URL的用法:
vue-cli3pubic静态资源引入
静态资源文件放入public文件夹下(类似cli2里面的static文件夹),打包时不会被wenpack处理,输出文件在dist文件夹下。
在index.html中通过
scriptsrc="%=BASE_URL%clipboard.min.js"/script
参考
linkrel="icon"href="%=BASE_URL%favicon.ico"
可以看到项目中ico图标就是通过这种方式引入!!
public文件夹下文件是不被处理的,所以我们可以创建一个config.js文件
config.js
在index.html中引入
使用
遇到的问题,修改打包后的config.js文件,值不更新
排查方式:
1.先确认config.js文件是否更新,浏览器的缓存可能会影响
2.可以修改js文件名,比如加上hash值,config.hashxxx.js,在index.html引入的地方也要对应修改
综上
本地测试ok
vue怎么使用工具类中的static方法vue怎么使用工具类中的static方法
在Vue项目中使用工具类中的静态方法,需要先引入该工具类文件,然后通过工具类名称来调用静态方法。
例如,有一个工具类文件utils.js,其中包含一个静态方法formatDate:
```
exportdefaultclassUtils{
staticformatDate(date){
//somecodehere
}
}
```
在Vue组件中引入该工具类文件,并调用静态方法formatDate:
```
template
div
p{{formattedDate}}/p
/div
/template
script
importUtilsfrom'@/utils.js'
exportdefault{
data(){
return{
date:newDate()
}
},
computed:{
formattedDate(){
returnUtils.formatDate(this.date)
}
}
}
/script
```
在该Vue组件中,我们首先引入了utils.js文件,并在computed属性中定义了一个formattedDate计算属性,该计算属性调用了工具类Utils的静态方法formatDate来格式化日期。
Ⅱ vue外部js动态加载
vue加载远程(网络)jsvue项目中有时候会遇到加载远程(网络)js的情况,常用的方法有以下两种:
以加载在线的cesium为例
在组件中可以通过window.Cesium来获取加载的js,示例如下:
在main.js里注册组件
注意:注册组件一定要在newVue之前
在组件中使用:
这样使用比较灵活还能在加载完成和加载失败时做一些操作。
vue项目中插入外部js
script1.onload要在页面加载js之前写
···
constcenterRotationAd=document.getElementById("centerRotationAd");
···
VUE中如何动态编译js需求:动态获取一段字符串类型的js脚本,动态编译它并且可以完美在vue中运行与之交互。
实现:动态编译js的方式有eval和newfunction
简单例子:
eval:
newfunction:
显然后者更利于扩展,详细了解区别可以参考链接内容:
要注意使用newFunction,在vue环境中直接赋值的方式函数作用域与赋值vue结构对象不同:
如何在.vue文件中引入外部jsVue的createElement方法,简单的封装一个组件解决问题。
解决方法
第一版代码(直接在操作Dom)如下:
exportdefault{
mounted(){
consts=document.createElement('script');
s.type='text/javascript'
s.src=''
document.body.appendChild(s);
},
}
使用createElement方法:
exportdefault{
components:{
'dingtalk':{
render(createElement){
returncreateElement(
'script',
{
attrs:{
type:'text/javascript',
src:'',
},
},
);
},
},
},
}
//使用在页面中调用
终极方案
通过封装一个组件remote-js实现:
exportdefault{
components:{
'remote-js':{
render(createElement){
returncreateElement('script',{attrs:{type:'text/javascript',src:this.src}});
},
props:{
src:{type:String,required:true},
},
},
},
}
使用方法:
remote-jssrc=""remote-js