nuxt.js初体验(爬坑之路)

作为一个前端菜鸡,手头上的vue项目刚刚完结,也许老板看我们太闲(哈哈哈哈哈开玩笑)就提出了个新需求,网站内容支持SEO,当时我的表情是脸上笑嘻嘻,众所周知,现在前端三大框架(用的比较多的)vue,react和Angular都是单页运用为主的,弊端就在于对seo不友好,这要我支持seo岂不是要重构项目?算了既然需求来了就先调研一下吧,度娘给出的答案不少,比如prerender-spa-plugin + vue-meta-info 预渲染,然而这种方法我并没有成功,也许是我打开方式不对,还有其他方法我觉的不适合之前的项目,没办法那就重构吧,于是我开始了nuxt.js的爬坑之路。

1.Nuxt.js是什么?

Nuxt.js就是一个基于Vue.js的通用框架。nuxt.js官网介绍的很详细,想要了解的话建议去nuxt官网看看,其集成了vue2,vue-router,vuex和vue-meta,是一个基于vue.js的框架,个人理解就是vue+ssr实现服务器渲染从而支持seo,也就是说vue支持的功能nuxt也能支持,就是表达方式不一样而已,相对于我这种只用过vue的菜鸡来说nuxt还是很友好的~~~

2.着手nuxt

跟着官网代码开始写个小demo,体验一下nuxt能带来什么快感,刚开始看文档,好的开始懵逼了,恩?创建流程为什么这么麻烦?说好的基于vue的呢,有没有那种一条命令行就能解决的办法呢?于是我有开始找度娘了,嘿嘿嘿真被的找到了,vue init nuxt-community/starter-template testPro --testPro为项目名称,一条命令解决哈哈哈哈哈,详情见搭建nuxt项目。但是!!我这种想法明显是不对的!!请各位看官老老实实的按照官网安装流程走一遍好吧!因为我也走了好几遍才开始找捷径的(害羞脸)。

废话不多说了好吧,跟着官网文档敲写了一个小demo,根据官网介绍,只要在相关页面设置title就可以支持SEO了,比如这样

page下user文件夹里的about.vue文件

好的一切就绪了来nuxt dev运行一下,但是!but!我要怎么测试呢?没关系这个可难不倒我这个小机灵鬼,问大神就知道了呀哈哈哈哈。大神给我推荐了curl工具,百度下载安装就好了,开始测试一下

page下user文件夹里的one.vue文件
curl工具爬出来的title

从上面两张图里可以看到,curl我本地项目路径出来的title跟我在one.vue里设置的title是一样的,这说明我成功了!!部到服务器上试试,这里要注意一下,nuxt有两个打包命令,一个是nuxt build一个是nuxt generate,两者的区别官网也有给出介绍

nuxt命令列表

具体我也没太搞明白,根据我的需求我用你nuxt generate进行打包部署,一些都OK,成功了哎~完结撒花~~~

3.判断访问设备

你以为我碰到的坑只有这么点儿?不!真正的坑还在后面!由于我之前写的项目有web端和移动端的,那么就要判断当前放问的设备来决定展示的是web端项目还是H5项目了,这里贴上判断设备代码,方法不是唯一的,不想用这个方法的看官们可以自行百度

判断当前访问设备

在vue项目里这段代码我是直接写在index.heml里的,但是nuxt我应该怎么写呢?官网关于布局一块说可以自定义,于是我也在nuxt项目新建了一个index.heml文件,nuxt dev运行一下,哎好像不行哎,首先curl爬到的就一直是这个index.html了,title也没变化,看样子不能这么搞呀。

好吧我又重头看了一遍nuxt的渲染流程,请求 —> 服务器 —> middleware(中间件) —>validte —> asyncDate()&fetch() —>render,也就是说渲染之前会先执行middleware,那我在middleware新建一个indes,js,把这段代码放进去在layout里引用这个可不可以呢?试试吧,一顿操作之后再dev,嗯window is underfind?哦对不起忘记了,nuxt是服务器渲染的,window是浏览器事件当然没有啦!那么也就是说navigator也没有咯?知道问题所在改起来就有方向了,于是把代码改成这样

middleware下的device.js

继续dev,OK这次成功了,可以!curl运行也是正常的!打包部署一下看看,然后....

generate打包报错

WTF?headers没有,也就是说明process.server判断是ture,那为啥会没有context.req.headers?想不明白卧槽!各种百度无果,这个坑我趴了一天没爬出来,突然!既然这条路走不通,那我为什么不试着绕开这条路呢,我能不能把这个文件直接放到服务器上然后在nuxt.config.js里面当成js文件引入到头部运行呢?nuxt.config.js配置如下

nuxt.config.js 配置

测试一下,dev运行,没问题!curl爬取,正常!generate打包,也没问题!哈哈哈哈哈哈成功了!!!

(PS:菜鸟前端第一次在简书写文章,看官们有何指教可私聊加微信,欢迎抛砖~~~)

(PPS:喷子们嘴下留情,我知道我是菜鸟>-<)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353