热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅谈NUXT基于vue.js的服务端渲染框架

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

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

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

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

Vue官方SSR文档的配置太过繁琐,需要对node和webpack有相当不错的使用经验,对于一个前端小白而言,官方推荐NUXT。

NUXT是一款基于vue的服务端渲染框架,跟React的NEXT异曲同工。暂时的版本是0.10.6,其github主页显示很快就会发布1.0版。

$ vue init nuxt/starter //nuxt快速启动模版

$ cd //进入目录

$ npm install //安装依赖

$ npm run dev //运行

浏览器打开localhost:3000即可。

目录结构
pages文件夹:nuxt会自动将pages文件夹内的*.vue文件根据路径到对应路由。默认是index.vue。我们无需为了路由划分而烦恼,你只需要按照对应的文件夹层级创建 .vue 文件就行。Nuxtjs 会监听pages文件夹下所有文件,当有文件变动时,浏览器对应的页面也会自动刷新,这极大的简化了我们开发的步骤。

配置文件
目录下的nuxt.config.js是我们唯一的配置入口,可以覆盖nuxt的默认配置。nuxt.config.js 的全部的配置如下:

cache:该配置项让你开启组件缓存策略以提升渲染性能。

loading:该配置项用于个性化定制 Nuxt.js 使用的加载组件。

css:该配置项用于定义应用的全局(所有页面均需引用的)样式文件、模块或第三方库。

plugins:该配置项用于配置那些需要在根vue.js应用实例化之前需要运行的 Javascript 插件。

head:这里可以写入页面的meta信息

build:允许你在自动生成的vendor.bundle.js文件中添加一些模块,以减少应用 bundle 的体积

dev :该配置项用于配置 Nuxt.js 应用是开发还是生产模式。

env :该配置项用于定义应用客户端和服务端的环境变量。

generate:该配置项用于定义每个动态路由的参数。

rootDir :该配置项用于配置 Next.js 应用的根目录。

srcDir:该配置项用于配置应用的源码目录路径。

transition:该配置项用于个性化配置应用过渡效果属性的默认值。

vuex:Nuxt.js 会尝试找到应用根目录下的store目录,如果该目录存在,它将做以下的事情:引用vuex模块,将vuex模块 加到 vendors 构建配置中去,设置Vue根实例的store配置项。

这些内容都可以在官网上找到,建议详细阅读官网文档及github仓库。

为什么选择使用NUXT做SSR?

1.配置非常简单:我们只需关注前端内容,不需要对服务端的内容了解很多就可以完成服务端渲染。

2.文档友好:开发文档通熟易懂,非常详细,内容完善。

3.无需考虑数据传输问题,nuxt 会在模板输出之前异步请求数据(需要引入 axios 库),而且对 vuex 有进一步的封装

4.内置了 webpack,省去了配置 webpack 的步骤,nuxt 会根据配置打包对应的文件。

5.不用写路由,自动根据目录结构生成路由。

小结

框架本身还有很多地方需要优化,所以也只能踩一个坑补一个坑,有时间要多看看源码,改源码。

NUXT目前来讲在大型项目中应用较少,只是比较适用于轻量级的,偏展示型的网站。


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • VUE中引用路径的配置
    在vue项目开发中经常引用JS、CSS、IMG文件。当项目较大时文件层级很多,导致路径很长,我们可以通过在bulidwebpack.base.conf.js设置简便的引用路径一、 ... [详细]
  • Oracle 和 mysql的9点区别【MySQL】
    数据库|mysql教程oracle,Oracle,money,mysql,coun数据库-mysql教程1.组函数用法规则mysql中组函数在select语句中可以随意使用,但在o ... [详细]
  • ORACLE空间管理实验5:块管理之ASSM下高水位的影响
    数据库|mysql教程ORACLE,空间,管理,实验,ASSM,下高,水位,影响,数据库-mysql教程易语言黑客软件源码,vscode左侧搜索,ubuntu怎么看上一页,ecs搭 ... [详细]
author-avatar
勿泊心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有