博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue全家桶+Koa2开发笔记(6)--app开发
阅读量:7168 次
发布时间:2019-06-29

本文共 2494 字,大约阅读时间需要 8 分钟。

1.环境配置

详见文章

 1.1  使用nuxt脚手架  

 1.2 在node中不支持使用 import,例如修改node的启动文件 server/index.js 中: const Koa = require('koa')  为  import Koa from 'koa' 

就会报错:

解决方法:

步骤一:在json文件中修改 dev和start命令:

"scripts": {    "dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server --exec babel-node",    "start": "cross-env NODE_ENV=production node server/index.js --exec babel-node",  },

步骤二:新建.babelrc 文件

{  "presets":["es2015"]}

步骤三:安装 

npm install babel-preset-es2015npm install babel-cli -S

 

问题二:不支持scss

安装  npm install sass-loader node-sass 

 

2. 快速编辑html . 在vscode中 输入  scaffold ,快速生成vue模板

 

3. nuxtjs中请求数据,我们使用 Nuxt 官方提供的  安装后,在 nuxt.config.js 中加上:

export default {  ...  modules: [    '@nuxtjs/axios'  ],  ...}

就可以在页面中通过 this.$axios.get 来获取数据,不需要在每个页面都单独引入 axios.

 

4.  

//验证接口router.post('/verify', async (ctx, next) => {  let username = ctx.request.body.username  const saveExpire = await Store.hget(`nodemail:${username}`, 'expire')  if (saveExpire && new Date().getTime() - saveExpire < 0) {    ctx.body = {      code: -1,      msg: '验证请求过于频繁,1分钟内1次'    }    return false  }  //发邮件功能   let transporter = nodeMailer.createTransport({    service: 'qq',    auth: {      user: Email.smtp.user,      pass: Email.smtp.pass    }  })  //接受的信息  let ko = {    code: Email.smtp.code(),    expire: Email.smtp.expire(),    email: ctx.request.body.email,    user: ctx.request.body.username  }  let mailOptions = {    from: `"认证邮件" <${Email.smtp.user}>`,    to: ko.email,    subject: '《慕课网高仿美团网全栈实战》注册码',    html: `您在《慕课网高仿美团网全栈实战》课程中注册,您的邀请码是${ko.code}`  }  //开始发送  await transporter.sendMail(mailOptions, (error, info) => {    if (error) {      return console.log(error)    } else {      Store.hmset(`nodemail:${ko.user}`, 'code', ko.code, 'expire', ko.expire, 'email', ko.email)    }  })  ctx.body = {    code: 0,    msg: '验证码已发送,可能会有延时,有效期1分钟'  }})

5 . 中间件可以使您的自定义的函数在渲染页面之前运行

middleware: async (ctx)=>{        let {status,data:{code}} = await ctx.$axios.get('/users/exit')        if(status == 200 && code == 0){            window.location.href = '/'        }}

注意code的获取等同于下面

middleware: async (ctx) => {    let {status,data}=await ctx.$axios.get('/users/exit')    if(status===200&&data&&data.code===0){      window.location.href='/'    }  }

 使用中间件获取方式和异步await等同于下面:

created :function(){        this.$axios.get('/users/exit').then((res)=>{            if(res.status == 200 && res.data.code == 0){                window.location.href = '/'            }        })  }

 

转载于:https://www.cnblogs.com/xiaozhumaopao/p/10385353.html

你可能感兴趣的文章
EI检索期刊JA检索与CA检索有什么区别?
查看>>
人脸识别技术探讨:1:1,1:小N/大N,大姿态识别,活体识别
查看>>
面向对象程序设计
查看>>
非主从同步 mysql master slave pt-slave-delay
查看>>
【思科×××】IPsec ×××基本部署
查看>>
检验新买内存条的真假
查看>>
解密:华为的敏捷网络是SDN吗
查看>>
u16 u32 __u16 __u32 u_int16_t u_int32_t
查看>>
android: BaseAdapter和ListView简单运用(08)
查看>>
自带内存上的读写(openFileOutput和openFileInput)
查看>>
服务器搭建:3.2、openresty图片压缩之 lua调用GraphicsMagick
查看>>
bash 脚本编程 变量、变量类型 (笔记)
查看>>
win7 管理员权限
查看>>
docker下redis集群搭建
查看>>
composer出现proc_open,fileinfo问题
查看>>
无ROWID优化(The WITHOUT ROWID Optimization)
查看>>
Android第七课 探索Activity的生命周期
查看>>
求排列
查看>>
Cisco-CCNP之OSPF链路状态路由协议(三)
查看>>
CentOS 7 系列(一)系统服务 systemd
查看>>