From 4dbecf762c48b052c0310a4bae468070f15c908b Mon Sep 17 00:00:00 2001 From: "Gerasimos (Makis) Maropoulos" Date: Sun, 31 Dec 2017 08:00:02 +0200 Subject: [PATCH] write a README at the _examples/tutorial/vuejs-todo-mvc mini tutorial, which will be published to other sites soon Former-commit-id: cee096d0e327b0180bd4ec83d5674729c67b3ddb --- _examples/tutorial/vuejs-todo-mvc/README.md | 526 +++++++++++++++++- _examples/tutorial/vuejs-todo-mvc/screen.png | Bin 0 -> 103259 bytes .../src/web/controllers/todo_controller.go | 4 + .../vuejs-todo-mvc/src/web/public/js/app.js | 2 +- 4 files changed, 528 insertions(+), 4 deletions(-) create mode 100644 _examples/tutorial/vuejs-todo-mvc/screen.png diff --git a/_examples/tutorial/vuejs-todo-mvc/README.md b/_examples/tutorial/vuejs-todo-mvc/README.md index 09d0f55c..77141606 100644 --- a/_examples/tutorial/vuejs-todo-mvc/README.md +++ b/_examples/tutorial/vuejs-todo-mvc/README.md @@ -22,8 +22,8 @@ Many articles have been written, in the past, that lead developers not to use a You’ll need only two dependencies: -1. The Iris Web Framework, for our server-side requirements. Can be found [here](https://github.com/kataras/iris) -2. Vue.js, for our client-side requirements. Download it from [here](https://vuejs.org/) +1. The Iris Web Framework, for our server-side requirements. Can be found [here](https://github.com/kataras/iris), latest v10. +2. Vue.js, for our client-side requirements. Download it from [here](https://vuejs.org/), latest v2. > If you have Go already installed then just execute `go get -u github.com/kataras/iris` to install the Iris Web Framework. @@ -34,10 +34,530 @@ If we are all in the same page, it’s time to learn how we can create a live to We're going to use a vue.js todo application which uses browser' s local storage and doesn't have any user-specified features like live sync between browser's tabs, you can find the original version inside the vue's [docs](https://vuejs.org/v2/examples/todomvc.html). +Assuming that you know how %GOPATH% works, create an empty folder with any name in the %GOPATH%/src directory, we will create those files: + +- web/public/js/app.js +- web/public/index.html +- todo/item.go +- todo/service.go +- web/controllers/todo_controller.go +- web/main.go + +_Read the comments in the source code, they may be very helpful_ + ### The client-side (vue.js) +```js +/* file: web/public/js/app.js */ +// Full spec-compliant TodoMVC with Iris +// and hash-based routing in ~200 effective lines of JavaScript. + +var socket = new Ws("ws://localhost:8080/todos/sync"); + +socket.On("saved", function () { + // console.log("receive: on saved"); + fetchTodos(function (items) { + app.todos = items + }); +}); + + +function fetchTodos(onComplete) { + axios.get("/todos").then(response => { + if (response.data === null) { + return; + } + + onComplete(response.data); + }); +} + +var todoStorage = { + fetch: function () { + var todos = []; + fetchTodos(function (items) { + for (var i = 0; i < items.length; i++) { + todos.push(items[i]); + } + }); + return todos; + }, + save: function (todos) { + axios.post("/todos", JSON.stringify(todos)).then(response => { + if (!response.data.success) { + window.alert("saving had a failure"); + return; + } + // console.log("send: save"); + socket.Emit("save") + }); + } +} + +// visibility filters +var filters = { + all: function (todos) { + return todos + }, + active: function (todos) { + return todos.filter(function (todo) { + return !todo.completed + }) + }, + completed: function (todos) { + return todos.filter(function (todo) { + return todo.completed + }) + } +} + +// app Vue instance +var app = new Vue({ + // app initial state + data: { + todos: todoStorage.fetch(), + newTodo: '', + editedTodo: null, + visibility: 'all' + }, + + // we will not use the "watch" as it works with the fields like "hasChanges" + // and callbacks to make it true but let's keep things very simple as it's just a small getting started. + // // watch todos change for persistence + // watch: { + // todos: { + // handler: function (todos) { + // if (app.hasChanges) { + // todoStorage.save(todos); + // app.hasChanges = false; + // } + + // }, + // deep: true + // } + // }, + + // computed properties + // http://vuejs.org/guide/computed.html + computed: { + filteredTodos: function () { + return filters[this.visibility](this.todos) + }, + remaining: function () { + return filters.active(this.todos).length + }, + allDone: { + get: function () { + return this.remaining === 0 + }, + set: function (value) { + this.todos.forEach(function (todo) { + todo.completed = value + }) + this.notifyChange(); + } + } + }, + + filters: { + pluralize: function (n) { + return n === 1 ? 'item' : 'items' + } + }, + + // methods that implement data logic. + // note there's no DOM manipulation here at all. + methods: { + notifyChange: function () { + todoStorage.save(this.todos) + }, + addTodo: function () { + var value = this.newTodo && this.newTodo.trim() + if (!value) { + return + } + this.todos.push({ + id: this.todos.length + 1, // just for the client-side. + title: value, + completed: false + }) + this.newTodo = '' + this.notifyChange(); + }, + + completeTodo: function (todo) { + if (todo.completed) { + todo.completed = false; + } else { + todo.completed = true; + } + this.notifyChange(); + }, + removeTodo: function (todo) { + this.todos.splice(this.todos.indexOf(todo), 1) + this.notifyChange(); + }, + + editTodo: function (todo) { + this.beforeEditCache = todo.title + this.editedTodo = todo + }, + + doneEdit: function (todo) { + if (!this.editedTodo) { + return + } + this.editedTodo = null + todo.title = todo.title.trim(); + if (!todo.title) { + this.removeTodo(todo); + } + this.notifyChange(); + }, + + cancelEdit: function (todo) { + this.editedTodo = null + todo.title = this.beforeEditCache + }, + + removeCompleted: function () { + this.todos = filters.active(this.todos); + this.notifyChange(); + } + }, + + // a custom directive to wait for the DOM to be updated + // before focusing on the input field. + // http://vuejs.org/guide/custom-directive.html + directives: { + 'todo-focus': function (el, binding) { + if (binding.value) { + el.focus() + } + } + } +}) + +// handle routing +function onHashChange() { + var visibility = window.location.hash.replace(/#\/?/, '') + if (filters[visibility]) { + app.visibility = visibility + } else { + window.location.hash = '' + app.visibility = 'all' + } +} + +window.addEventListener('hashchange', onHashChange) +onHashChange() + +// mount +app.$mount('.todoapp') +``` + +Let's add our view, the static html. + +```html + + + + + + + Iris + Vue.js • TodoMVC + + + + + + + + + + + + + + +
+
+

todos

+ +
+
+ +
    +
  • +
    + + + + +
    + +
  • +
+
+
+ + {{ remaining }} {{ remaining | pluralize }} left + + + +
+
+ + + + + + +``` + ### The server-side (iris) +Our view model. + +```go +// file: todo/item.go +package todo + +type Item struct { + SessionID string `json:"-"` + ID int64 `json:"id,omitempty"` + Title string `json:"title"` + Completed bool `json:"completed"` +} +``` + +Our service. + +```go +// file: todo/service.go +package todo + +import ( + "sync" +) + +type Service interface { + Get(owner string) []Item + Save(owner string, newItems []Item) error +} + +type MemoryService struct { + // key = session id, value the list of todo items that this session id has. + items map[string][]Item + // protected by locker for concurrent access. + mu sync.RWMutex +} + +func NewMemoryService() *MemoryService { + return &MemoryService{ + items: make(map[string][]Item, 0), + } +} + +func (s *MemoryService) Get(sessionOwner string) []Item { + s.mu.RLock() + items := s.items[sessionOwner] + s.mu.RUnlock() + + return items +} + +func (s *MemoryService) Save(sessionOwner string, newItems []Item) error { + var prevID int64 + for i := range newItems { + if newItems[i].ID == 0 { + newItems[i].ID = prevID + prevID++ + } + } + + s.mu.Lock() + s.items[sessionOwner] = newItems + s.mu.Unlock() + return nil +} +``` + +We are going to use some of the MVC functionalities of the iris web framework here but you can do the same with the standard API as well. + +```go +// file: controllers/todo_controller.go +package controllers + +import ( + "vuejs-todo-mvc/src/todo" + + "github.com/kataras/iris" + "github.com/kataras/iris/mvc" + "github.com/kataras/iris/sessions" + "github.com/kataras/iris/websocket" +) + +// TodoController is our TODO app's web controller. +type TodoController struct { + Service todo.Service + + Session *sessions.Session +} + +// BeforeActivation called once before the server ran, and before +// the routes and dependencies binded. +// You can bind custom things to the controller, add new methods, add middleware, +// add dependencies to the struct or the method(s) and more. +func (c *TodoController) BeforeActivation(b mvc.BeforeActivation) { + // this could be binded to a controller's function input argument + // if any, or struct field if any: + b.Dependencies().Add(func(ctx iris.Context) (items []todo.Item) { + ctx.ReadJSON(&items) + return + }) +} + +// Get handles the GET: /todos route. +func (c *TodoController) Get() []todo.Item { + return c.Service.Get(c.Session.ID()) +} + +// PostItemResponse the response data that will be returned as json +// after a post save action of all todo items. +type PostItemResponse struct { + Success bool `json:"success"` +} + +var emptyResponse = PostItemResponse{Success: false} + +// Post handles the POST: /todos route. +func (c *TodoController) Post(newItems []todo.Item) PostItemResponse { + if err := c.Service.Save(c.Session.ID(), newItems); err != nil { + return emptyResponse + } + + return PostItemResponse{Success: true} +} + +func (c *TodoController) GetSync(conn websocket.Connection) { + conn.Join(c.Session.ID()) + conn.On("save", func() { // "save" event from client. + conn.To(c.Session.ID()).Emit("saved", nil) // fire a "saved" event to the rest of the clients w. + }) + + conn.Wait() +} +``` + +And finally our main application's endpoint. + +```go +// file: web/main.go +package main + +import ( + "vuejs-todo-mvc/src/todo" + "vuejs-todo-mvc/src/web/controllers" + + "github.com/kataras/iris" + "github.com/kataras/iris/sessions" + "github.com/kataras/iris/websocket" + + "github.com/kataras/iris/mvc" +) + +func main() { + app := iris.New() + + // serve our app in public, public folder + // contains the client-side vue.js application, + // no need for any server-side template here, + // actually if you're going to just use vue without any + // back-end services, you can just stop afer this line and start the server. + app.StaticWeb("/", "./public") + + // configure the http sessions. + sess := sessions.New(sessions.Config{ + Cookie: "iris_session", + }) + + // configure the websocket server. + ws := websocket.New(websocket.Config{}) + + // create a sub router and register the client-side library for the iris websockets, + // you could skip it but iris websockets supports socket.io-like API. + todosRouter := app.Party("/todos") + // http://localhost:8080/todos/iris-ws.js + // serve the javascript client library to communicate with + // the iris high level websocket event system. + todosRouter.Any("/iris-ws.js", websocket.ClientHandler()) + + // create our mvc application targeted to /todos relative sub path. + todosApp := mvc.New(todosRouter) + + // any dependencies bindings here... + todosApp.Register( + todo.NewMemoryService(), + sess.Start, + ws.Upgrade, + ) + + // controllers registration here... + todosApp.Handle(new(controllers.TodoController)) + + // start the web server at http://localhost:8080 + app.Run(iris.Addr(":8080"), iris.WithoutVersionChecker) +} +``` + +Run the Iris web server you've just created by executing `go run main.go` from your current path (%GOPATH%/src/%your_folder%/web/). + +```sh +$ go run main.go +Now listening on: http://localhost:8080 +Application Started. Press CTRL+C to shut down. +_ +``` + +Open one or more browser tabs at: http://localhost:8080 and have fun! + +![](screen.png) + +### Download the Source Code + +The whole project, all the files you saw in this article are located at: https://github.com/kataras/iris/tree/master/_examples/tutorial/vuejs-todo-mvc + +## Thank you, once again + +Happy new year and thank you for your pattience, once again:) Don't hesitate to post any questions and provide feedback(I'm very active dev therefore you will be heard here!) + +Don't forget to check out my medium profile and twitter as well, I'm posting some (useful) stuff there too:) + +- https://medium.com/@kataras +- https://twitter.com/MakisMaropoulos + ## References -https://vuejs.org/v2/examples/todomvc.html (using browser's local storage) \ No newline at end of file +https://vuejs.org/v2/examples/todomvc.html (using browser's local storage) + +https://github.com/kataras/iris/tree/master/_examples/mvc (mvc examples and features overview repository) \ No newline at end of file diff --git a/_examples/tutorial/vuejs-todo-mvc/screen.png b/_examples/tutorial/vuejs-todo-mvc/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..41df240d7fa4f06082319b77cfc8e29e3c064ee5 GIT binary patch literal 103259 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%0DJ*7BA_EgO(Oa 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 BulE1| literal 0 HcmV?d00001 diff --git a/_examples/tutorial/vuejs-todo-mvc/src/web/controllers/todo_controller.go b/_examples/tutorial/vuejs-todo-mvc/src/web/controllers/todo_controller.go index 79fa48d9..c3fd0724 100644 --- a/_examples/tutorial/vuejs-todo-mvc/src/web/controllers/todo_controller.go +++ b/_examples/tutorial/vuejs-todo-mvc/src/web/controllers/todo_controller.go @@ -52,6 +52,10 @@ func (c *TodoController) Post(newItems []todo.Item) PostItemResponse { } func (c *TodoController) GetSync(conn websocket.Connection) { + // join to the session in order to send "saved" + // events only to a single user, that means + // that if user has opened more than one browser window/tab + // of the same session then the changes will be reflected to one another. conn.Join(c.Session.ID()) conn.On("save", func() { // "save" event from client. conn.To(c.Session.ID()).Emit("saved", nil) // fire a "saved" event to the rest of the clients w. diff --git a/_examples/tutorial/vuejs-todo-mvc/src/web/public/js/app.js b/_examples/tutorial/vuejs-todo-mvc/src/web/public/js/app.js index 92135237..ab30eee8 100644 --- a/_examples/tutorial/vuejs-todo-mvc/src/web/public/js/app.js +++ b/_examples/tutorial/vuejs-todo-mvc/src/web/public/js/app.js @@ -1,5 +1,5 @@ // Full spec-compliant TodoMVC with Iris -// and hash-based routing in ~120 effective lines of JavaScript. +// and hash-based routing in ~200 effective lines of JavaScript. var socket = new Ws("ws://localhost:8080/todos/sync");