专为小程序而生的服务端开发容器
Roff HTML C CSS C++ Shell Other
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
nami 修复js无法调用log函数的bug May 2, 2017
package 增加对redis的支持 Apr 8, 2017
parent 增加对redis的支持 Apr 8, 2017
.gitignore add missed dll files Nov 25, 2016
LICENSE update Dec 1, 2016
README.md 更新文档 Apr 6, 2017
RELEASES.md release process MD Feb 9, 2017
pom.xml set next version Apr 6, 2017

README.md

NAMI:专为微信小程序服务端开发而生

面向前端开发人员的后端逻辑容器.

什么是NAMI

微信小程序的前端框架,官方命名为MINA;那我们的非官方后端就呼应一下,姑且命名为NAMI(纳米)。
NAMI提供了一个小程序服务端所需所有服务的支持,包括但不仅限于处理request请求、接收和处理websocket、与微信服务端交互并维护access_token、处理微信服务端登录鉴权、发送模板消息、接收微信支付事件,等等。

对于小应用:你只需要找一台电脑(无论windows、mac还是linux),一台云虚拟机,甚至一个docker实例,就可以安装NAMI;NAMI提供了一整套完整的小程序后端解决方案,替你包揽有关小程序后端开发的所有问题。

对于大应用:可能小程序只是你整个IT架构的其中一部分;可能你还需要考虑负载均衡,考虑多实例部署,考虑缓存;NAMI可以作为一个纯粹的JAVA开源框架,简化你的JAVA开发,帮你更高效解决与小程序有关的问题。

更多精美介绍(感谢公司前端小伙伴做的页面):http://riversoft.com.cn/nami.html

NAMI受众

前端开发工程师

不需了解JAVA、PHP或其他后端语言;
不需要安装TOMCAT,不需要LAMP;
用你最熟悉的javascript语言编写后端逻辑,用命令式的语句直接操作数据库,调用微信后台服务(你试过用javascript发送模板消息吗?

专注于业务实现,而不想纠结于技术的小程序后端开发者

也许你是有经验的JAVA或PHP程序员,但是leader给你开发小程序的时间不多了;
面对着鉴权登录、支付、模板消息、用unionid打通服务号,看着微信官方文档的access token心跳维持、加密解密,你头都大了;
也许你更擅长需求建模、业务逻辑开发,但不想纠结于技术细节;
NAMI采用脚本式开发,只要会写if(判断)会写for-each(循环),你的问题都可以快速高效解决。

JAVA程序员

NAMI采用纯粹的JAVA语言开发,拥有清晰的封装和外部API;
NAMI内置动态脚本引擎,对微信官方服务端API进行全封装;
NAMI也可以成为你JAVA项目的其中一个开源独立JAR包,帮你更高效快速解决问题。

NAMI特性

  • 可直接运行于任意主流IAAS或PAAS或docker容器,如阿里云、网易蜂巢
  • 内置JDK,内置tomcat,支持跨平台(windows/linux/macOS)
  • 内置https解决方案,快速申请免费证书并自动维持永久生效
  • javaEE技术架构,成熟的横向扩展方案,支持高并发、高可用系统需求,能支持大型/超大型系统
  • 傻瓜化脚本开发模式,只关注业务逻辑,不纠结技术实现
  • 支持javascript,groovy,java语言开发业务逻辑,总有一款合你意
  • 微信API封装,消息、支付、鉴权简单实现

NAMI关键模块

  • 简洁的request门面
  • 配置化websocket
  • 内置脚本逻辑引擎(可选语言:groovy/javascript/el)
  • 全量微信API封装
  • 解压即可运行的容器式封装
  • 小程序文件上传下载体系封装
  • 内置的https解决方案封装

一个例子

  1. 前端发起一个request 前端源码:
    //==================NAMI HELLO WORLD begin =================
    //第一个NAMI小程序调用
    wx.request({
      url: 'http://localhost:8080/request/hello.js',
      data: {
        a : 'hello',
        b : 2
      },
      complete: function(res) {
        console.log("调用完成");
        console.log(res.data);
      }
    })
    //==================NAMI HELLO WORLD end =================
  1. 启动NAMI后,在request目录中增加脚本 后端源码:
(function() {
	var a = request.getString("a") || 'none';
	var b = request.getInteger("b") || 0;

	return {
		a : a,
		b : b
	}

})();
  1. 前端回调结果

开发规范

事务管理

NAMI采用函数式开发,无论function抑或request,一个文件代表一个函数(或请求)。NAMI约定:

  • 文件名以execute_,create_,update_,delete_开头的逻辑,会限定在一个事务中执行,事务支持嵌套。
  • 文件名以get_,find_,query_开头的逻辑,以只读方式执行,也就是说在这种逻辑中执行的写操作,最终都会被NAMI回滚。
  • 采用其他名称开头的,则认为每次执行db函数的exec,save等操作时事务自动提交。

资源

下载

下载运行版(百度云盘): http://pan.baidu.com/s/1bJmUtg

文档

在线文档:https://hyhcoder.gitbooks.io/namiapi/content/

系列文章

如何打包

用maven构建,根目录执行:

mvn clean install

打包结果在/package/target/nami-pack-<platform>.zip, platform = nojdk|win32|win64|linux32|linux64

关于我们