Giter Site home page Giter Site logo

ssr's Introduction

Nuxt.js 是什么?

Nuxt.js 是一个基于 Vue.js 的通用应用框架。

通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI渲染。

我们的目标是创建一个灵活的应用框架,你可以基于它初始化新项目的基础结构代码,或者在已有 Node.js 项目中使用 Nuxt.js。

Nuxt.js 预设了利用Vue.js开发服务端渲染的应用所需要的各种配置。

除此之外,我们还提供了一种命令叫:nuxt generate,为基于 Vue.js 的应用提供生成对应的静态站点的功能。

我们相信这个命令所提供的功能,是向开发集成各种微服务(miscroservices)的 Web 应用迈开的新一步。

作为框架,Nuxt.js 为 客户端/服务端 这种典型的应用架构模式提供了许多有用的特性,例如异步数据加载、中间件支持、布局支持等。(官方说明-。- 建议大家在学习之前先将官方文档看一遍,大体有个了解然后再来进行实际操作)

安装Nuxt

好了,不吡吡了其他没用的了,下面开始正文; 使用Nuxt有两种方式: 1.使用官方给的新手模版:

$ vue init nuxt-community/starter-template <project-name>

project-name 是你建立的项目的名称


$ cd <project-name>
$ npm install # Or yarn

进入你建立好的项目的文件夹下 ,然后安装项目所需要的依赖; 建议使用yarn安装依赖

$ npm run dev

执行启动命令,启动成功之后打开浏览器输入:http://localhost:3000 就可以看到你建立的项目了

2.如果不想使用官方推荐的哪种方式也可以自己手动配置一个(个人建议,新手上路还是使用官方推荐的那种方式) 首先新建一个文件夹

$ mkdir <项目名>
$ cd <项目名>

然后在你建立的文件夹下新建一个package.json文件 该文件用来配置如何运行nuxt:

{
  "name": "my-app",
  "scripts": {
    "dev": "nuxt"
  }
}

上面配置我们通过npm run dev来运行nuxt 安装nuxt:

npm install --save nuxt

然后新建一个pages文件夹

$ mkdir pages

在pages文件夹下新建一个index.vue文件(Nuxt.js 会依据 pages 目录中的所有 *.vue 文件生成应用的路由配置。)

<template>
  <h1>Hello Nuxt!</h1>
</template>

启动项目

$ npm run dev

最后打开浏览器访问 http://localhost:3000 就像可以了

本文将的是使用官方给的模版进行搭建的项目(毕竟我还年轻-。-)

项目目录结构

assets文件夹 用于组织未编译的静态资源如 LESS、SASS 或 JavaScript。 components文件夹 用于放置项目公用的组件。 config文件夹 一些基本配置,比如 env.js fetch.js等。 layouts文件夹 用于组织应用的布局组件。 middleware文件夹 用于放置一些项目的中间件。 pages文件夹 用于组织应用的路由及视图。Nuxt.js 框架读取该目录下所有的 .vue 文件并自动生成对应的路由配置。 plugins 用于放置项目所用到的插件,比如axios element-ui 等。 server 用于放置项目服务器配置,比如配置express 或者你自己做的假数据等。 static 用于放置一些静态文件,并且这个文件夹下的资源是不会被nuxt使用webpack进行打包编译的,服务器启动的时候,该目录下的文件会映射至应用的根路径 / 下。 store 目录用于组织应用的 Vuex 状态树 文件。 Nuxt.js 框架集成了 Vuex 状态树 的相关功能配置,在 store 目录下创建一个 index.js 文件可激活这些配置。 backpack.config.js是因为我项目中配置server使用的。 nuxt.config.js是nuxt相关的基础配置。 其中需要重点了解的是nuxt.config.js,nuxt.js在项目的搭建的时候已经给你配置好了一些相关的基础配置,当你的项目需要修改这些配置的时候,就需要在next.config.js进行操作了,他会将默认的配置进行覆盖,已达到你项目中需要的效果。官方链接

路由

在使用nuxt.js的过程中你会发现你不需要进行路由的配置,只需要根据自己项目的需求将对应的文件建在pages文件夹下就可以了,nuxt.js会根据这个文件的目录结构自行的进行路由的配置。

视图

包括模版,页面,布局,html头部

数据处理

Nuxt.js 扩展了 Vue.js,增加了一个叫 asyncData 的方法,使得我们可以在设置组件的数据之前能异步获取或处理数据。 你可以在你的页面里这样配置:

async asyncData () {
    let { data } = await axios.get('/api/teacherList')
    return {
      teacherList: data.teacherList
    }
}

asyncData方法会在组件(限于页面组件)每次加载之前被调用。它可以在服务端或路由更新之前被调用。(就是大家需要的服务端渲染 >_< )

asyncData方法也具备错误处理的能力 Nuxt.js 在上下文对象context中提供了一个 error(params) 方法,你可以通过调用该方法来显示错误信息页面。params.statusCode 可用于指定服务端返回的请求状态码。

以返回 Promise 的方式举个例子:

export default {
  asyncData ({ params, error }) {
    return axios.get(`https://my-api/posts/${params.id}`)
    .then((res) => {
      return { title: res.data.title }
    })
    .catch((e) => {
      error({ statusCode: 404, message: 'Post not found' })
    })
  }
}

当然也可以通过回调函数进行处理,这个文档将的也非常清楚

有同学可能会问,那如果我要是需要做数据交互怎么办,其实这个更简单,就是跟大家平时做vue的项目是一样的:

methods:{
    getMore (){
        axios.get('/api/messageList').then((res)=>{
            this.messageList = this.messageList.concat(res.data);
        })
    }
}

vuex

vuex的使用其实和平时的vue项目中使用vuex是类似的,如果你在vue中能够熟练使用vuex,那么在nuxt当中对于你来说也不会特别困难。这里我就不给大家将vuex里,我怕我越说大家可能与无法理解🤦 (我理解的vuex就是一个可以当作全局变量使用的一个东西,也有大佬将vuex比做是前端项目的数据库 nuxt中使用vuex文档

server

最后跟大家说一下我的server吧 index是我使用express的一些配置,便于我写的假数据能够进行正常的请求 api文件里面是我自己配置的一些假数据。(这些数据简直不忍直视 -。- 大家凑合着看吧)

最后给大家附上我的项目地址(一个简单到爆的项目,欢迎大家的吐槽 🐶)

ssr's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ssr's Issues

关于预渲染

请问你是怎么做预渲染的?我这里增加了meta标签固定屏幕的显示大小,页面先是没固定到后面meta标签生效,其中有一个变化过程,用户全都可以看到,请问有什么办法让他渲染好了再呈现,谢谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.