官方服务微信:dat818 购买与出租对接

SEO搜索引擎优化详解:提升网站关键词排名与产品曝光度的关键策略

3万

主题

2

回帖

10万

积分

管理员

积分
104820
发表于 2024-12-22 10:33:16 | 显示全部楼层 |阅读模式
    vue SEO解决方案什么是SEO

    搜索引擎优化,提高网站搜索关键词排名和公司产品的曝光度。

    搜索引擎的原理是从meta标签中读取内容,从HTML标签(h1-h6,,em等标签)中抓取并分析内容,读取a标签中的链接,然后跳转到其他通过a标签的链接进行链接。网站(深度优先:先跳回再爬行;广度优先:先爬行再按顺序跳转) SEO需要什么?多个页面需要动态改变网页的标题、描述、关键词网站内容。

    注意:这里的关键点是网站内容的来源。如果页面的数据是通过请求来的,那么当页面加载时,首先会有一个DOM结构,然后才会有数据。也就是说,此时的网站内容无法被蜘蛛抓取,因此不会被百度收录。

    为什么SEO对单页应用不友好? Vue通过js控制路由,然后渲染对应的页面。因此,所有的跳转或者隐藏在js中的数据都无法获取。蜘蛛爬行时不会执行JS,导致搜索引擎只能收录Index.html,但无法搜索到其相关子页面的内容。当浏览器加载页面时,它首先会渲染页面(dom生成、css构建、解析、布局、绘制)。当js解析完毕后,会触发vue的渲染,并将挂载到app的id上。 div,这样我们才能看到页面的内容。因此,被搜索引擎索引的索引页可能毫无价值,因为它们不包含任何数据。由此带来的问题是单页应用无法进行SEO,也无法动态更改网页的TDK(标题、描述、关键词)。每个页面的title和meta标签都是一样的,不利于蜘蛛爬行。 vue seo 解决方案

    当然,为了良好的SEO性能,前后端一般是不分离的。优点是由于接口不需要暴露,所以对SEO非常有利,所以安全系数高。缺点是压力全部集中在服务器端,导致服务器负载过重。

    预渲染-spa-服务端渲染:Nuxt.js解决方案1,-spa-

    预渲染也称为客户端渲染,是指在页面加载之前将数据放入页面中。如果是vue文件,我们希望打包时生成多个页面。这时候我们就可以使用-spa-了。

    现有问题:动态路由无法解决【如详情页】,不能动态改变title、、。

    适用场景:比如公司官网只适合某些需要SEO的页面。

    使用:

    1.安装插件

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>cnpm install --save prerender-spa-plugin   解决打包多个页面
cnpm install --save vue-meta-info          设置title、描述、关键字,解决SEO的问题
</code></pre></p>
    配置vue..js:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code class="prism language-js"><span class="token keyword">const</span> path <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">&#39;path&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> PrerenderSPAPlugin <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">&#39;prerender-spa-plugin&#39;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token punctuation">{</span>
  publicPath<span class="token operator">:</span> <span class="token string">&#39;./&#39;</span><span class="token punctuation">,</span>
  configureWebpack<span class="token operator">:</span> <span class="token punctuation">{</span>
    plugins<span class="token operator">:</span> <span class="token punctuation">[</span>
      <span class="token keyword">new</span> <span class="token class-name">PrerenderSPAPlugin</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
        staticDir<span class="token operator">:</span> path<span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span>__dirname<span class="token punctuation">,</span> <span class="token string">&#39;dist&#39;</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
        routes<span class="token operator">:</span> <span class="token punctuation">[</span>  <span class="token comment">// 需要预渲染的路由地址(需要打包成几个页面就配置几个路由)</span>
          <span class="token string">&#39;/&#39;</span><span class="token punctuation">,</span>
          <span class="token string">&#39;/about&#39;</span><span class="token punctuation">,</span>
          <span class="token string">&#39;/contact&#39;</span><span class="token punctuation">,</span>
        <span class="token punctuation">]</span><span class="token punctuation">,</span>
      <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
    <span class="token punctuation">]</span><span class="token punctuation">,</span>
  <span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre></p>
    在组件中使用 vue-meta-info:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code class="prism language-vue"><template>
  <h2>Home Page</h2>
</template>
<script>
  export default {
    metaInfo: {
      title: &#39;aaaaaaa商城&#39;, // set a title
      meta: [{                 // set meta
        name: &#39;关键字,web前端&#39;,
        content: &#39;描述。。。。。。。。。&#39;
      }]
      link: [{                 // set link
        rel: &#39;asstes&#39;,
        href: &#39;https://assets-cdn.github.com/&#39;
      }]
    }
  }
</script>
</code></pre></p>
    注意:这里不能使用组件中的数据(API接口请求的动态数据)。必须是手写的。前端自检时需要将路由模式设置为hash。

    方案二、服务端渲染:Nuxt.js 优点:纯静态文件,相比SSR访问速度更快,不涉及服务器负载问题 静态网页不易受到黑客攻击,安全性更高 问题:如果动态路由较多如果使用Nuxt.js进行静态打包,动态路由会被忽略,打开网站会很慢。压力全部压在服务器上,这和没有前后端分离几乎是一样的。

    ​ 适用场景:整个网站SEO

    用途:前端自检

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>npm run build
npm run generate
</code></pre></p>
    注:仅用于前端自测试。此时打包的文件无法发送到后端。

    项目打包并上线

    1.运行打包命令

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>npm run build
</code></pre></p>
    2. 移动文件

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>.nuxt、static、nuxt.config.js、package.json
</code></pre></p>
    把上面的文件交给后端,让它放到服务器上(***)

    3.后端安装:在服务器上安装Node.js环境后启动打包的项目。

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre><code>npm run start
</code></pre></p>
    注意:因为Nuxt.js的默认端口是::3000/,但是我们需要指向自己的域名,所以后端需要配置默认端口。
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2025, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2025-5-13 20:54 , Processed in 0.082181 second(s), 18 queries .