This is a creation in Article, where the information may have evolved or changed.
I started studying the go language last year and it was almost a year ago. I used to study PHP and Nodejs, which are weak types of explanatory language. Looking for a compiler-type strong-typed language to continue learning, the new Go language is selected. I'm only interested in Web applications, and I've seen a lot of interesting open-source go web frameworks, just throwing up slots.
Revel
Revel is the earliest Go language web framework, drawing on many ideas from the Java and Scala language of the play framework. The first time I watched play 1.x seemed to bring a whole new ethos to the Java community, and it felt like a fun thing to do. Later play 2.x turned to the Scala camp, bringing Java developers into the abyss and being ruthlessly spit out by many people. Today, the play community is still tepid, and domestic applications are small.
revel
This thing with the same problems as play, abandoned the original standard completely own. revel
completely ignore Go standard library of one set, all is own concept; similar play discards the servlet 3 standard. As a result, I watched for a long time, still do not know how to use. The concept of self-bringing too many, is an obstacle Ah!
Of course, revel
there are cases, such as hillside nets. His author's blog also has a lot of tutorial articles on revel.
Beego
Beego is the hottest frame in the country. Originally by giving him some code comments, read through the entire source. To my mind, this is a more medium-sized framework. In addition to the underlying MVC structure, there is support for multiple libraries, such as cache,orm,session. It's a good thing for developers to look at everything like this.
But the question is, can you use someone else's session or the cache? There have been cases of using the Xorm ORM Library instead beego
of its own ORM. But there will always be an illusion: "It provides the use of its own bar, the other if the problem is not to engage in," the amount of hehe ah.
beego
With a lot of people, documentation is also very complete (update not very timely), community and Q Group is also very active. Therefore, the choice of Beego is good.
Martini
Martini is a new and sharp frame, the concept is very good. However, martini
just a mini-frame, with a simple core, a routing function and a dependency injection container inject. So many things need to write their own, such as view,session and so on. And there is no better example of using the database. It's a little difficult to learn.
In other words, it martini
is not a chatty frame, but a component ecological martini-contrib. This is what Expressjs in Nodejs is doing. And his DI implementation makes it easy for third-party libraries to be transformed into martini
canonical middleware. If there are more components, I believe there will be great future.
However, because the dependency injection implementation relies on reflect reflection, the go language's reflection library is inefficient. Too much middleware is sure to slow down the overall speed. This can only see the development of the go language later.
Summarize
The main framework is now the three. In fact, there are a lot of interesting implementations, such as Java struct
-like xweb, Python flask
-like entropy and ASP.NET MVC
Goku. It's certainly good to see more.
But, more importantly, familiarity with the standard library !!!!!!