详解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 常用方法经典总结
Jan 28 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 Javascript
JS将表单导出成EXCEL的实例代码
Nov 11 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
Bootstrap表单布局样式源代码
Jul 04 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 Javascript
d3.js入门教程之数据绑定详解
Apr 28 Javascript
vue中component组件的props使用详解
Sep 04 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
Sep 14 Javascript
Vue 实现分页与输入框关键字筛选功能
Jan 02 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 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
图书管理程序(二)
2006/10/09 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
第四章 php数学运算
2011/12/30 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
使用URL传输SESSION信息
2015/07/14 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
js文字滚动停顿效果代码
2008/06/28 Javascript
javascript 变量作用域 代码分析
2009/06/26 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python3实现短网址和数字相互转换的方法
2015/04/28 Python
总结Python编程中函数的使用要点
2016/03/20 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
物业公司采购员岗位职责
2013/12/31 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
施工安全责任书
2014/04/14 职场文书
我的老师教学反思
2014/05/01 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
给下属加薪申请报告
2015/05/15 职场文书
详解python字符串驻留技术
2021/05/21 Python