nuxt.js

官网地址:https://zh.nuxtjs.org/guide/installation

1.安装

vue init nuxt-community/starter-template <project-name>
cd <project-name>
npm install npm run dev

2.目录结构

2.1 layout

  • layout/blog.vue
<template>
<section>
<div>这里是博客导航</div>
<nuxt/>
</section>
</template>
  • layout/error.vue
<template>
<div class="container">
<h1 v-if="error.statusCode === 404">页面不存在</h1>
<h1 v-else>应用发生错误异常</h1>
<nuxt-link to="/">首 页</nuxt-link>
</div>
</template> <script>
export default {
props: ['error'],
layout: 'blog' // 你可以为错误页面指定自定义的布局 ,这个是上一个文件
}
</script>

3.路由

3.1 validate 方法 页面校验

Nuxt.js 可以让你在动态路由对应的页面组件中配置一个校验方法用于校验动态路由参数的有效性。

<script>
export default {
validate ({ params }) {
// 这里校验必须为数字,parems.info info是文件名字
return /^\d+$/.test(params.info)
}
}
</script>

3.2 路由跳转

<nuxt-link to="/">首 页</nuxt-link>

4.发送请求

  • async await
<script>
async asyncData({ params }) {
var url = "http://dev.api.looklook.cn/kt_server/common/orderquery"; var params_data = {
out_trade_no: "1529386449613100027156",
sign: "454C7C068BCEAA4ADC01F0AD4EDC5385",
time: "1530110050760"
}; let res = await axios.post(url, params_data);
return {
response: res.data.data.information
};
}
</script>
  • Promise
asyncData({params}) {
let that = this; var url = "http://dev.api.looklook.cn/kt_server/common/orderquery"; var params_data = {
out_trade_no: "1529386449613100027156",
sign: "454C7C068BCEAA4ADC01F0AD4EDC5385",
time: "1530110050760"
};
return axios
.post(url, params_data)
.then(function(response) {
return {
response: response.data.data.information
}
})
.catch(function(error) {
console.error(error);
});
}
  • 普通请求
created() {
let that = this; var url = "http://dev.api.looklook.cn/kt_server/common/orderquery"; var params = {
out_trade_no: "1529386449613100027156",
sign: "454C7C068BCEAA4ADC01F0AD4EDC5385",
time: "1530110050760"
};
axios
.post(url, params)
.then(function(response) {
that.response = response.data.data.information
})
.catch(function(error) {
console.error(error);
});
}

注意:

有一个值得注意的问题是,如果我们在另外一个页面内也引用了 axios,那么在应用打包发布的时候 axios 会被打包两次,而实际上我们只需要打包一次。这个问题可以通过在 nuxt.config.js 里面配置 build.vendor 来解决:

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

5.部署

  • 服务端部署
npm run build
npm run start 提示: 建议将 .nuxt 加入 .npmignore 和 .gitignore 文件中。
  • 静态资源部署
npm run generate

6. 引入element-ui

npm i element-ui -S
  • 再plugins 文件夹下,添加 ElementUI.js文件,内容如下:
import Vue from 'vue'
import ElementUI from 'element-ui'
Vue.use(ElementUI)
  • 在 nuxt.config.js中添加配置
plugins: [{
src: '~plugins/ElementUI',
ssr: true,
}],
css: [
'element-ui/lib/theme-chalk/index.css'
],
build:{
vendor:['element-ui'] //防止element-ui被打包多次
}

7.封装axios

在plugins 文件夹中 添加 axios.js

  • /plugins/axios.js
import axios from 'axios'
//定义fetch函数,config为配置
export function fetch(config){
//返回promise对象
return new Promise((resolve,reject) =>{
//创建axios实例,把基本的配置放进去
const instance = axios.create({
//定义请求文件类型
headers:{
'Content-Type': 'application/json',
},
// 请求超时
timeout: 3000,
//定义请求根目录
baseURL: 'http://dev.api.looklook.cn/kt_server/'
});
//请求成功后执行的函数
instance(config).then(res =>{
console.log(res);
resolve(res);
//失败后执行的函数
}).catch(err => {
console.log(err);
reject(err);
})
});
} // 封装调用的接口 getData
export function getData(url,type,data) {
//如果type为空,默认为post方法,也可以自己改成get
if(type==='')
type = 'post';
return fetch({
//这里的url为baseURL下接口地址,如baseURL为'www.baidu.com',接口地址为'www.baidu.com/api/getdata',那么url里就写'api/getdata'
url: url,
method: type,
data: data,
})
}
  • page/user/user.vue
<script>
import User from '~/components/User.vue'
import {getData} from '~/plugins/axios.js' export default {
components: {
User
},
async asyncData({ params, query }) {
var params_data = {
out_trade_no: "1529386449613100027156",
sign: "454C7C068BCEAA4ADC01F0AD4EDC5385",
time: "1530110050760"
}; let res = await getData('common/orderquery','POST',params_data)
return {
response: res.data.data.information
};
}
}
</script>

更改端口号

nuxt 默认端口号3000

package.json 里添加如下代码

  "config": {
"nuxt": {
"host": "0.0.0.0",
"port": "8080"
}
}

项目打包上线

1.删除node_moudles
2.删除package-lock.json 此文件里包含校验文件
3.npm run build
4.npm run generate
5.生成dist文件夹

nuxt 项目部署几项注意

1. node 版本>=8
2. vue 和 vue-server-renderer 版本一致

vuessr nuxt入门指南的更多相关文章

  1. Web API 入门指南 - 闲话安全

    Web API入门指南有些朋友回复问了些安全方面的问题,安全方面可以写的东西实在太多了,这里尽量围绕着Web API的安全性来展开,介绍一些安全的基本概念,常见安全隐患.相关的防御技巧以及Web AP ...

  2. Vue.js 入门指南之“前传”(含sublime text 3 配置)

    题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...

  3. yii2实战教程之新手入门指南-简单博客管理系统

    作者:白狼 出处:http://www.manks.top/document/easy_blog_manage_system.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文 ...

  4. 【翻译】Fluent NHibernate介绍和入门指南

    英文原文地址:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started 翻译原文地址:http://www.cnblogs ...

  5. ASP.NET MVC 5 入门指南汇总

    经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章.其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章言简意赅,篇幅适中,从一个web网站示例开始讲解 ...

  6. 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍

    我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...

  7. 一起学微软Power BI系列-官方文档-入门指南(2)获取源数据

    我们在文章: 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍中,我们介绍了官方入门文档的第一章.今天继续给大家介绍官方文档中,如何获取数据源的相关内容.虽然是英文,但 ...

  8. 一起学微软Power BI系列-官方文档-入门指南(3)Power BI建模

    我们前2篇文章:一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍 和一起学微软Power BI系列-官方文档-入门指南(2)获取源数据 中,我们介绍了官方入门文档与获取 ...

  9. 一起学微软Power BI系列-官方文档-入门指南(4)Power BI的可视化

    在前面的系列文章中,我们介绍了官方有关获取数据,以及建模的原始文档和基本介绍.今天继续给大家介绍官方文档中,有关可视化的内容.实际上获获取数据和建模更注重业务关系的处理,而可视化则关注对数据的解读.这 ...

随机推荐

  1. 深入分析Java Web技术内幕

    深入web请求过程 发起一个http请求的过程就是建立一个socket通信的过程 HTTPClient是一个开源的实现了http请求的工具包 深入分析java I/O的工作机制 深入分析java We ...

  2. Internet Explorer 6 的15个讨厌的bug和简单的解决方法

    关于bug更全的,我推荐去这个网站hasLayout,整理的非常全!三年前就看了,最近手生,又翻出来看看~~虽然上面有很多bug讲解,但是我觉得目前用的比较多或者说是常见的应该属下面这篇文章,15 a ...

  3. linq中let关键字学习

    linq中let关键字就是对子查询的一个别名,let子句用于在查询中添加一个新的局部变量,使其在后面的查询中可见. linq中let关键字实例 1.传统下的子查询与LET关键字的区别     C# 代 ...

  4. 【转】[.Net] 确定当前网站的物理文件路径

    确定当前网站的物理文件路径 在应用程序中,您可能需要确定服务器上的文件或其他资源的路径.例如,如果应用程序以编程方式对文本文件进行读写操作,则必须为用于读取和写入的方法提供该文件的完整物理路径. 将物 ...

  5. HDU 2054 又见GCD

    又见GCD Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  6. Java内存模型-final域的内存语义

    一 引言 说到final你肯定知道它是Java中的关键字,那么它所在Java中的作用你知道吗?不知道的话,请前往这篇了解下https://www.cnblogs.com/yuanfy008/p/802 ...

  7. [转]C++11 随机数学习

    相对于C++ 11之前的随机数生成器来说,C++11的随机数生成器是复杂了很多.这是因为相对于之前的只需srand.rand这两函数即可获取随机数来说,C++11提供了太多的选择和东西. 随机数生成算 ...

  8. blockchain 名词解释

    1.UTXO UTXO是比特币交易的基本单位UTXO(Unspent Transaction Outputs)是未花费的交易输出,它是比特币交易生成及验证的一个核心概念.交易构成了一组链式结构,所有合 ...

  9. Visual Studio 2013更新内容简介

    前言 VS2013终于发布了,虽然之前自己使用VS2010和VS2012的时间也不长,尤其是VS2012这自己刚刚也没用多久,看到VS2013发布了,自己忍不住也下载了下来,官网肯定可以下载,不过自己 ...

  10. VUE之搭建脚手架

    原文转自http://blog.csdn.net/Shiyaru1314/article/details/54963027 目录(?)[-] 1 安装之前需要检查是否已经安装NodeJS的环境 安装文 ...