发布网友 发布时间:2024-10-02 06:56
共1个回答
热心网友 时间:2024-10-27 17:46
vue组件中怎么引入html文件1、HtmlPanel.vue文件
template?div??mu-circular-progress:size="40"v-if="loading"/??divv-html="html"/div?/div/templatestyle?/stylescript?exportdefault{??//使用时请使用:url.sync=""传值??props:{???url:{????required:true???}??},??data(){???return{????loading:false,????html:''???}??},??watch:{???url(value){????this.load(value)???}??},??mounted(){???this.load(this.url)??},??methods:{???load(url){????if(urlurl.length0){?????//加载中?????this.loading=true?????letparam={??????accept:'text/html,text/plain'?????}?????this.$http.get(url,param).then((response)={??????this.loading=false??????//处理HTML显示??????this.html=response.data?????}).catch(()={??????this.loading=false??????this.html='加载失败'?????})????}???}??}?}/script
htmlViewSample.vue
?
12345678910111213141516171819202122232425
template?div??v-html-panel:url.asyc="url1"/v-html-panel??v-html-panel:url.asyc="url2"/v-html-panel?/div/templatestylescoped?div{color:red}/stylescript?exportdefault{??data(){???return{????url1:'',????url2:''???}??},??mounted(){???this.url1=''???this.url2=''??},??methods:{??}?}
/script
2、效果图
3、注意事项:
直接使用axios处理的GET请求,需要处理跨域;
外部的css样式会作用到显示的html;
同时加载的外部html里的script也可能会执行,需要按需处理下;
外部HTML文件内部的相对路径将不会被自动识别,绝对路径可以。
vue-cli2组件内嵌HTML文件(如有错误,欢迎指正~~)
在Vue要使用文件上传,找到一个bootstrap编写好的demo,打算直接用,嵌入vue中。demo主要使用jquery和webuploader,jquery和webuploader引用是使用script引入的。要兼容现在的Vue项目。
实验一:
打算在Vue的组件里使用script引入demo里同样引入的文件,发现文件没有被引用进来。
实验二:
打算将script引入文件的语句写成字符串,然后将字符串赋值给Vue组件内的元素的innerHTML里,发现项目报错,原因是innerHTML不允许写入script的内容,百度上说可以使用jquery来实现,试了一下一样不可以。百度一下Vue如何内容HTML,网上说用v-html里面放HTML,然后发现会报同样的错误。
实验三:
前面嵌入HTML文件的内容都失败了,就打算直接嵌入整个HTML文件。可以使用iframe实现内嵌HTML文件,如"iframeframeborder=”no”style=”width:100%;height:500px;”src=”upload.html”ref=”iframe”/iframe",将upload.html文件和内嵌它的Vue文件放在同一个额文件夹下,运行,界面iframe内显示"GETNO/upload.html",打开浏览器调试器发现,upload.html它的读取位置是项目的根目录下,修改src使浏览器可以读到upload.html对应的位置。
项目打包发布:
在项目打包发布到服务器的时候发现,使用iframe内嵌的HTML文件报错,由于个人对webpack不熟悉,不知道upload.html有没有打包进去。webpack打包HTML文件,在webpack.prod.conf.js文件中的webpackConfig的pulgins中添加
????发现webpack打包文件的时候,会把upload.html拎出来放打包下的static文件夹下的upload文件夹,发布服务器的时候发现upload.html照样没有显示出来,进入打包后的upload.html中,upload.html引用js找不到,js应该没有打包进来或者打包进来路径变了。使用important在HTML中引用js文件,打包后发布到服务器还是一样的问题。想着用requirejs去加载HTML,看能不能把HTML和HTML引用的js文件正确打包,由于可以参考内容过少,无从下手。
????不打包内嵌HTML了,把upload.html及引用文件放在一个文件夹下,加到webpack打包出来的dist的static文件夹下,将webpack中打包?调用upload.html路径的js调用路径内容改为在dist对应的路径,发布到服务器上文件终于可以使用了。(现在才想到可以配置webpack将upload.html及引用文件从打包独立出来)。
后续:
????????项目从vue-cli2升级到vue-cli3,之前用的方式不适用了。
????????vue-cli3用iframe嵌入HTML,HTML要放在public的static文件夹下,在iframe的src调用中,直接写"static/upload.html"就可以了。相较于vue-cli2,内嵌的HTML打包后不用上面的笨办法了。
????????在内嵌的HTML页面,要求与后端的通讯要带上token,试着用js-cookie插件获取当前vue里的token,存入sessionStorage,再在内嵌的HTML页面获取sessionStorage,在本地运行是可以的,打包给后端部署后,在内嵌的HTML获取sessionStorage的值是null,不知道为什么。
????后面就在与后端通讯的js里使用jquery-cookie获取token,这个插件是基于jquery的,在引入该文件要先引入jquery
????uploader.js的请求添加请求头参数
vuev-html引入如何vue框架自身样式
如果要在Vue中引入Vue框架自身的样式,需要先使用npm或yarn安装Vue的官方样式库,安装命令为:npminstallvue-style-loader。然后,可以将对应的CSS文件引入HTML文件中即可。
vue在public里的index.html如何引入变量1、首先,打开public软件,点击插入。
2、其次,点击校对,选择公式,然后选择vue。
3、最后,引入index.html的变量字即可。
vue文件内嵌HTML文件iframe用法首先vue里面内嵌html文件必须存放在项目public文件夹下,可以和vue里面index.html同级如图所示:
我这里的draw_PLS.html存放的是内嵌的html,map.js则是HTML里面的js。
以我项目为例
1.首先在vue页面里面通过iframe的形式引用注意ref的值和name的值我这里保持一致了,接下来都会有用到。(注意src里面的路径要和项目的路径一致哦)
例:this.srcurl=''
2.通过声明一个iframes获取到iframe,然后添加一个name的属性,this.datavallist为我需要传递的数组,通过iframes.postMessage的方法进行传递。(cmd:'dian'用于做判断使用,可以不传)
3.在draw_PLS.html做如下操作
这样就可以获取到啦。
:有什么地方不懂的可以找我共同进步,写的不够好还请多多包涵。