美文网首页
vue服务器端渲染

vue服务器端渲染

作者: 蜗牛和曼巴 | 来源:发表于2018-10-22 09:47 被阅读0次

1.服务器端渲染时。第一次请求页面的时候,由服务器帮忙发送请求拼接好数据,并将拼接好的页面数据返回交给前端渲染。
2.当下次客户端要去跳转页面的时候,此时页面结构页面中的数据全部交给客户端渲染

npm i create-nuxt-app -g
create-nuxt-app my-nuxt-demo    //my-nuxt-demo  是名字,选择的时候第一个确定,第二个额选择none,第三个选择none,第四个选择选un,第五个看情况选择,第六个yes,第七个none,第八个确定,第九个npm
cd my-nuxt-demo
npm run dev

路由跳转
第一种方式:

给相应的标签绑定@click=’jumpTo’
然后在函数方法中//
this.$router.push('/相应的路径')

第二种,如果使用组件跳转用nuxt-link组件,它和router-link作用一样,必须要有to属性

    <li 
        v-for="(item,index) in teachers" 
        :key="index" 
      >
        <nuxt-link to="/teacher/deta">
          {{ item.name }}
        </nuxt-link>
       
      </li>

路由参数
在详情页文件夹中创建一个文件夹叫_id文件夹,把详情页写在里面。
然后在需要点击跳转的页面里加``好跟相应的id
参数校验
校验路由参数,通过validte方法去校验,这个方法不能写到methods中,有一个必须返回的返回值,该值为布尔类型。如果为true就表示校验通过,如果为false就表示校验不通过, 那么就会报页面没有找到

  validate(obj) {
    // 参数里面可以获取到路由参数
    return /^\d+$/.test(obj.params.id)
  }

嵌套路由

  1. 添加一个Vue文件,作为父文件
  2. 添加一个与父文件同名的文件文件夹来存放子视图组件
  3. 在父文件中,添加<nuxt-child></nuxt-child>组件,用于展示匹配到的子视图

components
在components文件夹下面新建一个Header.vue组件
引入组件,注意路径的~符号,表示根目录

import .......
components:{}
挖坑

创建layout

  1. 去layouts文件夹下面新建一个新的layout组件,例如teachers.vue,并在这个组件中添加<nuxt />组件,这样,所有和teachers相关的页面都会有公共的layout
  2. 给需要用到teachers.vue的组件添加layout属性,并指定需要使用的layout,例如:layout: 'teachers'在js中
    1.3.2 创建特殊layout : error
    layouts文件夹下面新建error.vue,error是关键字
    1.3.4 样式配置

nuxt.config.js中设置设置全局样式文件路径,例如

      css: [
        '~/assets/styles/index.css'
      ],

ElementUI使用

  1. 下载npm i element-ui -S
  2. 在plugins文件夹下面,创建ElementUI.js文件
import Vue from 'vue'
import ElementUI from 'element-ui'
Vue.use(ElementUI)

3.在nuxt.config.js中添加配置

css: [
  'element-ui/lib/theme-chalk/index.css'
],
plugins: [
  {src: '~/plugins/ElementUI', ssr: true }
],
build: {
  vendor: ['element-ui']
}

异步数据
如果在created钩子中写异步,是在客户端渲染的而不是在服务端
asyncData(context, callback) {callback(null, data)}
这个函数中不能使用this
context.route.params.xxx获取参数
callback(new Error(), data)渲染出错的页面
这个方法在服务器端执行和在客户端执行的区别
axios的使用
安装

npm install --save axios

使用

import axios from 'axios'

asyncData(context, callback) {
  axios.get('http://localhost:3301/in_theaters')
    .then(res => {
      console.log(res);
      callback(null, {list: res.data})
    })
}

为防止重复打包,在nuxt.config.js中配置

module.exports = {
  build: {
    vendor: ['axios']
  }
}

相关文章

  • 服务端渲染

    服务器端渲染(SSR) 学前准备 ES6 Node Vue 什么是服务器端渲染 前端渲染:html页面作为静态文件...

  • ssr文档学习

    Vue SSR 服务器端渲染 Vue.js 可以将同一个组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏...

  • Vue-服务器端渲染(SSR)

    Vue服务器端渲染 1. 关于vue项目的seo(搜索引擎优化)问题 2. 服务端渲染介绍: Ⅰ. 从网页的渲染方...

  • Vue SSR

    nuxt.js 通用 vue.js SSRSSR : 服务器端 vue渲染 html 返回浏览器SEO : VU...

  • Vue 服务端渲染

    什么是服务器端渲染 (SSR)? Vue.js 是构建客户端应用程序的框架。但是可以将组件在服务器端渲染为 HTM...

  • vue-ssr入门学习

    vue刚完成一个项目,有点时间就研究起了vue-ssr(vue在服务器端渲染),本来准备研究nuxt(一个vue服...

  • vue+node 打造简易商城系统

    vue和react的相同之处 利用虚拟DOM实现快速渲染; 轻量级; 响应式组件; 服务器端渲染; 易于集成路由工...

  • prerender-spa-plugin 预渲染插件的使用说明

    1:单页面应用不利于SEO SSH服务器端渲染 预渲染** 我用的脚手架 vue-cli webpack打包目录...

  • 【nuxt.js笔记】在nuxt.js中使用axios

    nuxt.js是基于vue的服务器端渲染框架,它使得基于vue的SPA应用变得非常简单。axios是当下最热门的a...

  • Vue学习路线图

    Vue 概述 如果你是一名 Vue 开发新手,可能已经听过很多行话术语,比如单页面应用程序、异步组件、服务器端渲染...

网友评论

      本文标题:vue服务器端渲染

      本文链接:https://www.haomeiwen.com/subject/siywzftx.html