micro 功能很是强大,本文将详细阐述micro web 命令行的功能html
名称 | 描述 |
---|---|
操做系统 | win10 |
go version | go version go1.12.7 windows/amd64 |
GOPATH | E:winliongopath |
GOPROXY | https://goproxy.io |
G111MODULE | on |
命令行工具 | cmder工具,可自行百度安装 |
micro web指令所有参数以下前端
NAME: micro web - Run the web dashboard USAGE: micro web [command options] [arguments...] OPTIONS: --address value Set the web UI address e.g 0.0.0.0:8082 [%MICRO_WEB_ADDRESS%] --namespace value Set the namespace used by the Web proxy e.g. com.example.web [%MICRO_WEB_NAMESPACE%]
A公司是一家小创业公司,a公司的主要业务是作微信小应用,目前他们公司只有一个域名www.xxx.com
,A公司采用micro web 工具,能够不断迭代新应用到www.xxx.com
域名下,好比昨天他们开发了一个应用demo1,外网用户访问地址https://www.xxx.com/demo1/
,明每天他们开发了一个应用demo2,外网用户访问地址https://www.xxx.com/demo2/
,最后这个平台长这样node
服务名称 | 说明 | 访问地址 |
---|---|---|
com.techidea8.web.www | A公司的主域名 | http://www.xxx.com/www/ |
com.techidea8.srv.wxmp | A公司的微信服务,如签名、分享、菜单管理等 | http://www.xxx.com/wxmp/ |
com.techidea8.web.attach | A公司的资源上传服务 | http://www.xxx.com/attach/ |
com.techidea8.web.pay | A公司的支付服务 | http://www.xxx.com/pay/ |
com.techidea8.web.account | A公司的用户中心 | http://www.xxx.com/account/ |
com.techidea8.web.article | A公司的写做类平台 | http://www.xxx.com/article/ |
com.techidea8.web.demo1 | A公司的demo1应用 | http://www.xxx.com/demo1/ |
com.techidea8.web.demox | A公司的demox应用 | http://www.xxx.com/demox/ |
a公司能够不断迭代业务,这个平台具有良好的扩张性。golang
Openwrite是一个面向技术人员的写做分发平台,用户在该平台一次写做,能够分发到·csdn/oschina/jianshu/juejin·等各个渠道,咱们采用micro web开发以下微应用产品,后续能够不断迭代开发新渠道服务com.techidea8.channel*
,不会影响现有业务。web
服务名称 | 说明 | 访问地址 |
---|---|---|
com.techidea8.web.www | 网站首页 | http://www.xxx.com/www/ |
com.techidea8.web.attach | 图片、资源等上传服务 | http://www.xxx.com/attach/ |
com.techidea8.web.account | 用户中心 | http://www.xxx.com/account/ |
com.techidea8.web.article | 文档中心 | http://www.xxx.com/article/ |
com.techidea8.web.channelcsdn | csdn渠道应用 | http://www.xxx.com/channelcsdn/ |
com.techidea8.web.channeljuejin | 掘金渠道应用 | http://www.xxx.com/channeljue... |
假设咱们须要实现相似于以下千人千面功能,具体应用场景以下算法
服务设计以下windows
服务名称 | 说明 | 访问地址 |
---|---|---|
go.micro.web.www | 系统首页 | http://127.0.0.1:8082/www/ |
go.micro.srv.recommend | 推荐服务 | http://127.0.0.1:8082/www/guess |
重要的事情说3次
micro web 源代码https://idea.techidea8.com/open/idea.shtml?id=7
micro web 源代码https://idea.techidea8.com/open/idea.shtml?id=7
micro web 源代码 https://idea.techidea8.com/open/idea.shtml?id=7 后端
下载解压后位置为%GOPATH%\src\techidea8.com\microapp\doc\web
api
$pwd E:\winlion\gopath\src\techidea8.com\microapp\doc\web $ls recommend/ www/
依次执行以下指令便可bash
#切换到wwww目录下 src\techidea8.com\microapp\doc\web\www>go run main.go #切换到recommend服务目录下 src\techidea8.com\microapp\doc\web\recommend>go run main.go #启动web支持 src\techidea8.com\microapp\doc\web\recommend>micro web --namespace=go.micro.web
界面以下
>micro new --type=web techidea8.com/microapp/doc/web/www
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\www\proto\recommend\recommend.proto service Recommend{ rpc Guess(Request)returns(Response){}; }
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\www\ 目录下 >protoc --proto_path=. --proto_path=E:/winlion/gopath/src --go_out=. --micro_out=. proto/recommend/recommend.proto #
//handler/handler.go //go.micro.srv.recommend 是后端猜你喜欢服务名称 guessClient := recommend.NewRecommendService("go.micro.srv.recommend", client.DefaultClient) rsp, err := guessClient.Guess(context.TODO(), &recommend.Request{ Uuid: request["uuid"].(string),//uuid是前端用户ID })
//默认须要加上服务名前奏 // register html handler service.Handle("/", http.FileServer(http.Dir("html"))) // register call handler/www/guess service.HandleFunc("/guess", handler.Guess)
$micro web --namespace=go.micro.web #结果以下 2019/08/25 15:32:08 HTTP API Listening on [::]:8082 2019/08/25 15:32:08 Transport [http] Listening on [::]:57563 2019/08/25 15:32:08 Broker [http] Connected to [::]:57564 2019/08/25 15:32:08 Registry [mdns] Registering node: go.micro.web-32fafadb-a795-46bc-b4d8-ad9a30607a7e
>micro new --type=srv techidea8.com/microapp/doc/web/recommend
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\recommend\proto\recommend\recommend.proto service Recommend{ rpc Guess(Request)returns(Response){}; }
#E:\winlion\gopath\src\techidea8.com\microapp\doc\web\recommend\ 目录下 >protoc --proto_path=. --proto_path=E:/winlion/gopath/src --go_out=. --micro_out=. proto/recommend/recommend.proto #
//handler\recommend.go //go.micro.srv.recommend 是后端猜你喜欢服务名称 func (e *Recommend) Guess(ctx context.Context, req *recommend.Request, rsp *recommend.Response) error { log.Log("Received Recommend.Call request") //具体推荐算法实在这里实现的, //推荐算法获得结果后赋值给resp.Results rsp.Results = "这是用户[" + req.Uuid + "]的推荐内容" return nil }
咱们这里不考虑事件,因此将事件相关特性取消,先一出subscriber目录,而后修改main.go
main.go // 取消事件订阅支持 //micro.RegisterSubscriber("go.micro.srv.recommend", service.Server(), new(subscriber.Hello)) //取消事件发布支持 //micro.RegisterSubscriber("go.micro.srv.recommend", service.Server(), subscriber.Handler)
$go run main.go
推荐阅读
扫微信二维码实现网站登录提供体验地址和源代码
开源项目golang go语言后台管理框架restgo-admin
支持手势触摸,可左右滑动的日历插件
你必须知道的18个互联网业务模型