哈喽你们好,又是周四了,俗话说周四来了,周末还远么哈哈,老张我也想下周请假,来个16天的大长假哟,不知道你们是怎么请假的,近来发现文章下边已经没有人评论了,赶脚比较凄凉了,你们看到的麻烦点个赞呀说个话呀,增长下人气哈哈,刚刚忽然想到原来问题都跑到群里了,也是,当初建立群的目的就是解决问题滴,不能本末倒置了 [ 苦笑 ],通过一个月的书写《.net core(13)》、《Vue学习(13)》上下两部入门教程已经结束,今天开始一个 Vue 的补充教程 —— Nuxt.js 一个基于 Vue 应用的 SSR 教程,由于这个系列教程是辅助 Vue 的,可是又不属于咱们以前的正规系列教程里,因此我就暂时命名为补充教程吧,若是说你接触过这个呢,说明你的 vue 已经很好了,至少是已经搭建过 vue-cli 脚手架的项目了,若是说没有用过 Nuxt.js 那正好能够一块儿来看一看,我我的赶脚Vue的SSR是一个趋势,因此仍是多说一说吧,若是你还对 SSR 不了解,或者是第一次看个人系列教程,请换传送门《 二十五║初探SSR服务端渲染(我的博客二)》和《二十六║Client渲染、Server渲染知多少{补充}》。好啦开始今天的讲解css
最终我们会一步步开发咱们的第二个项目 —— 基于 Nuxt 的我的博客 动图html
这个博客项目已经发布:http://123.206.33.109:26898/前端
我还有一个nuxt 的项目,是提bug 的,也能够看看 http://www.javashuo.com/article/p-pawscobz-z.htmlvue
MV* 发展初期,先后端分离成为可能,各类项目框架如雨后春笋通常,所有都出现了,一直平静的前端慢慢的走进你们的视野,那个时候不是简简单单的切图画页面,而是开始考虑如何用面向对象的思惟开发,当时你们还热衷于 Jquery 没法自拔,时间在那个时候是2012年以前;node
2012年,36氪记者采访了尤大大,并发了一篇文章其中有这么一句话:“Evan 但愿能经过这个举动引发科技公司的注意,向他伸出橄榄枝。”,并附上了做者尤雨溪的微博、Twitter 与我的网站。做者的作法,我以为你们应该借鉴,掌握好 Vue.js,让你心仪的公司注意到你。webpack
针对知乎上关于 Vue.js 的一个提问,尤雨溪的回答说出了最初的开发初衷,即“作 Vue.js 的初衷很单纯,不是为了赚大钱,不是为了成为大神,也不是由于我发现了什么不得了的创新点。我只是想作一个我本身会喜欢的框架。很巧,我把我想要的东西作出来之后,也有不少其余人喜欢,因此用户愈来愈多。我从没说过,也不认为 Vue.js 比全部其余框架都好(我一直的观点都是开发者偏好的多样性使得多框架/语言的共存有益无害,甚至是必要的) 。”git
这个时候 Vue 还仅仅是一个无名小卒,虽然搭上了 MV* 的顺风车,只不过尚未正式起飞。github
又过了三年,2015年开始,在各大论坛技中,与 Vue.js 这一相关词语的内容爆炸式增加,在前端技术增速中独领风骚,迅速成为前端三巨头之一。记得在某个社区中有人这样介绍三巨头“来自 Google 的 Angular,来自 Facebook 的 React,来自开源社区的 Vue.js”,虽然你们如今仍是经过百度发现vue的市场占用量较少,可是它快速发展的势头依旧势不可挡。web
在 2016 年,Vue 已经正式崛起,开始出如今了某些公司,某些大厂也开始使用,而且也依旧与 React 、NG并肩飞奔。vue-router
虽然 vue 开发速度很快,可是也是一直在更新,完善和发布,最大的一个问题就是——如何解决SEO的问题,这是全部 MV* 所面临的一个共同的问题,你们也一直在摸索。若是不尝试改变,这个历史问题会随着自身的快速发展而变得愈来愈严重,到时候会成为一个严重的短板效应,可是又不能回到 web1.0 时代,那样 先后端分离会成为一个失败品。如何更好的推出 SSR 服务,成为历史必然趋势。
直到2016 年 10 月 25 日,zeit.co 背后的团队对外发布了 Next.js,一个 React 的服务端渲染应用框架。几小时后,与 Next.js 殊途同归,一个基于 Vue.js 的服务端渲染应用框架应运而生,咱们称之为:Nuxt.js。这固然是历史上的一个重要进步,两大前端架构同时解决了这个历史问题,
来自官方的讲解:
Nuxt.js 是一个基于 Vue.js 的通用应用框架。
经过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI渲染。
咱们的目标是建立一个灵活的应用框架,你能够基于它初始化新项目的基础结构代码,或者在已有 Node.js 项目中使用 Nuxt.js。
Nuxt.js 预设了利用Vue.js开发服务端渲染的应用所须要的各类配置。
除此以外,咱们还提供了一种命令叫:nuxt generate,为基于 Vue.js 的应用提供生成对应的静态站点的功能。
咱们相信这个命令所提供的功能,是向开发集成各类微服务(microservices)的 Web 应用迈开的新一步。
做为框架,Nuxt.js 为
客户端/服务端
这种典型的应用架构模式提供了许多有用的特性,例如异步数据加载、中间件支持、布局支持等。
它集成了 Vue 2.0 、vue-router、和 vuex(固然这个不是必须的),在 vue-cli 脚手架开发过程当中,咱们会经过 webpack 进行项目打包构建工做,因此咱们会每次开发好,进行打包,可是Nuxt.js 是使用 webpack 和 vue-loader来自动化处理构建工做,还记得我们上一篇文章中提到了,咱们经过 webpack-server.js 来手动打包生成能够运行在 node 环境的服务器捆绑渲染器,而后 开启服务,就能实现服务器渲染了,在这里 Nuxt.js 为咱们自动化的处理了这个过程,原理你们应该都清楚了。
特性以下
因此,这个框架是基于 vue 开发的,你们必定须要有必定的 vue 开发基础,接触 nuxt 框架才能更加驾轻就熟。
执行命令
vue init nuxt-community/starter-template blognuxt
//或者采用如今官方的安装方案
npx create-nuxt-app 项目名
而后简单对项目进行三项配置,一直 Enter 就行。
而后就发现咱们的项目已经安装好了,下面重点说一下这些文件的含义。
若是采用官方的这个新的安装方案,能够看这里
├── assets // 资源文件。用于组织未编译的静态资源入LESS、SASS 或 JavaScript ├── components // 组件。用于本身编写的Vue组件,好比滚动组件,日历组件,分页组件 │ └── AppLogo.vue // 默认logo组件 ├── layouts // 布局。页面都须要有一个布局,默认为 default。它规定了一个页面如何布局页面。全部页面都会加载在布局页面中的 标签中。
若是须要在普通页面中使用下级路由,则须要在页面中添加 。该目录名为Nuxt.js保留的,不可更改。 │ └── default.vue // 默认模板页面 ├── middleware // 中间件。存放中间件。能够在页面中调用: 。 ├── pages // 页面。一个 vue 文件即为一个页面。index.vue 为根页面 │ └── index.vue // 默认首页面 ├── plugins // 用于存放JavaScript插件的地方 ├── static // 用于存放静态资源文件,好比图片 ├── store // 用于组织应用的Vuex 状态管理。 ├── .editorconfig // 开发工具格式配置 ├── .eslintrc.js // ESLint的配置文件,用于检查代码格式 ├── .gitignore // 配置git不上传的文件 ├── nuxt.config.js // 用于组织Nuxt.js应用的个性化配置,已覆盖默认配置 ├── package.json //npm包管理配置文件 └── README.md // 说明文档<nuxt /><nuxt-child />middleware: 'middlewareName'
layouts: 布局。页面都须要有一个布局,默认为 default。它规定了一个页面如何布局页面。全部页面都会加载在布局页面中的 <nuxt /> 标签中。若是须要在普通页面中使用下级路由,则须要在页面中添加 <nuxt-child />。该目录名为Nuxt.js保留的,不可更改。。
pages: 页面。一个 vue 文件即为一个页面。index.vue 为根页面。若须要二级页面,则添加文件夹便可。无需配置路由
若是页面的名称相似于 _id.vue (以 _ 开头),则为动态路由页面,_ 后为匹配的变量(params)。
若变量是必须的,则在文件夹下创建空文件 index.vue。更多的配置请移步至 官网 。
plugin: 插件。用于组织那些须要在 根vue.js应用 实例化以前须要运行的 Javascript 插件。须要注意的是,在任何 Vue 组件的生命周期内, 只有 beforeCreate 和 created 这两个钩子方法会在 客户端和服务端均被调用。其余钩子方法仅在客户端被调用。
static: 静态文件。放置不须要通过 webpack 打包的静态资源。如一些 js, css 库。
生成了不少文件夹,经过总体结构,你们能够看出来,项目又一次被精简了,从 vue-cli 2.0 到 vue-cli 3.0 我们的项目结构是一直在精简,主要都封装起来,经过依赖包进行处理,这愈来愈像我们以前的 .net core api 了。
执行 npm install 安装咱们的依赖包
npm install
而后执行 npm run dev,运行项目
npm run dev
这个上半部就是咱们的 components 文件下的 AppLogo.vue 实现的动态效果。
<template> <section class="container"> <div> <app-logo/> <h1 class="title"> 欢迎:老张的哲学 </h1> <h2 class="subtitle"> 一个 nuxt 工程 </h2> <div class="links"> <a href="https://nuxtjs.org/" target="_blank" class="button--green">博客园</a> <a href="https://github.com/nuxt/nuxt.js" target="_blank" class="button--grey">GitHub</a> </div> </div> </section> </template> <script> import AppLogo from '~/components/AppLogo.vue'//统一使用 波浪线~ 来代替 斜杠/ export default { components: { AppLogo } } </script>
这些内容你们必定就是很熟悉了,若是开发过 vue 的话,项目直接执行咱们的修改,查看浏览器
你们能够看出来,不只咱们的页面渲染了,咱们的项目源代码也把内容渲染出来了,这样就达到了咱们的SSR 服务端渲染的目的。那具体是如何运行的呢,明天我们深刻了解下其中的原理。
好啦,今天就暂时说这么多吧,后边还有不少知识点,今天我们简单了解了下这个 nuxt.js 框架,明白了安装过程,已经项目结构的基本骨架,固然这仅仅是九牛一毛,nuxt 做为一个框架,虽然说是依赖于 vue 之上,可是仍是有本身的东西,好比动态路由,中间件,异步数据,状态树,视图等等等等,这些我们都会在之后说到。明天会重点说下 nuxt 的运行原理
这是刚刚建立的空的框架,之后就在这基础上封装搭建了。