NAMI:专为微信小程序服务端开发而生
a402712350
8年前
<h2>NAMI:专为微信小程序服务端开发而生</h2> <p>面向前端开发人员的后端逻辑容器. 百度云盘(最新版本0.2.0): <a href="/misc/goto?guid=4959738341183890387" rel="nofollow,noindex">http://pan.baidu.com/s/1bJmUtg</a></p> <h2>什么是NAMI</h2> <p>微信小程序的前端框架,官方命名为MINA;那我们的非官方后端就呼应一下,姑且命名为NAMI(纳米)。</p> <p>NAMI提供了一个小程序服务端所需 <strong>所有</strong> 服务的支持, 包括但不仅限于处理request请求、接收和处理websocket、与微信服务端交互并维护access_token、处理微信服务端登录鉴权、发送模板消息、接收微信支付事件 ,等等。</p> <p>对于小应用:你只需要找一台电脑(无论windows、mac还是linux),一台云虚拟机,甚至一个docker实例,就可以安装NAMI;NAMI提供了一整套完整的小程序后端解决方案,替你包揽有关小程序后端开发的所有问题。</p> <p>对于大应用:可能小程序只是你整个IT架构的其中一部分;可能你还需要考虑负载均衡,考虑多实例部署,考虑缓存;NAMI可以作为一个纯粹的JAVA开源框架,简化你的JAVA开发,帮你更高效解决与小程序有关的问题。</p> <h2>NAMI受众</h2> <h3>前端开发工程师</h3> <p>不需了解JAVA、PHP或其他后端语言;</p> <p>不需要安装TOMCAT,不需要LAMP;</p> <p>用你 <strong>最熟悉的javascript语言编写后端逻辑</strong> ,用命令式的语句直接操作数据库,调用微信后台服务( <strong>你试过用javascript发送模板消息吗?</strong> )</p> <h3>专注于业务实现,而不想纠结于技术的小程序后端开发者</h3> <p>也许你是有经验的JAVA或PHP程序员,但是leader给你开发小程序的时间不多了;</p> <p>面对着 <strong>鉴权登录、支付、模板消息、用unionid打通服务号</strong> ,看着微信官方文档的 <strong>access token心跳维持、加密解密</strong> ,你头都大了;</p> <p>也许你更擅长需求建模、业务逻辑开发,但不想纠结于技术细节;</p> <p>NAMI采用脚本式开发, <strong>只要会写if(判断)会写for-each(循环)</strong> ,你的问题都可以快速高效解决。</p> <h3>JAVA程序员</h3> <p>NAMI采用纯粹的JAVA语言开发,拥有清晰的封装和外部API;</p> <p>NAMI内置动态脚本引擎,对微信官方服务端API进行全封装;</p> <p>NAMI <strong>也可以成为你JAVA项目的其中一个开源独立JAR包</strong> ,帮你更高效快速解决问题。</p> <h2>NAMI特性</h2> <ul> <li>可直接运行于任意主流IAAS或PAAS或docker容器,如阿里云、网易蜂巢</li> <li>内置JDK,内置tomcat,支持跨平台(windows/linux/macOS)</li> <li>内置https解决方案,快速申请免费证书并自动维持永久生效</li> <li>javaEE技术架构,成熟的横向扩展方案,支持高并发、高可用系统需求,能支持大型/超大型系统</li> <li>傻瓜化脚本开发模式,只关注业务逻辑,不纠结技术实现</li> <li>支持javascript,groovy,java语言开发业务逻辑,总有一款合你意</li> <li>微信API封装,消息、支付、鉴权简单实现</li> </ul> <h2>NAMI关键模块</h2> <ul> <li>简洁的request门面</li> <li>配置化websocket</li> <li>内置脚本逻辑引擎(可选语言:groovy/javascript/el)</li> <li>全量微信API封装</li> <li>解压即可运行的容器式封装</li> <li>小程序文件上传下载体系封装</li> <li>内置的https解决方案封装</li> </ul> <h2>一个例子</h2> <ol> <li>前端发起一个request <img src="https://simg.open-open.com/show/936212618f196108f887a0f708799968.png"> 前端源码:</li> </ol> <pre> <code class="language-javascript">//==================NAMI HELLO WORLD begin ================= //第一个NAMI小程序调用 wx.request({ url: 'http://localhost:8080/request/hello.js', data: { a : 'hello', b : 2 }, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT // header: {}, // 设置请求的 header success: function(res){ // success }, fail: function() { // fail }, complete: function(res) { // complete console.log("调用完成"); console.log(res.data); } }) //==================NAMI HELLO WORLD end =================</code></pre> <p>1.启动NAMI后,在request目录中增加脚本</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/6a8fb01cefb7be3ae198d9ded899d1f7.png"></p> <p style="text-align:center"><img src="https://simg.open-open.com/show/16f967553b3e95d758e46ac6f9897b94.png"></p> <p>后端源码:</p> <pre> <code class="language-javascript">//definde function main() { var a = request.getString("a") || 'none'; var b = request.getInteger("b") || 0; return { a : a, b : b } } // invoke main();</code></pre> <p>2.前端回调结果</p> <p><img src="https://simg.open-open.com/show/7f9a78fcf50c7dbaeb900438b13c45ce.png"></p> <h2>系列文章</h2> <ul> <li><a href="http://mp.weixin.qq.com/s?__biz=MzI2MDE0MjA5MQ==&mid=2247483828&idx=1&sn=cf997d92abd1783b5746bc6ac5afe646&chksm=ea6f64d0dd18edc61b4fcc158c91c342b4ad75891bb083dabc2777946808157da56e3846790a&scene=18#wechat_redirect" rel="nofollow,noindex">NAMI来了!第一个NAMI小程序Hello World!(含视频)</a></li> <li><a href="http://mp.weixin.qq.com/s?__biz=MzI2MDE0MjA5MQ==&mid=2247483854&idx=1&sn=5c80bf25dbbbc7637c758929bf5d237d&chksm=ea6f64aadd18edbc6bf84be857711886f072d01c5bd07804befeb77e82e7283569187c1fb178#rd" rel="nofollow,noindex">NAMI来了!五分钟让微信小程序接上数据库(含视频)</a></li> </ul> <h2>如何打包</h2> <p>用maven构建,根目录执行:</p> <pre> <code class="language-javascript">mvn clean install</code></pre> <p>打包结果在/package/target/nami-pack-<platform>.zip, platform = nojdk|win32|win64|linux32|linux64</p> <p> </p> <p> </p> <p> </p>