您的位置首页快问快答

微信小程序后端是用JAVA好还是PHP好呢?

微信小程序后端是用JAVA好还是PHP好呢?

的有关信息介绍如下:

微信小程序后端是用JAVA好还是PHP好呢?

如果你是JAVA程序员,那么就用JAVA,

如果你是PHP程序员,那么就用PHP。

如果你两个都不会,那么用PHP,

如果你两个都会,那么也用PHP。

简单来说,哪个熟练用哪个,如果都不会,选简单的那个。一开始不用去关注什么性能、QPS、稳定性,可维护性,没意义。

先上线,再优化。

Gitee 上有许多微信小程序相关的开源项目,其中有用 Java 的,也有用 PHP 的,题主可以从项目出发,切实感受一下这两者的区别和使用感受。下面这几个微信小程序的开源项目希望对你有帮助:)

减少重复造轮子,开源微信小程序商城 。快速搭建一个属于自己的微信小程序商城。

项目地址 : https:// gitee.com/fuyang_lipeng jun/platform

萤火小程序商城是B2C模式的电子商城,是在Thinkphp5基础上搭建的一个PHP项目,前后端全部开源。Thinkphp5以易学易用著称,同时也方便二次开发,让您快速搭建个性化独立商城。

项目地址: https:// gitee.com/xany/bestshop -php

面向程序员的开源书籍和文档阅读学习小程序,同时也是一款基于 Apache 2.0 开源协议进行开源的通用书籍阅读微信小程序,助您轻松实现小说、电子书、各种文档手册和书籍的在线阅读。

项目地址 : https:// gitee.com/truthhun/Book Chat

垃圾识别精灵是一个基于 uni-app 开发的微信小程序,使用 SpringBoot2 搭建后端服务,使用 Swagger2 构建 Restful 接口文档,实现了文字查询、语音识别、图像识别其垃圾分类的功能。后端:采用 SpringBoot 2 构建后端服务,才 Swagger2 构建 Restful风格接口文档,数据库采用 Mysql ,使用 Mybatis-Plus 做数据访问层。

项目地址 : https:// gitee.com/aaluoxiang/Ga rbageSort

CRMEB微信小程序商城系统,基于CRMEB系统开发的一套电商系统,带优惠券、积分、秒杀、拼团、砍价、分销等功能。

项目地址: https:// gitee.com/ZhongBangKeJi /CRMEB_WeChatMiniProgram

体验 码云企业版 - 码云 Gitee.com 有序规划和管理软件研发全流程

关注码云微信公众号:giteecom

发现更多优质开源项目: GVP-码云最有价值开源项目

这样就好吧。

当然是熟悉哪个用哪个。

现阶段php配合swoole性能真的已经很能打了。中小公司绝对可以撑得起来。

都是可以写后台的语言,如果你的小程序没有多少人访问,其实哪个都一样。

还是那句话:适合自己的语言最重要,也就是自己哪个语言用的顺手用哪个就行。

语言可能有优劣之分,但是,对于一般的程序或者软件来讲,他们都能够满足你的需求,所以,选择自己擅长的那一个就行啦。

另外,PHP 是世界上最好的语言。

c++最好。

如果自己做项目,那么php首选,那效率杠杠的。

如果在公司,那就看你们公司是啥技术栈了。

语言真不重要,那个顺手用那个,真到了语言是瓶颈的时候,你可能担心的是下一轮准备融资多少

个人推荐尝试一下云开发,腾讯相册已经完全基于云开发了。对于微信小程序云开发,我也算是入门吧,跳了很多坑,但也都从坑里爬了出来。通过写下这篇博客来总结一下我对小程序云开发的认识。所有外部依据均来自小程序官方文档。微信推出小程序云开发的SDK是在2018年8月份,距离今天已经过去一年多了。

看一下微信官方对目前用户的版本统计,目前99.2%(ios)的用户支持使用微信小程序云开发发布的小程序。换句话说,目前小程序云开发发布的小程序 (绝对) 基本 可以被所有用户使用。

说了适配问题之后,我们来看一下到底什么是微信小程序云开发

开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。

云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。

重点看一下我标记的这句话:“同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥”,也就是说你在使用微信小程序云开发的同时,还是可以配合正常的云服务器来使用的。

下面进入正文

一、微信小程序云开发的优点

首先要介绍的当然是小程序云开发的优点啦。

1.无需自建服务器

这一点我相信是绝大多数人,选择使用小程序云开发的原因。不需要自己去搭建服务器,既省去了服务器搭建所耗费的时间,又省去了金钱,小程序云开发为大家提供了一个免费基础版本。

这个配置,如果不上传高质量的图片,音频及视频的话是完全够用的。为什么把这三类除外呢,我会举一个实际的例子来解释一下。 (二、1.)

2.项目快速上线

小程序云开发可以不依托外部的云服务器,来进行数据库的增删改查,以及对象存储。这样就使得项目可以快速上线,大家应该都知道如果使用外部的云服务器来制作接口的话,需要为小程序配置request合法域名,来看一下小程序官方文档对这方面的要求。

首先只支持https协议,国内服务器必须解析域名进行ICP备案后,绑定ssl证书,然后来使用https,到这里也许有人会想到使用国外服务器绕过备案。再往下看,你会发现微信早已想到会有这个可能,强制要求域名必须通过ICP备案。那么就逃脱不了30-40天的备案时间了。

也就是说使用小程序云开发,不需要等待ICP备案的时间,开发完立马就能审核上线。这一点也是我第一次使用小程序云开发时的原因,省去了不少时间。

3.轻轻松松获取用户凭证

openId对于开发者来说就相当于用户的“身份证”,也是用户在本小程序的唯一标识,对于不使用云开发的小程序来说,要想获取用户凭证流程非常复杂,看一下官方流程图

看着流程图就觉得头皮发麻,大致过程是这样的:小程序端先获取用户的一个登录code——将这个code传到自己的后端服务器——在后端服务器访问微信官方接口,将code和一系列密钥传过去——微信官方接口将用户凭证(包含openId)传给后端服务器——后端服务器再传给微信小程序。这是整个获取流程。

如果使用微信小程序云开发的话,那就非常简单了:只需要一个简单的云函数,在小程序端触发这个云函数即可。

//云函数主要代码 login云函数

const cloud = require('wx-server-sdk')

cloud.init({

env: 'xiaodou-jtc8g'//云开发环境ID

})

exports.main = (event, context) => {

console.log(event)

console.log(context)

const wxContext = cloud.getWXContext()

return {

event,

openid: wxContext.OPENID,

appid: wxContext.APPID,

unionid: wxContext.UNIONID,

env: wxContext.ENV,

}

}

//小程序端请求代码

wx.cloud.callFunction({

name: 'login',//上面云函数的名字

data: {},

success: res => {

console.log(res)

}

})

只需两部分代码,即可轻松获取到用户凭证,效果如下

二、微信小程序云开发的坑

1.基础版CDN流量太少

在我最近做的一个项目中,仅在开发与测试期间,上传/下载了相册原画质的图片就用了765MB(四五天时间),当时我就意识到了事情的严重性,因为这个项目上线后需要每天为百名用户来使用,如果像我测试的那样,可能CDN流量两天就用完了。一旦CDN流量用完升级配置,一个月最少都要30块钱,这个价钱可以在外面购买一个很好的对象存储服务了。

不过还好我发现这个问题比较早,及时控制了上传图片的质量,每次上传图片程序自动都进行一次压缩,每张大概在200kb以内,在正式使用到现在也就消耗了1mb左右的CDN流量。(日均活跃用户在60人左右)

2.云数据库限制多

这个坑我觉得对于我来说是最深的一个,云数据库的限制有两方面。第一个方面是小程序端获取数据条数限制。第二个方面是云数据库读写权限限制。

(1)小程序端读取限制

小程序端直接请求数据库,每次最多可以读取20条数据

使用云函数请求数据库,再通过小程序端触发云函数,每次最多读取100条数据

要是每次需要请求的数据超过100条,那就需要使用skip分次请求再进行组合了,具体操作可查看官方文档或其他博客。

(2)云数据库读写权限限制

在说这个坑之前先说一下,小程序云数据库为非关系型数据库,不能使用外键内键联合查询。(与上下文无关,本文未提到)

云数据库最开放的权限是:所有用户可读,仅创建者可改。

也就是说你创建了一条记录,他人无法进行修改或删除,这也就导致了一系列的问题。下面举一个我实际项目的例子。

eg:现有一个多座位的自习室供用户预定,用户每次预定可以选择一个使用时间,到这个时间结束后这个座位可以被其他人再次预定。

简单的一个场景,正常的逻辑下我们数据库的自习室表里应该有这三个主要的字段就够了,自习室标识(r_id),自习室到期时间(r_date),自习室是否可预定(r_flag)。

当一个用户选择预定一个自习室时,我只需要判断这个自习室的r_flag是否为true即可,如果为true,用户可以预定,预定成功后r_date刷新,r_flag置为false即可。

但是,小程序云开发提供的云数据库,最开放的权限为所有用户可读,仅创建者可改。 就导致上述逻辑行不通。我们就需要更复杂一点的逻辑来实现这个功能。

我当时的做法是:每次用户预定自习室时都提交一条数据,将每个自习室所有的预定数据按照时间先后放到一个个栈内,最新的预定放到上面,这样下次有人进行预定时,只需要比较是否到最上面那条数据的r_date,来判断该自习室目前是否可被预定。不修改记录实现一个覆盖删除的功能。

3.对外开放限制多

一个正常的小程序项目一般都会配一个后台管理系统,这个后台管理系统与小程序共用一个数据库,来对数据进行管理。由于小程序云开发自带的云数据库在小程序内部,外部要是想访问这个数据库则需要一个稍微复杂的流程:

先使用官方接口获取到调用凭证,在通过这个凭证使用指定的接口来对数据库进行增删改查。此外这个流程中消耗的资源也是算在基础配置里的,每日请求上线5万次。

三、我对小程序云开发总结

介绍完了小程序云开发的优点和坑之后,我觉得小程序云开发的适用人群就非常明确了:如果你没有一个已经备案过的域名和一台云服务器,又想使项目快速上线,且对云存储、云数据库的要求不高,那么小程序云开发非常适合你,0开发成本即可发布一款微信小程序。

如果你的日活用户非常多,又不想花费用升级云开发的配置,那么小程序云开发并不太适合你。

别着急走,如果你的日活用户不是太多,基础版的云函数请求足够用的话,那么你可以使用小程序云开发,来减少一些复杂的流程,再配合自己的外部服务器来开发,效果极佳。如果有机会,再以后的博客里我会介绍一下如何通过云函数配合外部服务器(无需解析域名备案,http协议)来实现数据请求。

总的来说,我觉得小程序云开发带来的利大于弊

java语言

哪个熟练用哪个,两个熟练程度一样,那就看开源项目,哪个语言的开源项目更符合要求,就用哪个

作为java程序员建议用java吧,没啥好比较的,java生态比较强大。

其实都可以,因为都是写api接口,你熟悉那个就选那个,语言的性能在你问这个问题的业务量不会存在。

首先什么是最适合开发web的语言呢?

这个问题一定是仁者见仁智者见智,无论是php也好,java也好,go也好,Python也好,它们都可以用来开发web应用,那么一个人应该选择哪种语言来开发呢?我的意见是遵从自己的技术栈,遵从公司的技术栈。

如果两种语言或者多种语言都熟练的话,作为一个PHPer我的建议是PHP,因为对于接口开发来说,PHP有着先天的优势,比如一个json_encode就可以轻松解决返回数据的问题,但是弱类型导致它返回的时候有时候整型和字符串不易区分,也算一个小弊端,但是整体来开,PHP作为开发小程序的后端效率还是很高的。

楼主如果两个都会的话,肯定是PHP更适合一些