详解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 相关文章推荐
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
jquery 图片Silhouette Fadeins渐显效果
Feb 07 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
Mar 18 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
Jan 11 Javascript
node.js中的console用法总结
Dec 15 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
Dec 10 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
Angular 根据 service 的状态更新 directive
Apr 03 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
Angular 项目实现国际化的方法
Jan 08 Javascript
Element PageHeader页头的使用方法
Jul 26 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python记录程序运行时间的三种方法
2017/07/14 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python flask搭建web应用教程
2019/11/19 Python
Python 列表的清空方式
2020/01/13 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
创立科技Java面试题
2015/11/29 面试题
销售总经理岗位职责
2014/03/15 职场文书
国际贸易求职信
2014/07/05 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL
Python Pandas解析读写 CSV 文件
2022/04/11 Python