详解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 相关文章推荐
jQuery 判断元素上是否绑定了事件
Oct 28 Javascript
JS.findElementById()使用介绍
Sep 21 Javascript
javascript禁制后退键(Backspace)实例代码
Nov 15 Javascript
Jquery实现由下向上展开效果的例子
Dec 08 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
Dec 12 Javascript
jQuery实现的导航动画效果(附demo源码)
Apr 01 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
JQuery 获取Dom元素的实例讲解
Jul 08 jQuery
laravel5.4+vue+element简单搭建的示例代码
Aug 29 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
Oct 30 Javascript
js比较两个单独的数组或对象是否相等的实例代码
Apr 28 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
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 session应用实例 登录验证
2009/03/16 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
python list语法学习(带例子)
2013/11/01 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
物业管理专业自荐信
2014/07/01 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
物业公司管理制度
2015/08/05 职场文书