VUE基于NUXT的SSR 服务端渲染


Posted in Javascript onNovember 30, 2018

Server Side Rendering(服务端渲染)

SSR 目的是为了解决单页面应用的 SEO 的问题,对于一般网站影响不大,但是对于论坛类,内容类网站来说是致命的,搜索引擎无法抓取页面相关内容,也就是用户搜不到此网站的相关信息。

原理

将 html 在服务端渲染,合成完整的 html 文件再输出到浏览器。

适用场景

  • 客户端的网络比较慢
  • 客户端运行在老的或者直接没有 JavaScript 引擎上

NUXT

作用就是在 node.js 上进一步封装,然后省去我们搭建服务端环境的步骤,只需要遵循这个库的一些规则就能轻松实现 SSR。

可以作为一个 Node.js 应用跑在服务器上,也可以把整站直接编译为静态 HTML。另外这个框架支持自动生成路由,用来写展示型的页面是非常不错的选择。

NUXT 能为我们做什么

  • 无需再为了路由划分而烦恼,你只需要按照对应的文件夹层级创建 .vue 文件就行
  • 无需考虑数据传输问题,nuxt 会在模板输出之前异步请求数据(需要引入 axios 库),而且对 vuex 有进一步的封装
  • 内置了 webpack,省去了配置 webpack 的步骤,nuxt 会根据配置打包对应的文件

安装流程

$ npm install -g vue-cli

$ vue init nuxt/starter <project-name>
$ cd <project-name>
$ npm install

$ npm run dev

Nuxt.js 会监听 pages 目录下的改变,添加新 page 的时候不需要重启服务

Next.js

来自Zeit的团队在React的基础和组件模型上构建了Next.js,同时还提供了一个关键扩展:通过使用名为getInitialProps()的组件生命周期钩子方法,框架能够在服务器上进行初始渲染,如果需要的话,还可以在客户端继续进行渲染。不过这个高级特性是一个很小却功能强大的框架所额外提供的。

Next提供了非常丰富的生态环境,特别是它的example,包含了多种情况下的源码,让学习者很容易搭建起一个多功能的Next框架,客户端有的东西,服务端基本都有。

  • webpack的各项配置,Next集成了webpack的很多配置,热更新是必备品,还支持提供next.config.js的方式导入自己定义的配置。
  • 你可以使用less、scss、style-in-Component、css等各种样式写法。
  • 支持redux、redux-saga、或者不用。
  • 各种图片的支持都包含在webpack中了。
  • 支持自定义的babelrc配置。
  • 对于react的版本的支持也在维护者的维护中不断更新。
  • 支持preact。

简单易用,就跟写 PHP 一样一个文件一个页面了,但缺点也很明显,其实它是通过改变正常 React + webpack 的代码书写习惯来绕过前后端同构的坑,所以也引入了一些新的问题:

  • 图片等静态文件只能放在 static 目录下,不能通过 require 来引入,也就是没办法通过 webpack 来进行模块化管理,如果各个组件有自身依赖的图片,也只能一股脑放 static 里,也很难实现版本管理控制浏览器缓存。
  • 样式同样也没办法通过 webpack 进行模块化管理,只能通过 style 标签嵌入或直接内联。

简单地说,很适合快速搭建简单站点,但自由度不高,且带样式或图片的 React 组件无法直接使用,个人看法是一个用自由度和通用性来换取易用性的框架。

其他方法

Google 可以正常爬取和渲染一个纯 js 动态生成的网站,上传 sitemap 就可以了。

直接生成静态页面由 CDN 分发。有些新技术还可以在 static gen 同时支持 pwa,比如 gatsbyjs。

掘金是未登录用户使用 SSR,不错的思路。

要分清楚什么时候用 mvvm,mvvm 其实就是 modelview 非常方便定义页面的各种逻辑和改变页面数据,如果是传统的网站,前端没啥逻辑,就没有必要上 mvvm

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

Javascript 相关文章推荐
jQuery+.net实现浏览更多内容(改编php版本)
Mar 28 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
jQuery中live()方法用法实例
Jan 19 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
Apr 17 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
Sep 18 Javascript
微信小程序实现默认第一个选中变色效果
Jul 17 Javascript
angular-tree-component的使用详解
Jul 30 Javascript
vue添加class样式实例讲解
Feb 12 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
Aug 12 Javascript
jquery制作的移动端购物车效果完整示例
Feb 24 jQuery
Nuxt.js开启SSR渲染的教程详解
Nov 30 #Javascript
基于JavaScript实现每日签到打卡轨迹功能
Nov 29 #Javascript
Next.js项目实战踩坑指南(笔记)
Nov 29 #Javascript
js canvas实现二维码和图片合成的海报
Nov 19 #Javascript
详解@angular/cli 改变默认启动端口两种方式
Nov 29 #Javascript
js实现每日签到功能
Nov 29 #Javascript
Vue.js的复用组件开发流程完整记录
Nov 29 #Javascript
You might like
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
PHP异常处理Exception类
2015/12/11 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python文件的md5加密方法
2016/04/06 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
高中教师先进事迹材料
2014/08/22 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang