详解Nuxt.js Vue服务端渲染摸索


Posted in Javascript onFebruary 08, 2018

本文采用nuxt进行服务端渲染https://zh.nuxtjs.org/

Nuxt.js 十分简单易用。一个简单的项目只需将 nuxt 添加为依赖组件即可。

Vue因其简单易懂的API、高效的数据绑定和灵活的组件系统,受到很多前端开发人员的青睐。国内很多公司都在使用vue进行项目开发,我们正在使用的简书,便是基于Vue来构建的。

我们知道,SPA前端渲染存在两大痛点:(1)SEO。搜索引擎爬虫难以抓取客户端渲染的页面meta信息和其他SEO相关信息,使网站无法在搜索引擎中被用户搜索到。(2)用户体验。大型webApp打包之后的js会很庞大,于是就有了按模块加载,像require.js一样,异步请求。webpack盛行,就变成了代码分割。即便如此,受制于用户设备,页面初次渲染还是有可能很慢,白屏等待时间太长,对日益挑剔的用户群体来说,无法接受。

因此,对于那些展示宣传型页面,如官网,必须进行服务端渲染(SSR)。安装 nuxt.js

$ vue init nuxt-community/starter-template <你项目的名字>
// 后面 安装依赖你懂的
// 安装koa版本
$ vue init nuxt/koa <你的项目名字>

运行

npm run dev

应用现在运行在 http://localhost:3000

注意:Nuxt.js 会监听 pages 目录中的文件变更并自动重启, 当添加新页面时没有必要手工重启应用。

路由

nuxt 是根据pages 目录结构生成路由配置

异步数据asyncData

注意必须要页面组件才能调用asyncData(就是components下是不能调用,必须路由的页面才行)

异步数据beforeCreate,created

注意:在任何vue组件的生命周期内,只有beforeCreate和created这两个钩子会在浏览器端和服务端均被调用;其他的钩子都只会在浏览器端调用。

使用插件mint-ui

首先我们需要在plugins文件夹中添加插件文件 mint-ui.js

import Vue from "vue";
import Mint from "mint-ui";

Vue.use(Mint);

在nuxt.config.js中配置plugins字段

/**
 * 配置第三方插件
 */
 plugins: [{ src: "~plugins/mint-ui", ssr: true }],

//同时nuxt还支持区分只在浏览器中运行和只在服务端运行的插件

//只在浏览器运行:配置nuxt.config.js中plugins字段,将引入的插件属性设置为ssr: false
//只在服务端运行:直接在webpack打包server.bundle.js文件中,将process.SERVER_BUILD设置为true即可

layout布局

1.nuxt.js实现了一个新的概念,layout布局,我们可以通过layout布 局方便的实现页面的多个布局之间方便的切换。本项目中实现了三种常用的布局,即:1)两栏布局,左栏固定,右栏动态宽度;2、错误页提示,页面中间一个提示框的布局方案;3、纯白页面布局。

具体开发的页面中,如果使用默认布局,则不需指定页面的布局,nuxt框架会自动对没有指定布局的页面和default布局进行关联。如果需要指定布局,则在layout字段中对布局进行指定。如图在login页面中对full布局进行了指定。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
Sep 04 Javascript
js和as的稳定传值问题解决
Jul 14 Javascript
CSS+jQuery实现的一个放大缩小动画效果
Sep 24 Javascript
判断在css加载完毕后执行后续代码示例
Sep 03 Javascript
JS函数的几种定义方式分析
Dec 17 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
Vue实现内部组件轮播切换效果的示例代码
Apr 07 Javascript
JS实现前端页面的搜索功能
Jun 12 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 Javascript
JS定义函数的几种常用方法小结
May 23 Javascript
JS实现网页端猜数字小游戏
Mar 06 Javascript
VUE 使用中踩过的坑
Feb 08 #Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 #Javascript
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 #Javascript
vue中实现methods一个方法调用另外一个方法
Feb 08 #Javascript
使用vux实现上拉刷新功能遇到的坑
Feb 08 #Javascript
jQuery实现的简单图片轮播效果完整示例
Feb 08 #jQuery
jQuery 防止相同的事件快速重复触发方法
Feb 08 #jQuery
You might like
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
js最简单的拖拽效果实现代码
2010/09/24 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
python中退出多层循环的方法
2018/11/27 Python
Python字符串的一些操作方法总结
2019/06/10 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
Python 实现集合Set的示例
2020/12/21 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
资产评估专业大学生求职信
2013/09/29 职场文书
《雨点》教学反思
2014/02/12 职场文书
一年级学生评语大全
2014/04/21 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
教师年度个人总结
2015/02/11 职场文书
Moment的feature导致线上bug解决分析
2022/09/23 Javascript