前置知识

SSR服务器渲染

Vue SSR(server side rendering)服务端渲染 和 Vue SPA(single page application)单页应用

Vue SSR->将本来要放在浏览器执行创建的组件,放到服务端先创建好,然后生成对应的html
将他们直接发送到浏览器,最后将这些静态标记激活为客户端完全可交互的应用程序

SSR针对SPA的好处:

1)更好的SEO,由于搜索引擎抓取工具可以直接查看完全渲染后的页面

2)更快的到达时间(time-to-content),特别是对网络慢或者运行缓慢的设备

不好的地方:

1)开发条件所限。浏览器特定的代码,只能在某些生命周期钩子函数(lifecycle hook)中使用

2)涉及构建设置和部署的要求更多

3)更多的服务器端负载

Nuxt.js

Nuxt.js是使用 Webpack 和 Node.js 进行封装的基于Vue的SSR框架

它可以不需要自己搭建SSR程序,而是通过约定好的文件结构和API即可实现一个首屏渲染的Web应用

安装

1、先安装vue-cli(只需安装一次,安装过就不用装了)

2、使用vue安装nuxt

vue init nuxt/starter mynuxt(项目名)

然后cd mynuxt

3、使用npm install安装依赖包

npm install

4、最后启动服务

npm run dev

文件结构

assets:资源文件,放置需要经过 webpack 打包处理的资源文件,如 scss,图片,字体等

component 组件,这里存放在页面中,可以复用的组件

layouts 布局,所有页面都会加载在布局页面中的 <nuxt /> 标签中

middleware 中间件,可以在页面中调用: middleware: 'middlewareName'

pages 页面,用于生成对应路由,支持嵌套,支持动态路由

plugins 插件,SPA中用的各类第三方组件和一些node模块都可以在这引入

static 静态文件,放置不需要经过 webpack 打包的静态资源。如一些 js, css 库

store 状态管理,内置了vuex,可以直接返回数据模块或返回一个自建vuex根对象

nuxt.config.js,文件用于组织Nuxt.js 应用的个性化配置,以便覆盖默认配置

nuxt.config.js配置文件

对程序的扩展管理可大概分为以下类:

/*
build:主要对应 Webpack 中的各配置项,可以对默认的 Webpack 配置进行扩展,如这里代码
cache:主要对应内置的组件缓存模块lru-cache的配置对象,有默认值,可选关闭
css:对应我们在SPA随处引用样式文件的require语句
dev:用于自定义配置环境变量,对应之前webpack.config.js相关文件中的变量语句
env:同上息息相关
generate:对generate命令执行时的行为做一些定制
head:对应vue-meta插件的全局配置,vue-meta用于VUE/SSR程序的文档元信息的管理
loading:用于定制化Nuxt.js内置的进度条组件
performance:用于配置Node.js服务器性能上的配置
plugins:用于管理和应用对应plugins文件夹中的插件
rootdir:用于设置 Nuxt.js 应用的根目录(这俩api有很大合并的意义)
srcdir:用于设置 Nuxt.js 应用的源码目录(这俩api有很大合并的意义)
router:用于对vue-router的扩展和定制,其中还包括了中间件的配置,但并不完美
transition:用于定制Nuxt.js内置的页面切换过渡效果的默认属性值
watchers:用于定制Nuxt.js内置的文件监听模块chokidar和 Webpack 的相关配置项
*/

配置IP和端口

在package.json里面进行配置

   "config":{
"nuxt":{
"host":"127.0.0.1",
"port":"2019"
}
}

配置好后,输入npm run dev重启下服务即可

路由

Nuxt.js 根据 pages 目录结构去生成 vue-router 配置,也就是说 pages 目录的结构直接影响路由结构

|-- pages
|-- posts
|-- index.vue
|-- welcome.vue
|-- about.vue
|

会生成

routes: [
{
path: '/posts',
component: '~pages/posts/index.vue'
}, {
path: '/posts/welcome',
component: '~pages/posts/welcome.vue'
}, {
path: '/about',
component: '~pages/about.vue'
}, {
path: '/',
component: '~pages/index.vue'
}
]

还可以在文件名前加 _

|-- pages
|-- _about.vue
|-- index.vue

会生成

routes: [
{
path: '/',
component: '~pages/index.vue'
}
]

动态路由

在pages/news下建立_id.vue

以下划线为前缀的Vue文件就是动态路由,然后在文件里边有 $route.params.id来接收参数

<template>
<div>
<h3>new-content</h3>
<p>newsId:{{$route.params.id}}</p>
<ul>
<li>Home</li>
</ul>
</div>
</template>

pages/news/index.vue

进入了新闻详细页,并在详细页中取得了传递过来的新闻ID

<template>
<div>
<h3>news page</h3>
<p>newsID:{{$route.params.newsId}}</p>
<ul>
<li><a href="/">HOME</a></li>
<li><a href="/news/123">new-1</a></li>
<li><a href="/news/p">new-2</a></li>
</ul>
</div>
</template>

下面是动态参数校验

export default {
validate({params}){
//params的id必须是一个数字
return /^\d+$/.test(params.id);
}
}

使用了validate方法,并把params传递进去,然后用正则进行了校验,如果正则返回了true正常进入页面,如果返回false进入404页面

比如new-2传的id不是数字

<template>
<div>
<h3>news page</h3>
<p>newsID:{{$route.params.newsId}}</p>
<ul>
<li><a href="/">HOME</a></li>
<li><a href="/news/123">new-1</a></li>
<li><a href="/news/p">new-2</a></li>
</ul>
</div>
</template>

当点击new-2的时候就会进入404页面

默认模板和默认布局

只要修改默认模板时候都需要npm run dev 重启下服务

默认布局主要针对于页面的统一布局使用。它在位置根目录下的layouts/default.vue。需要注意的是在默认布局里不要加入头部信息,只是关于<template>标签下的内容统一订制

Nuxt.js笔记的更多相关文章

  1. 🏃‍♀️点亮你的Vue技术栈,万字Nuxt.js实践笔记来了~

    前言 作为一位 Vuer(vue开发者),如果还不会这个框架,那么你的 Vue 技术栈还没被点亮. Nuxt.js 是什么 Nuxt.js 官方介绍: Nuxt.js 是一个基于 Vue.js 的通用 ...

  2. Nuxt.js 学习笔记

    起源 最主要的原因时使用vue-cli搭建的SPA(单页应用)不利于搜索引擎的SEO操作.搜索引擎对SPA的抓取并不好,特别是百度根本没法抓取到SPA的内容页面,所以我们必须把我们的应用在服务端渲染成 ...

  3. Nuxt.js 踩坑笔记 - 缓存向

    零.前言 最近参与了一个立足 seo 的移动端项目,公司前端工程主栈 vue,所以理所当然的用上了 nuxt,UI 主要选择了 Vant.   一.公共列表页的缓存 公共列表页由于数据量较大,故需要滚 ...

  4. Nuxt.js logoVue.js 后端渲染开源库 Nuxt.js

    Nuxt.js 是一个通过 Vue 用于服务端渲染的简单框架,灵感来自 Next.js. 目前尚处于开发阶段,1.0 版本即将发布 1 分钟视频演示 Nuxt 基于 ES2015,这使得代码有着更愉快 ...

  5. 今天聊一聊nuxt.js(上)

    背景 近期在做内部系统的重构,从一线业务彻底的重构,经过充分的考虑我们准备把这个项目打造成前台业务的试验站,比如ssr和一些其他的前沿技术的探索,积累充分的经验后待合适的契机应用到C端的项目中. 既然 ...

  6. Vue 爬坑之路(十一)—— 基于 Nuxt.js 实现服务端渲染(SSR)

    直接使用 Vue 构建前端单页面应用,页面源码时只有简单的几行 html,这并不利于网站的 SEO,这时候就需要服务端渲染 2016 年 10 月 25 日,zeit.co 背后的团队对外发布了一个 ...

  7. 从壹开始 [ Nuxt.js ] 之二 || 项目搭建 与 接口API

    前言 哈喽大家周一好,今天的内容比较多,主要就是包括:把前端页面的展示页给搭出来,然后调通接口API,可以添加数据,这两天我也一直在开发,本来想一篇一篇的写,发现可能会比较简单,就索性把项目搭建的过程 ...

  8. 从壹开始 [ Nuxt.js ] 之一 || 为开源收录Bug之 TiBug项目 开篇讲

    缘起 哈喽大家周二好呀,刚刚经历过了几天火车抢票,整个人都不好了,不知道小伙伴对今年的春节是否还一如既往的期待呢,眼看都要春节了,本来也想写篇2018总结篇,但是怕不免会出现鸡汤文的窠臼嫌疑,想想还是 ...

  9. 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 二八║ Nuxt 基础:面向源码研究Nuxt.js

    前言 哈喽大家周五好,又是一个开开心心的周五了,接下来就是三天小团圆啦,这里先祝大家节日快乐咯,希望都没有加班哈哈,今天公司发了月饼,嗯~时间来不及了,上周应该搞个活动抽中几个粉丝发月饼的,下次吧,这 ...

随机推荐

  1. Linux ssh登陆慢的两种原因分析

    Linux ssh登陆慢的两种原因分析 如果做运维就一定会遇到ssh登陆Linux服务器慢的问题,问题比较好解决,一般Google之后有很多文章都告诉你解决方法,但是很少有文章分析为什么会慢,这篇文章 ...

  2. 经度和纬度在SQL中的数据类型

    冬天太冷,等坐公司班车也很冷,就萌生了给班车做一个到站查询功能. 在某宝上买了汽车在线的GPS设备, 终生免费的服务的. 这里不得不提下这个设备的优点, 它提供API接口,还是免费的. 所以在班车上装 ...

  3. SQL SERVER 2012 AlwaysOn - 操作系统层面 01

    搭建 AlwaysOn 是件非常繁琐的工作,需要从两方面考虑,操作系统层面和数据库层面,AlwaysOn 非常依赖于操作系统,域控,群集,节点等概念: DBA 不但要熟悉数据库也要熟悉操作系统的一些概 ...

  4. windows server 几大实时同步软件比较

    需求: 从Windows Server 主机A 到 Windows Server 主机B 之间同步目录 方案一: 1. 使用bat脚本 + 计划任务的方式 1.1 bat脚本 功能: 把主机A的C:\ ...

  5. PhpStorm 常用快捷键

    PhpStorm 常用快捷键 File Structure 路径: Main menu > Navigate > File Structure 显示当前文件的类和函数结构,便于查找当前文件 ...

  6. nginx 配置 rewrite 跳转

    在访问 test.com 网站时,会自动跳转到 www.test.com ,这是因为该网站做了 URL rewrite 重定向,一般网页重定向跳转分为两种,301 和 302 :301,302 都是H ...

  7. CSS有哪些引入方式,link和@import的区别

    3种方式哦,行内样式.内部样式表.外部样式表 1. 行内样式又称为内联样式,直接在HTML标签的style属性中添加css. 会导致 HTML 代码变得冗长 2. 内部样式表又称为嵌入方式,是在HTM ...

  8. mybatis中常见的问题总结

    如下所有举例基于springboot+mybatis项目中,SSH使用mybatis的写法也一样,只是形式不同而已 问题1.org.apache.ibatis.binding.BindingExcep ...

  9. Python网络爬虫精要

    目的 学习如何从互联网上获取数据.数据科学必须掌握的技能之一. 本文所用到的第三方库如下: requests, parsel, selenium requests负责向网页发送HTTP请求并得到响应, ...

  10. 如何实现Echart不刷新页面,多语言切换下的地图数据重新加载,api请求数据加载,soketed数据实时加载

    可视化项目中经常用到ecahrt,各种异步加载,连接socket,多语言切换等问题,现在汇总一下: Ecahrt初始化,全局统一init,可以初始化为0,等待后续数据操作 1.如果是api重新请求,数 ...