精华内容
下载资源
问答
  • 有不少技术人员在学习到必定程度后发现了写博客...这里主要对比CSDN、博客园、简书、知乎专栏、Github Page、我的建站和其余CSDN笔者是CSDN的长期用户,也见到了不少不错的CSDN博客前端优势vueSEO作得好,不管是百度...

    有不少技术人员在学习到必定程度后发现了写博客的重要性,一方面帮助本身记忆,一方面也能帮助他人解决问题,因而会选择本身开始写博客,以后又发现平台太多不知从何下手,在这里我根据本身写博客的经验比较一下各个平台的优缺点。

    这里主要对比CSDN、博客园、简书、知乎专栏、Github Page、我的建站和其余

    CSDN

    笔者是CSDN的长期用户,也见到了不少不错的CSDN博客前端

    优势vue

    SEO作得好,不管是百度仍是google(尤为是百度)在搜索问题的时候排名靠前

    阅读量高,从头开始写也不怕没人看,有排名,对于追求阅读量的做者会更有动力写

    博客内容基本限定在计算机领域上

    博客写完发表便可,不须要作额外的事情,还有要提的是支持数学公式和流程图编写,其余的博客我不太清楚

    CSDN除了博客外还有不少其余资源,好比源代码下载、课程学习等,对有需求的做者有吸引力

    缺点node

    界面不够好看,不管PC端仍是移动端

    博客定制性差,基本只能调整下模块位置,换个固定的显示模板,最多加个友情连接

    广告多,右下角、左下角、文章下面常常有广告出现

    下图就是广告汇集区,没法忍受有强迫症的同志必定要慎重

    74c3a261ba48178b983370475de27ff8.png

    博客园

    博客园是除了CSDN外,另外一个比较早专作技术博客的网站react

    优势git

    SEO不错,尤为是在百度上,博客园上面也常常有不错的专题类文章

    阅读量有保证,和CSDN很像,不提供排名机制

    博客内容基本限定在计算机领域上

    界面好看了一些,给博客管理者较大的定制空间,见到过一些本身定制的博客,比CSDN强不少

    广告在最下方不会很影响心情

    缺点github

    平台给人一种陈旧论坛的感受,博客园做为较早的技术博客空间提供者,即使界面上比CSDN上整齐了一些,但依然不够fashion

    其余可用资源较少,除了写博客看文章以外,其余的业务不够吸引人

    博客园定制的博客也不够fashion,甚至不少花花绿绿的,这种定制性某种程度反而形成了定制的博客也难看,并且不整齐,常常会访问了一个博客甚至不知道是博客园的

    好比说下图就出现了格言出格的现象,移动端就更是惨不忍睹了

    再下面的两张图分别是登录页和首页,也是满满的陈旧感

    ba5b4c3d557ddb586077506a37353b1d.png

    2935441f0789dd0684e9c16ae7da869c.png

    159b1d91cb44a231ffb149d45e5bb186.png

    简书

    简书也是笔者曾经考虑而且实际去操做过的博客网站web

    优势

    界面是真的简洁、简单、简直了,和前面两个一比真是好看,从首页到文章页,包括markdown的字体、代码排版,均可以看出来是个现代化的网站设计风格

    移动端适配的也很是好,这里为何要单列出来呢,由于其实移动端的流量某些时候要比PC端多得多,因此移动端漂亮是很是重要的

    放一张简洁的图

    9cf0ea6bed1ff26cce27421a39021a56.png

    缺点

    SEO很差,简书更多的想将文章作专栏分类,而后让读者在简书内部阅读到,因此在搜索引擎上的SEO要差不少,笔者以前发了几篇文章,阅读量基本都是0

    发完文章后要作专门的分类提交,比较麻烦,不然就是上一条的没有阅读量,提交后阅读量大概能有一些了,可是也不算多,和前面两个无法比,以CSDN为例,发一篇文章解决一个报错时间长了也能有几千的阅读量,可是简书可能就达不到这个水平了

    文章内容不专一于计算机技术领域,情感呀、八卦呀、鸡汤啊,这些某种程度才是简书上的主流,和微信公众号有点像,大部分状况都是蹭热点、标题党、大V的阅读量会较高,若是你只写技术博客,还但愿更多人看到的话,那简书可能不是最好的选择

    其余技术资源不多,除了阅读博客以外,能够考虑看看设计、看看故事,若是只是一心学技术的话那可能会失望了

    没有我的定制性

    知乎专栏

    知乎专栏笔者虽然没有本身发过,可是也读了不少,身边也有人在发,因此也有必定的发言权ruby

    优势

    知乎这个平台好, 知乎积累了不少大V,并且因为内容的价值高,在知乎上获得更多的关注会有很高的商业价值

    SEO通常,知乎的问答搜索引擎收录的很是好,可是专栏还差一截,但若是你是知乎的资深用户,那么吸引人阅读专栏也不是那么难的事情,也能够考虑多去回答问题给本身的博客打广告

    知乎能够说就是现代前端的前驱,在我写了这样一段话以后,你们应该知道了,它的界面设计不管从产品仍是技术的角度上都是很是棒的,某种程度上比简书还简书,页面很舒服漂亮

    产品上,知乎专栏文章的简洁和简书比有过之而无不及,甚至更让人看着舒服,在细节上,PC端简书的导航栏一直在上方,可是知乎会自动隐藏让读者能看到更多有用信息

    技术上,简书应该是使用了vue,知乎是彻底react来构建的,响应式布局上知乎也是彻底无缝对接,从下图就可见一斑,简书在界面变小的时候出现了下图中的问题,可是知乎没有,比较连接:知乎文章,简书文章

    20be3751eae84651fb6e61e1d8f2850c.png

    缺点

    知乎上内容也不是只针对技术来作的,其余的内容也会混杂不少

    没有定制性,都是知乎的那套简洁的界面

    若是不常使用知乎这个平台去提问回答专栏可能很难被阅读和关注

    Github Page

    笔者也是个github page的使用者,也尝试着写过本身的主题,在这里推销一波,hexo-theme-aaron,欢迎star服务器

    优势

    定制性强,属于静态网站,博客代码都能看到,都是开源的,想怎么改怎么改,只怕使用者不会改,即使不会改也有很是多的开源代码提供使用,足够挑选,从nodejs出的hexo到ruby的jekyll,有大量的主题可供挑选,还能够关联本身的域名

    能学习一下git和github的使用

    能学习一下web开发

    d990a5d83c907eef37e59044061ce567.png

    缺点

    在百度上seo很是差,google上还好,github限制了百度的索引,因此github page上的博客不用想了,百度上很难被搜索到,能看到个主页就不错了,因此基本不多有人阅读你的博客,虽然还能够考虑把博客挂在coding.net上,可是因为要收费一年几百,因此也不是完美的解决方案

    写博客比提供好的平台要麻烦不少,由于要在本地编辑而后部署代码,不管如何也比不上在网页上编辑一下就发出去的快速

    有必定的开发难度,若是没作过web开发不少地方都要学习,周期会长不少

    我的建站

    这个方法在最开始的时候笔者本人也尝试过,后来因为成本问题再也不作了微信

    优势

    定制性最强,能够搭建动态网站,这回连github这个平台都不用理了,服务器都是本身的,想怎么弄怎么弄,以wordpress为表明的博客平台同样有不少可供选择

    能够本身想办法作seo,优化网站被收录

    能好好学一下web开发

    缺点

    开发难度最高,从购买服务器、域名,到运行代码、修改代码、部署,再到后期作SEO,这一套下来估计web开发是什么样的内心也大概能有点数了

    成本最高,上述全部的方案都是免费的,我的建站要花钱买服务器,买域名,花销最少也要几百块出去(学生认证除外)

    乐趣很难在写博客上,可能会发生以下现象,基本都花时间折腾网站开发了,等弄好了发现SEO太差根本没人来看,还不如去上面找个平台写呢

    89fbfffe127b6c8d4ffd2705a4552006.png

    其余

    近两年新兴起的好比说segmentFault、稀土掘金,还有v2ex不知道可不能够,刚刚要去看一眼结果没法访问,这些也能够做为选择,可是我的感受能够作第二博客,由于毕竟规模和体验上仍是和上面的几种方式有差距,不过若是特别粉某个网站的话,那也没有什么问题,大胆的去写吧

    我的看法基本就这些,有些说的不对的地方还望指正,欢迎讨论

    其实说到最后每一个方式都有本身的优缺点,没有十全十美的解决方案,固然最重要的是,别分析了半天最后本身的博客仍是一个字没动。。。。。。-_-!行动起来才是最重要的

    最后但愿你们都能有个本身喜欢的我的技术博客

    转载自https://blog.csdn.net/grape875499765/article/details/79017906;

    展开全文
  • Vue单页面应用优化SEO之预渲染

    千次阅读 2018-12-06 14:06:50
    这里优化SEO重点说vue-cli框架,毕竟是spa项目,所以SEO十分不友好,原因在于它自身并不是静态html,而是由js动态生成的(通过文档碎片劫持的方式以及Object.defineProperties等方法,有兴趣可以去研究研究vue的原理)...

    这里优化SEO重点说vue-cli框架,毕竟是spa项目,所以SEO十分不友好,原因在于它自身并不是静态html,而是由js动态生成的(通过文档碎片劫持的方式以及Object.defineProperties等方法,有兴趣可以去研究研究vue的原理),导致最后打包完成后只有一个光秃秃的静态index.html入口,大致内容就是外部引入了几个js,剩余的文件就只有static中的js、css、img等,大致是下面那样

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset=utf-8>
      <meta name=viewport content="width=device-width,initial-scale=1">
    </head>
    <body>
    <div id=app></div>
    <script type=text/javascript src=/static/js/manifest.a284e1968f2c7ea25dee.js></script>
    <script type=text/javascript src=/static/js/vendor.0c201074b2f24cdc8eab.js></script>
    <script type=text/javascript src=/static/js/app.df67f5e39e857cdc0ca8.js></script>
    </body>
    </html>

    当蜘蛛(搜索引擎的爬虫)要抓取网页时候只会对静态html就行关键字匹配,而js文件是不执行的,所有相当于蜘蛛只爬到了上面的html代码,这对SEO十分不友好,而预渲染的目的就是对你的路由页面生成对应的静态html,让蜘蛛能获取更多关于你页面的信息从而增强SEO(一般针对交互性不强的网页,比如宣传页,交互性强的建议去研究ssr服务端渲染),这里使用的插件就是vue官网推荐的prerender-spa-plugin插件,不过在此之前你需要把路由从hash模式转换到history模式,在router中index.js设置

    mode : 'history',

    然后对后台服务器进行对应设置,可以参照vue官网描述,很简单,https://router.vuejs.org/zh/guide/essentials/history-mode.html#后端配置例子/

    安装插件

     npm install prerender-spa-plugin

    开始配置插件,由于预渲染的过程是在打包的时候,所以在build文件中的webpack.prod.conf.js文件中设置

    const PrerenderSPAPlugin = require('prerender-spa-plugin');
    
    
    //在plugins中增加代码,其他原来的代码不要动
    plugins: [
    new PrerenderSPAPlugin({
          staticDir: path.join(__dirname, '../dist'),
          routes: [
            '/',
            '/home/index',
            '/home/solveIndex',
            '/home/store',
            '/home/business',
            '/home/end',
            '/home/enterprise',
            '/home/network',
            '/home/mall',
            '/home/apply',
            '/home/cooperation',
            '/home/contactUs',
            '/home/project',
            '/home/product',
            '/home/aboutUs',
            '/home/manResources',
          ],
    
        }),
    ]

    这里解释一下这个在干嘛,它主要就是找到dist文件,访问routes数组下的每个元素值(相当于访问路由),并把静态页面打包到对应路径,比如routes中的’/home/index’这个路由,将打包到dist/home/index.html中。网上很多说要配置Renderer然后在main.js中进行对应,其实没有必要

    接下来配置config下的index.js文件,找到build属性进行配置

    build: {
        index: path.resolve(__dirname, '../dist/index.html'),
        assetsRoot: path.resolve(__dirname, '../dist'),
        assetsSubDirectory: 'h7/static',
        assetsPublicPath: '/',
    }

    assetsSubDirectory 原来的参数是static,之所以加了个h7是因为把这个项目放到根目录的h7文件夹下(如果你的项目是根目录这个属性就不要改,还是static就好),assetsPublicPath一定要是’/’,不然预渲染的时候会卡住(具体原因我也不明白,可能还是我太菜)

    最后一步,在稍微配置一下router,顺便贴出来我的router代码,也为了更好理解上面插件routes

    import Vue from 'vue'
    import Router from 'vue-router'
    const index = ()=> import('@/components/index');
    const solveIndex = ()=> import('@/components/solution/index');
    const business = ()=> import('@/components/solution/business');
    const end = ()=> import('@/components/solution/end');
    const enterprise = ()=> import('@/components/solution/enterprise');
    const mall = ()=> import('@/components/solution/mall');
    const network = ()=> import('@/components/solution/network');
    const store = ()=> import('@/components/solution/store');
    const apply = ()=> import('@/components/apply/index');
    const cooperation = ()=> import('@/components/cooperation/index');
    const contactUs = ()=> import('@/components/contactUs/index');
    const project = ()=> import('@/components/project/index');
    const product = ()=> import('@/components/product/index');
    const aboutUs = ()=> import('@/components/aboutUs/index');
    const manResources = ()=> import('@/components/manResources/index');
    const templateParent = ()=> import('@/components/templateParent');
    
    
    Vue.use(Router);
    
    export default new Router({
      mode : 'history',
      base :'/h7',
      routes: [
        {
          path: '/',
          redirect: '/home/index'
        },
        {
          path:'/home',
          component:templateParent,
          children:[
            {path:'index',name:'首页' ,component:index},
            {path:'solveIndex',name:'解决方案' ,component:solveIndex},
            {path:'store',name:'店铺' ,component:store},
            {path:'business',name:'商业' ,component:business},
            {path:'end',name:'末端' ,component:end},
            {path:'enterprise',name:'企业' ,component:enterprise},
            {path:'network',name:'网点' ,component:network},
            {path:'mall',name:'商城' ,component:mall},
            {path:'apply',name:'应用体验',component:apply},
            {path:'cooperation',name:'合作伙伴',component:cooperation},
            {path:'contactUs',name:'联系我们',component:contactUs},
            {path:'project',name:'项目案例',component:project},
            {path:'product',name:'产品实例',component:product},
            {path:'aboutUs',name:'关于我们',component:aboutUs},
            {path:'manResources',name:'人力资源',component:manResources}
          ]
        }
      ]
    })

    这里主要配置base,在history模式下,项目不在根目录的时候需要这么做,因为项目是放在根路径的h7文件夹下,所有要在渲染路径前增加h7路径(如果你的项目放根目录下这个base属性就不用加了,上面assetsSubDirectory属性的h7也不要加)

    至此一切以准备就绪输入npm run build开始打包吧,会出现3个文件夹,一个home文件夹(这里看你路由这么写不一定),一个index.html,一个h7文件(这里也是看你是否放在h7目录中),一个index,html

    首先针对项目不是根目录的(放h7下的),把最外层的index.html(和home同级)删掉,把h7文件夹中的static文件夹拿到最外面(和home同级),把h7文件夹中index.html拿到最外面(和home同级),变成下面这种结构。(楼主太菜,找不到好的解决办法,只能先这么移了,这里主要解决页面引用资源404问题)

    解释一下上面图,从h7文件夹中找到static和index拿到最外面,覆盖了原来的index.html,并删除h7文件夹

    如果你的项目是放在根路径(没有h7的情况),会出现3个文件home,static,index.html,直接部署到你的服务器就行了不用移动文件,如下图

    几个坑 和 疑惑

    1、打开的时候白屏,一般几种可能,你的文件移动错了导致资源加载404,还有就是你的history配置的问题,导致路由渲染失败,解决方案就是上面所说的加base参数

    2、本文主要针对项目不是放在根目录下的,如果你是放根目录的配置完插件和history模式之后就可以直接发布了,不用管h7文件夹打包路径和渲染路径了

    3、打包时候卡住,assetsPublicPath记得设置成’/’

    4、本文所说的h7文件是楼主自己在根路径创建的文件夹,名字不一定是这个主要看你怎么命名了

    其他SEO优化

    SEO优化网上也提到了很多,几个要点meta便签、h1、h2标签、title的显示,图片的alt等

    1、使用vue-meta-info插件,改变link、title、meta等

    npm install vue-meta-info
    //main.js
    import MetaInfo from 'vue-meta-info'
    Vue.use(MetaInfo);
    //在你的路由页面中加
    export default {
        metaInfo: {
        //改变当前路由的title
          title: 'title',
           //改变当前路由的link
          link: [
            {
              rel: 'baidu',
              href: 'https://www.baidu.com/'
            },
          ],
        },
        data(){
        	return{}
        }
    }

    2、每个路由页面都需要有一个h1(主要放关键字),而且只能有一个,以及多个h2

    3、图片加alt,蜘蛛对图片的描述信息是通过alt获取

    展开全文
  • 目的 由于基于Vue的SPA项目普通的爬虫无法爬取项目的静态文本的内容,通过预渲染插件prerender-spa-plugin解决vue的SPA项目的SEO问题。 ...当然你也可以添加meta的keyword和descrption,去简答的描述一些关于网站的内容...

    目的

    由于基于Vue的SPA项目普通的爬虫无法爬取项目的静态文本的内容,通过预渲染插件prerender-spa-plugin解决vue的SPA项目的SEO问题。

    可以看到项目编译后的index.html中只有一些HTML和js,css文件的引用,而无关于内容的静态文本。当然你也可以添加meta的keyword和descrption,去简答的描述一些关于网站的内容。

    curl xxxx.com 
    // 返回的结果发现只有简单的HTML和js引用,无相关的静态文本
    复制代码

    使用过程

    Vue预渲染插件Prerender-spa-plugin GitHub地址

    能够解决的问题

    • SEO
    • Slow Client
    • OpenGraph/Social Metadata

    不能解决

    • User-specific content、
      • 不同的用户看都会不同的页面,这种类型的页面不适用预渲染
    • Frequently changing Content
      • 对于一些经常发生变化的页面,如体育比赛等,会导致编译后的数据不是实时更新的
    • Thousands of routers
      • 不适用与路由太多的页面,会导致构建build的过程,等待的时间是超长

    实现

    主要通过Webpack插件的方式,控制编译出来的静态文件的方式。

    npm install prerender-spa-plugin@2.1.0 --save
    复制代码

    Webpack简单配置

    // webpack.conf.js
    var path = require('path')
    var PrerenderSpaPlugin = require('prerender-spa-plugin')
     
    module.exports = {
      // ...
      plugins: [
        new PrerenderSpaPlugin(
          // Absolute path to compiled SPA
          path.join(__dirname, '../dist'),
          // List of routes to prerender
          [ '/', '/about', '/contact' ]
        )
      ]
    }
    复制代码
    • 打包完成后,你会发现原来的dist目录下,多出来about,contact这样的目录,这个目录下会有对应的index.html文件;这份文件是对应路由生产后的静态页面,便于SEO
    curl xxxx.com
    // 会发现会讲渲染后的页面返回,而不是刚开始的之后简单的js引用的初始页面
    复制代码
    • 如果需要配置路由的访问, 还需要配置ApacheNginx等访问,匹配相应的路由访问导指定目录下index.html文件,即可。
    // 配置完成后,可以查看效果,每个页面返回的都是编译后的静态文件
    curl xxxx.com/about
    curl xxx.com/contact
    复制代码

    遇到的几个问题:

    • 项目中使用的版本为2.1.0版本,@3.0.0版本的没有安装成功,在安装过程中会卡住,导致一直下载不下来,如果直接终止的话,会导致后续在build的过程中会报错
    • 如果没有对应路由或者拼写错误的话,build也会报错
    • webpack中配置的route需要与router一直,注意/符号
    • 需要注意Apache等配置,如果访问static的静态文件,都是统一访问到dist/static/目录下的,而不是dist/about/static这种
    展开全文
  • 1.router文件夹下index.js中设置title export default new Router({ routes: [ { path: '/', name: 'Home', component: Home, meta: { title: '首页' } }, { path: '/design', ...

    1.router文件夹下index.js中设置title

    export default new Router({
      routes: [
        {
          path: '/',
          name: 'Home',
          component: Home,
          meta: { title: '首页' }
        },
        {
          path: '/design',
          name: 'design',
          component: design,
          meta: { title: '网站设计' }
        },
        {
          path: '/shopping',
          name: 'shopping',
          component: shopping,
          meta: { title: '商城系统' }
        }
      ]
    })
    

    2.main.js中调用seo接口,并设置每个页面的title,关键词,描述

    new Vue({
          el: '#app',
          render: h => h(App),
          router,
          components: { App },
          template: '<App/>',
        data: {
            keywords: "",
            description: "",
            title: "",
            viewId: 1
        },
        created() {
              this.getSEO();
              // 全局配置
            router.beforeEach((to, from, next) => {
                // Change doc title
                if(to.meta.title == '拓美科技'){
                    this.viewId = 1;
                }else if(to.meta.title == '商城系统'){
                    this.viewId = 2;
                }
                console.log(this.viewId);
                this.getSEO(this.viewId);
                next();
            })
        },
        methods: {
            //获取seo
            getSEO(viewId) {
                this.$axios.post("/get_seo",{
                    "view_id": this.viewId
                }).then((response) => {
                    let res = response.data;
                    console.log(res.data);
                    if(res.status == 1){
                        this.keywords = res.data.key_words;
                        this.description = res.data.description;
                        this.title = res.data.title;
                        document.title = this.title || '拓美科技';
            //            document.title = to.meta.title || '拓美科技'
                        document.querySelector('meta[name="Keywords"]').setAttribute('content', this.keywords)
                        document.querySelector('meta[name="Description"]').setAttribute('content', this.description)
                    }else{
                        this.$layer.msg(res.message);
                    }
                }).catch((err) =>{
                    console.log(err);
                })
            }
        },
    })
    
    展开全文
  • 关于vue项目的seo问题及解决方案

    千次阅读 2020-04-01 16:02:42
    关于vue项目的seo问题及解决方案
  • vue + springboot 前后端分离,遇到的第一个坑就是:跨域问题 本地开发,都是localhost,但是由于端口不同,导致出现跨域问题。 网上搜索,解决方法(三种,尝试了后两种,亲测,都可以解决): ...
  • vue如何设置 网页标题 关键字 描述

    千次阅读 2018-12-06 16:45:25
    1.如果执行一次,在main.js中写; 2.如果根据路由动态改变,在路由拦截 router.beforeEach((to, from, next) => {}中写; 代码: ...document.title = 接口获取的title || '默认title' ...docume...
  • 基于Vue SEO的四种方案

    2020-01-13 01:30:44
    https://segmentfault.com/a/1190000019623624
  • Vue中的SEO优化

    千次阅读 2019-07-20 09:40:06
    不可否定的是,vue现在火。但是在实际项目中,特别是像一下交互网站,我们不可避免会考虑到的是seo问题,这直接关系到我们网站的排名,很多人说用vue搭建的网站不能做优化,那我们真的要放弃vue,放弃前后端分离开发...
  • Nuxt.js重构Vue项目 解决SEO问题

    千次阅读 2020-03-21 16:34:36
    从头搭建一个服务端渲染的应用是相当复杂的。幸运的是,我们有一个优秀的社区项目 Nuxt.js 让这一切变得非常简单。Nuxt 是一个基于 Vue 生态的更高层的框架,为开发服务端渲染的 Vue 应用提供了极其便利的开发体验。...
  • 1.router文件夹下index.js中设置title export default new Router({ routes: [ { path: '/', name: 'Home', component: Home, meta: { title: '首页' } }, { path: ...
  • 关于vue的seo优化

    万次阅读 多人点赞 2019-06-18 22:02:18
    好长时间没有写博客了,这个月的18号才写这个月的第一篇,回首一看这个月发生了好多事情。换工作、加班都没有时间和没有好的东西可以写。最近公司的项目中有一个非常重要的功能就是seo的优化,这个东西堵了一段时间...
  • vue SEO的解决方案

    千次阅读 2021-02-15 10:20:28
    介绍 什么是 SEO SEO(Search Engine Optimization)搜索引擎优化,是指通过对网站进行站内优化和修复(网站Web结构调整、网站内容建设、网站代码优化和编码等)和站外优化,从而提高网站的关键词排名以及公司产品的...

空空如也

空空如也

1
收藏数 13
精华内容 5
关键字:

vueseo

vue 订阅