html iframe 相对路径,vue中 iframe 引入 本地静态html文件,vue-cli2与vue-cli3引用的差异。...

引言

在写个人网站的时候,需要用到 iframe 引用本地静态的 html 文件,发现引用方式的一些差异,在此分享一下。Vue-cli 2.0 构建的项目引用

在vue-cli 2.0 构建的项目中,如果要使用 iframe 引用本地的静态 html 文件,静态文件需要放置在和 src 同级的文件加夹 static 中。

如下图:

caf92c9413f059354a78e8147a91aeec.png

在使用 iframe 的地方直接写 “相对路径” 就行,如下图:

558a9d84fd3f0fbe0455753977b3416c.png

这里还是需要解释一下,这里的路径,在打包后不会变化。都是根据打包后的路径查找静态文件,因此上方用 “相对路径” 描述并不准确,而是打包后的 “相对路径”,看下图就明白了。

这是 打包后的文件层级关系

5b20d22ae642c665f0b1a27cbfb14ea9.png

这里我写了很多 ../../../,最后发现真实的引用路径还是 http://localhost:8080/static/blog.html,因为向上查找已经到根目录了,所以不管写多少个../,实际路径还是http://localhost:8080/static/blog.html,因此 下方路径直接写 ./static/blog.html 也是一样的,根据上方打包后的层级关系对照一下就明白了。

f6a88b50d7fa077b92942b4e4a028bb8.pngVue-cli 3.0 构建的项目引用

在Vue-cli 3.0 构建的项目中使用 iframe 引用本地静态 html 文件,和 2.0基本一样,唯一的区别在于,静态html 文件不是放置在 src 同级的文件夹中,而是放在 public 文件夹下。

如下图:

86f7cfdb1014c88da9e71bbf7a1029c9.png

当然,也可以不用放在 static 文件夹下。public 文件下的文件(包括文件夹),打包后的层级不会发生变化,因此可以自定义名称。

不能改变的是,只能放在public 文件夹下。

其它注意点与Vue-cli 2.0 构建的项目相同,就不一一赘述。

那有没有随意放在其它层级还能使用的方法,而且不需要考虑Vue-cli 2.0 还是 3.0 构建的项目,其实也是有的。

不考虑项目构建版本的方法

1.如果你是webpack工程师,你就自己配置打包方式。

好吧,这是废话

2.使用require() 引入

html 文件我放在和 vue 文件同级,如下:

bad277d1bdcd046eda61c048d5cd0f65.png

Home.vue 中这样写

switch
复制代码export default {  name: "Home",  data() {return {      ifIframe: true,      iframeData: require("./blog.html")      // src: "./static/blog.html"};

},  mounted() {this.$refs.iframe.contentDocument.documentElement.innerHTML = this.iframeData;

},  methods: {clickHandle() {      // 1.通过DOM操作切换数据源信息  // 因可能在iframe内部点击了外链信息,src会发生改变,可能就不属于同源。不同源外部就无法操作iframe内部DOM,因此使用v-if 删除DOM后再显示清空src信息  // 也可以使用其他方式清除,比如用v-bind 绑定src  // this.ifIframe = false;  this.$refs.iframe.removeAttribute("src");      this.$nextTick(() => {// this.ifIframe = true;this.$nextTick(() => {          this.$refs.iframe.contentDocument.documentElement.innerHTML = require("./second.html");

});

});      // 2.切换路径促使切换数据  // this.src = "./static/second.html";}

}

};复制代码

上面就是通过 require() 获取到文件,再给 iframe 的 contentDocument.documentElement.innerHTML 赋值。

这种方式有一点问题就是,不同源的 iframe 无法操作内部 Dom 信息,所以可以使用 removeAttribute  删除 src 再赋值,上方code 中也有描述。

使用这种方式还需要安装html-loader 插件,不然require() 引入的文件无法解析。

使用命令安装:npm i html-loader --save-dev复制代码

再在 vue.config.js 配置,没有这个文件的就自己新建一个,放在最外层。module.exports = {  chainWebpack: config => {

config.module

.rule("html")

.test(/\.html$/)

.use("html-loader")

.loader("html-loader");

}

};复制代码总结

好了,以上就是在vue 项目使用iframe 引用 本地静态 html 文件的方法。

为了大家更加实际的体会,上方的两个例子写了一个demo 上传到github上了,上面看不懂的,可以直接下载例子参考。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: vue-cli3 vue.config.js 文件用于配置项目的 webpack 构建环境。可以在该文件进行如下配置: - 修改 webpack 的配置项 - 配置 devServer - 配置代理 - 使用插件 示例: ``` module.exports = { devServer: { port: 8080, proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true } } }, configureWebpack: { plugins: [ new MyAwesomeWebpackPlugin() ] } } ``` 其,configureWebpack 配置项可以修改 webpack 的配置项,devServer 配置项可以配置开发服务器的相关选项,proxy 配置项可以配置代理。 注意:vue.config.js 文件不是必须的,如果项目没有该文件,则使用默认配置。 ### 回答2: Vue CLI 3是Vue.js的一个脚手架工具,用于快速构建Vue项目。vue.config.js是一个配置文件,它在项目构建过程被调用,用于配置Webpack和Vue CLI的一些选项。 vue.config.js配置文件可以设置很多选项,包括开发时代理、打包时的压缩和代码分割等等。下面是一些常用的选项: 1. publicPath publicPath是一个字符串,用于指定打包后的静态资源的路径。可以是相对路径或绝对路径,它的值会被Webpack在生成代码时加入到各个静态资源引用的URL。 2. outputDir outputDir是一个字符串,用于指定打包后的输出目录。默认值是"dist"。 3. devServer devServer是一个对象,用于配置开发服务器。其包括代理、端口号和自动打开浏览器等选项。可以用它来配置前后端联调、Mock服务等。 4. chainWebpack chainWebpack是一个函数,用于修改Webpack的配置。可以在其添加、删除、修改各种Webpack配置项。举个例子,我们可以通过chainWebpack来关闭ESLint验证: ``` chainWebpack: config => { config.module .rule('eslint') .use('eslint-loader') .tap(options => { options.emitWarning = false return options }) } ``` 5. configureWebpack configureWebpack是一个对象或函数,用于向Webpack配置添加内容。其包括Entry和Output等选项。 6. optimization optimization是一个对象,用于配置打包时的优化选项,比如代码压缩等。 7. css css是一个对象,用于配置CSS的选项。其包括分离CSS、压缩CSS、CSS的sourceMap等。 8. pluginOptions pluginOptions是一个对象,用于配置Vue CLI插件的选项。其包括ESLint、Stylelint、PWA等。我们可以通过它来关闭ESLint验证: ``` pluginOptions: { eslint: { enable: false } } ``` 除了上面提到的常用选项,vue.config.js还有很多其他配置项可供选择,具体可参考Vue CLI的官方文档。总的来说,vue.config.js是一个非常强大的工具,可以大大提高开发效率和优化打包结果。 ### 回答3: Vue.js是目前非常流行的前端框架之一,它的灵活性和易用性受到了广大开发者的欢迎。其最新的版本Vue-cli3,提供了更加方便快捷的开发模式,同时其强大的配置功能也是特别值得注意的。Vue-cli3vue.config.js文件包含着许多重要的配置选项,下面我们来逐一介绍一下。 1. publicPath publicPath选项可以指定发布路径,通过配置publicPath选项,可以将Vue应用的资源文件发布到指定的位置,这样就方便我们在多个环境部署Vue应用。例如,如果希望将Vue应用文件发布到“/my-app/”目录下,配置publicPath选项为“/my-app/”即可。 2. outputDir outputDir选项用于指定Vue应用的输出目录,通过配置outputDir选项,可以将Vue应用打包生成的文件输出到指定的目录下面。例如,如果希望将生成的文件输出到“/dist/”目录下,那么可以在vue.config.js文件配置outputDir选项为“dist”。 3. devServer devServer选项用于配置开发服务器,对于Vue应用的开发来说,它非常重要。通过配置devServer选项,可以定制开发服务器的端口、代理等信息,使我们在开发Vue应用时能够更加方便地进行调试和测试。 4. lintOnSave lintOnSave选项用于在保存代码时自动检查语法错误和格式错误,让我们在开发过程能够更加精细地把控代码质量。通过配置该选项,可以将Vue应用的代码自动规范,并保持统一的风格。 5. chainWebpack chainWebpack选项用于定制Webpack的配置,它可以让我们更加灵活地定制Vue应用的构建过程。通过配置该选项,可以添加自定义的Webpack插件,优化打包生成的文件等。 总之,Vue-cli3vue.config.js文件不仅提供了强大的配置功能,而且能够让我们更加方便地开发和部署Vue应用。掌握这些配置选项,能够让我们更加高效地进行Vue应用的开发和维护工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值