vue中如何引入html静态页面

 更新时间:2023年01月16日 08:47:52   作者:~犇犇~  
这篇文章主要介绍了vue中如何引入html静态页面,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue中引入html静态页面

功能:系统中需增加帮助中心页面,由于页面较长,需要实现锚点定位跳转。

1、开始用的路由方式,首先在router文件夹index.js里面配置静态路由,代码如下

{
		path: '/help',
		component: () => import('@/page/help'),
		hidden: true,
	}
 
 
//页面代码
<div class="top_help" @click="jumpTo('/help')">帮助中心</div>
 
jumpTo(url){
      this.$router.push({path:url})
}

2、给页面标签加锚点,代码如下,发现锚点实现了,可是页面路由变了,比如点击标题2时,页面路由变成http://localhost:8081/#/two,再刷新页面时会找不到该页面。

<ul class="help_list" >
         <li :class="n==1?'active':''" @click="n=1"><a href="#one" rel="external nofollow" ><span>标题1</span></a></li>
         <li :class="n==2?'active':''" @click="n=2"><a href="#two" rel="external nofollow" ><span>标题2</span>
            <dl>
               <dd
               v-for="(item, index) in contractList"
               :key="index"
               :class="m==index?'now':''" @click="m=index"><a :href="`#two${index+1}`" rel="external nofollow" >{{item}}</a></dd>
            </dl>
         </a>
         </li>
 </ul>
 
<div class="help_next" id="one">
      <div class="help_box" v-show="n==1" >
        <div class="help_tit"><img src="@/assets/images/help/tit_1.png"></div>
        <div class="help_img help_martop">
          <img src="@/assets/images/help/tab1_bg.png">
        </div>
      </div>
    </div>
    <div class="help_next" id="two">
      <div class="help_box" v-show="n==2">
        <div class="help_tit"><img src="@/assets/images/help/tit_2.png"></div>
        <div class="help_img help_martop">
          <p id="two1"><img src="@/assets/images/help/tab2_1.png"></p>
          <p id="two2"><img src="@/assets/images/help/tab2_2.png"></p>
          <p id="two3"><img src="@/assets/images/help/tab2_3.png"></p>
          <p id="two4"><img src="@/assets/images/help/tab2_4.png"></p>
        </div>
      </div>
      </div>
    </div>
 
data(){
    return {
      n:1,
      m:0,
      contractList:['标题1','标题2','标题3','标题4'],
    }
  },

换种方式用监听滚动事件实现动态锚点,获取需要滚动的距离,可能个人技术有限,最终也没有实现。so,用vue页面不是那么的好,网上搜了一些方法也没有实现,由于时间问题,就放弃这种方法了。再者帮助说明,需要打开新的标签页才行,最后就用html来做。

3、在static里面新增index.html页面,新建css,images,js文件夹,

4、 在vue页面写以下代码,跳转到html页面

<div class="top_help"><a href="../../../../static/index.html" rel="external nofollow"  target="_blank">帮助中心</a></div>

5、发版到测试环境,发现图片和样式无法加载,需要把图片和样式路径修改,

../css/index.css改成/static/css/index.css

<link rel="stylesheet" href="/static/css/index.css" rel="external nofollow" >
<script type="text/javascript" src="/static/js/jquery.min.js"></script>
 
<body>
    <div class="help_bg" ref="box">
      <div class="help_topbg"><img src="/static/images/topbg.png"></div>
    </div>
</body>

6、webpack中config配置文件

// copy custom static assets
    new CopyWebpackPlugin([
      {
        from: path.resolve(__dirname, '../static'),
        to: config.build.assetsSubDirectory,
        ignore: ['.*']
      }
    ])

5、点击就可以跳转新的页面,并且锚点问题也解决了,顺带贴个点击菜单,给菜单加当前样式

$(document).ready(function(){
      $(".help_list .yiji").each(function(){
        $(this).click(function(){
          $(".help_list .yiji").parent().removeClass("active");
          $(this).parent().addClass("active");
        });
      });
});

vue中引入html静态页面的一些问题

在项目中追加模块时遇到了一些需求,追加模块的模型做好了,但是将模型转换成真正的页面代码需要一段时间,而客户需要现在项目里看到静态效果,就需要用到一些方法将vue引入静态页面。

1.最直接的方法就是在vue中嵌入html文件

通过iframe进行引入,如下图

 在router中的index.js进行设置路由跳转(文件名为outfall.vue)

export default new Router({
  routes:[
    {
      path:'/outfall', //路由路劲
      name:'outfall',  //名称
      component:outFall    //跳转组件名
    }
  ]
})

然后通过click方式进行引入跳转

<el-button type="primary" @click="this.$router.replace("/outfall")"></ek-button>

2.第二种方法window.open(url)

第一种方法虽然简单快捷还不容易出错,但有限制,如果是在组件内点击跳转,会受到父组件的影响(容易变成真实页面内的某一父元素框内嵌套了整个静态页面)。往往有时候,需要再点击后,将整个页面替换成静态页面,这时,window.open就发挥作用

以下内容为网络转载

(1)语法部分:

window.open([URL], [窗口名称], [参数字符串])

(2)参数说明:

  ① URL:可选参数,在窗口中要显示网页的网址或路径。如果省略这个参数,或者它的值是空字符串,那么窗口就不显示任何文档。

  ② 窗口名称:可选参数,被打开窗口的名称。

1.该名称由字母、数字和下划线字符组成。

2."_top"、"_blank"、"_selft"具有特殊意义的名称。

  • _blank:在新窗口显示目标网页
  • _self:在当前窗口显示目标网页
  • _top:框架网页中在上部窗口中显示目标网页

3.相同 name 的窗口只能创建一个,要想创建多个窗口则 name 不能相同。

4.name 不能包含有空格。

  ③ 参数字符串:可选参数,设置窗口参数,各参数用逗号隔开。

参数表:

解决方法:

(1)将需要跳转的静态html页面文件放入到public中去(必须放到静态文件目录下,否则会被webpack解码导致出错)

注意!如果此静态页面含有css和js文件,要打包放进同一个新建文件夹内,路径记得要修改

(2)在所需进行点击跳转的地方设置跳转即可

<el-button type="primary" @click="window.open('/outfall/outfall.html','_self')"></ek-button>

注意点:当你在输入路径时,用vscode会自动帮你列出下一个目录,但如果你跟他一个个往下选择的化,会导致跳转404报错

原因是,vue封装时初始路径默认为public,所以不用加/public。

此方法问题也有很多,比如跳转后,完全变成静态页面,想要后退只有点击浏览器的后退,没有别的操作方法,如果有大神会在原型静态文件进行修改,或者有更好的引入方法,请留言!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 前端面试之vue2和vue3的区别有哪些

    前端面试之vue2和vue3的区别有哪些

    这篇文章主要为大家介绍了前端面试之vue2和vue3的区别有哪些,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • vue-devtools的安装和使用步骤详解

    vue-devtools的安装和使用步骤详解

    在本篇文章中小编给大家整理的是一篇关于vue-devtools安装使用的相关知识点内容,有需要的朋友们可以学习下。
    2019-10-10
  • vue实现图片上传到后台

    vue实现图片上传到后台

    这篇文章主要为大家详细介绍了vue实现图片上传到后台,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • vue-editor-bridge报错的解决方案

    vue-editor-bridge报错的解决方案

    这篇文章主要介绍了vue-editor-bridge报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue实现动态查询规则生成组件

    Vue实现动态查询规则生成组件

    今天我们来给大家介绍下在Vue开发中我们经常会碰到的一种需求场景,本文主要介绍了Vue动态查询规则生成组件,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • vue中的 $slot 获取插槽的节点实例

    vue中的 $slot 获取插槽的节点实例

    今天小编就为大家分享一篇vue中的 $slot 获取插槽的节点实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Vue数据代理的实现流程逐步讲解

    Vue数据代理的实现流程逐步讲解

    通过一个对象代理对另一个对象中的属性的操作(读/写),就是数据代理。要搞懂Vue数据代理这个概念,那我们就要从Object.defineProperty()入手,Object.defineProperty()是Vue中比较底层的一个方法,在数据劫持,数据代理以及计算属性等地方都或多或少的用到了本函数
    2023-01-01
  • vue使用json最简单的两种方式分享

    vue使用json最简单的两种方式分享

    这篇文章主要介绍了vue使用json最简单的两种方式分享,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Vue响应式原理深入解析及注意事项

    Vue响应式原理深入解析及注意事项

    Vue 最显著的一个功能是响应系统 —— 模型只是普通对象,修改它则更新视图。下面这篇文章主要给大家深入讲解了关于Vue的响应式原理,以及Vue响应式的一些注意事项,需要的朋友下面随着小编来一起学习学习吧。
    2017-12-12
  • Vue3中多个弹窗同时出现的解决思路

    Vue3中多个弹窗同时出现的解决思路

    这篇文章主要介绍了Vue3中多个弹窗同时出现的解决思路,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02

最新评论