前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >意林读者第二期

意林读者第二期

作者头像
terrence386
发布2022-07-15 09:39:38
2280
发布2022-07-15 09:39:38
举报

小程序服务端接入登录

一直想开发一款个人的小程序,但是一直没想好要做什么。有没有什么东西是大家刚好都需要,并且以我目前的能力又可以实现了的需求呢?我一直在想这个问题,但是始终没有一个合适的答案。

我不打算再等我想好要做什么的时候在去做这个事情了,周末的时候用基于Node的Express框架搭了一个后端的服务,先写了一个支持用户登录的接口,目前这个登录只支持小程序一键登录,不支持手机验证码登录,后期如果考虑支持手机验证码登录的话,需要接入短信能力。

用Node来进行服务端开发,还是比较简单的。因为小程序的登录流程我们都知道:客户端调用wx.login获取code,将code传给服务端,服务端调用jscode2session这个Api传入codeappIdappSecret换取session_keyopenid,然后生成一个和session_key相关联的token返回给客户端即可。

客户端在接下来的业务逻辑中,每次请求都携带token,服务端进行校验即可。

示例代码:

代码语言:javascript
复制
const conf = require('../config/index')
const Promise = require('bluebird')
const _ = require('lodash')
const request = Promise.promisify(require('request'))
const sha1 = require('sha1')
const jwt = require('jsonwebtoken')

module.exports = {
  login(req, res) {
    const { code } = req.body
    const data = {
      code: 200,
      data: {
        token: '',
        msg: '登录成功!'
      }
    }
    let url = `https://api.weixin.qq.com/sns/jscode2session?appid=${conf.appInfo.appId}&secret=${conf.appInfo.AppSecret}&js_code=${code}&grant_type=authorization_code`
    request({ method: 'GET', url: url, json: true }).then((r) => {
      console.log('r', r.body)
      const { session_key, openid } = r.body
      // 获取session_key及openid以后==>生产token返回给客户端
      let token = jwt.sign({
        name: openid,
      }, session_key, {
        expiresIn: 60
      })
      // 将token及openid.session_key 存入数据库,并将token返回客户端,通知登录成功
      data.data.token = token
      res.send(data)
    })
  }
}

代码还需要进行优化,核心点就在于用request请求了jscode2session这个接口,取到session_key之后用jwt生成了一个用户返回给客户端的token。

Linux shell脚本中的grep

GREP是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式并把行打印出来。GREP是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,grep也是Linux中最广泛使用的命令之一。

前端图片优化工具

前端图片优化的一项重要手段就是尽量减小图片的体积,使得图片的体积尽可能的小,这些包可以在前端图片压缩中发挥出巨大的作用,有兴趣的可以尝试一下。

  • imagemin
  • imagemin-mozjpeg
  • imagemin-pngquant

代码示例:

代码语言:javascript
复制
const imagemin = require('imagemin');
const PNGImages = 'assets/images/*.png';
const JPEGImages = 'assets/images/*.jpg';
const output = 'build/images';

const imageminMozjpeg = require('imagemin-mozjpeg');

const optimiseJPEGImages = () =>
  imagemin([JPEGImages], output, {
    plugins: [
      imageminMozjpeg({
        quality: 70,
      }),
    ]
  });

optimiseJPEGImages()
  .catch(error => console.log(error));

信息技术和世人的价值观

晚上下班的路上我想到了一个问题,信息技术的发展究竟给我们带来了什么?

从固定电话,小灵通,手机,智能机到现在的移动互联网。信息传递的速度越来越快,生活的确是越来越便捷。但是总觉的好像少点什么。

以前没有手机的年代,我们总是找一本书,找个地方静静的翻看,体会书中的人物故事。有时间去思考书中的一些问题,但是现在,不停的在手机上翻看短视频,让我们基本上丧失了思考的时间和思考的能力,对于生活似乎越来越麻木。

现在的年轻人,尤其是小孩子,从小就生活在一个信息爆炸的时代。各种各样的信息,各种各样的应用,让人眼花缭乱,尤其是各种短视频平台,里面的内容很多宣传的价值观并不正确。而且这一代人并没有什么苦日子的经历,也没有什么能力去辨别哪些好的那些是坏的。

从某种层面上讲,这些短视频平台中其实也是整个社会价值观的一种体现。以金钱为导向,一切向钱看,这种价值观使得整个社会的人心浮躁,在这种环境下,很难有人能够静下心来去思考自己究竟应该秉持一种什么样的价值观。

我忽然想到一句话:以价值为导向。这里的价值并不是以金钱来衡量的,而是以我想成为一个什么样的人,我的目标和使命是什么为导向。而是以我可以为这个社会,我可以为这个国家贡献什么来衡量。比如我希望成为一个科学家,则以我可以为国家贡献某些技术成果。假如我只是个普通人,则我能为国家的安定团结贡献自己的一份力。

这种想法我觉得更像是以使命为导向。

徐克的电影《倩女幽魂》里有一句台词:世人皆崇拜偶像。希望我们的下一代崇拜的偶像不再是哪些涂脂抹粉的娘炮,而是那些有傲气傲骨的中国脊梁!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaScript高级程序设计 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux shell脚本中的grep
  • 前端图片优化工具
  • 信息技术和世人的价值观
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档