SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Fast Web Applications
with Go
!

DevFestW Istanbul !
March 2,2014!
Ekin Eylem Ozekin!
Outline
!

² 

Introduction to Go!

² 

Web with Go!

² 

Is Go suitable to Web!

² 

Demo Web Application!

² 

Questions

!
But First of All, Me
!

• 

Ekin Eylem Ozekin!

• 

BSc. In Computer Science, MSc. In Software
Engineering!

• 

Currently, Ph.D. Candidate at Bogazici
University, on Machine Learning!

• 

Works at GE

!
Introduction to Go
!

• 

Built around 2007, announced at 2009!

• 

By “GO”ogle!

• 

Open Source!

• 

Similar to C!

• 

Statically typed, compiled!

• 

No pointer arithmetic

!
Introduction to Go
!

• 

Automatic memory management, classes
(structs), type inference!

• 

First class functions, suitable to functional
programming!

• 

Concurrency support, channels

!
Introduction to Go
!

• 

Ideal for fast, distributed systems!

• 

Can import libraries directly from URLs!

• 

Built-in UTF-8 support (İ, Ğ etc. works perfectly)!

• 

Integrated AppEngine libraries

!
Introduction to Go
!

package main!
!

import (!
"fmt"!
"net/http"!
)!
!

func get_name() (string, string) {!
// No reason to break a few rules, right!
var hello = "Hello "!
audience := "DevFestTR"!
return hello, audience!
}!
!
func handler(writer http.ResponseWriter, request *http.Request) {!
hello, audience := get_name()!
fmt.Fprintf(writer, hello + audience)!
}!
!
func main() {!
http.HandleFunc("/", handler)!
http.ListenAndServe(":8080", nil)!
}

!
Introduction to Go
!

• 

Written as read, left from right!

• 

No semicolons!

• 

Multiple return values (think of tuples in Python)!

• 

Single binary file after compile!

• 

More on the previous code later

!
Web with Go
!

• 

Built-in http package!

• 

Similar to J2EE Servlets!

• 

But more like a Micro-framework

!
Web with Go
!

• 

Web Development with the performance of C!

• 

Might be deployed with built-in server (port
listener actually)!

• 

Deploy to Apache or Nginx with FastCGI!

• 

Also mod_go for Apache!

• 

Deploy to AppEngine or Heroku

!
Is Go Suitable for Web
!

Should I use Go for Web?
!
Is Go Suitable for Web
!

Pros!

• 
• 

Micro-framework style http package!

• 

CGI support (kinda old but solid and useful)!

• 

Compiled, fast performance!

• 

C like Syntax but better!

• 

API is mature enough!
Is Go Suitable for Web
!

Cons!

• 
• 

Not easier then PHP (or Ruby or Python)!

• 

Not as widely used as others!

• 

Not proven enough yet (can be argued)!
Is Go Suitable for Web
!

Last Word!

• 
• 

Service Oriented Architecture and Micro Frameworks fit well!

• 

You don’t have to use just Go, use with others!

• 

Google already uses it (isn’t it enough reason?)!
Demo

!

A Web application with Go
!

!

Let’s GO!
Source Code
!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

Server Side Code!

package main!
import ("html/template"; "fmt"; "net/http"; "strconv")!
func main() {!
http.HandleFunc("/", form)!
http.HandleFunc("/show_age", form_handler)!
http.ListenAndServe(":8080", nil)!
}!
func form(writer http.ResponseWriter,!
request *http.Request) {!
genderList := []string { "Male", "Female" }!
t, _ := template.ParseFiles("form.html")!
t.Execute(writer, map[string]interface{} {!
"genders": genderList,!
"title": "DevFest Applicant Form",!
})!
}!
func form_handler(writer http.ResponseWriter,!
request *http.Request) {!
gender := request.FormValue("gender")!
message := ""!
if ("1" == gender) {!
message = "You don't ask a woman her age."!
} else {!
age, _ := strconv.Atoi(request.FormValue("age"))!
if (age < 1000) {!
message = "This boy is still alive and kicking"!
} else {!
message = ”Still too young!"!
} !
}!
fmt.Fprintf(writer, message)!
}

!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Template Code!

<h1>{{.title}}</h1>!
<p>!
Fill in your gender and age.!
<br />!
And I will tell you if you are old or not...!
</p>!
<form action="/show_age" method="POST">!
<dl>!
<dt>Gender</dt>!
<dd>!
<select name="gender" style="width: 125px;">!
{{range $index, $value := .genders}}!
<option value="{{$index}}" />{{$value}}!
{{end}}!
</select>!
</dd>!
<dt>Age</dt>!
<dd><input type="text" name="age" /></dd>!
</dl>!
<input type="submit" value="Save">!
</form>

!
More information
!

² 

http://golang.org/doc/!

² 

http://golang.org/doc/articles/gos_declaration_syntax.html!

² 

http://blog.iron.io/2013/08/go-after-2-years-in-production.html!
Questions?

!

?

!

Thank you for listening!
!

Ekin Eylem Ozekin!
eeozekin@gmail.com

!
Q&A Session
!

• 
• 

• 
• 
• 
• 
• 
• 

Is there a Database Abstraction layer?!
As there are no classes ORM is a bit crippled. However, there are few implementations on that.
You can find those here: http://jmoiron.net/blog/golang-orms/ . There are also bindings for popular
databases: http://go-lang.cat-v.org/library-bindings!
What can I use for User Interfaces?!
There is a GTK binding for that. For more libraries you can check:
http://go-lang.cat-v.org/library-bindings!
To return multiple values Python returns actually a Tuple data structure. Is it similar in Go too?!
No. Go really returns multiple values.!
If I can something on a template, should I recompile in order to see changes?!
No, you don’t. If you make a change on the template code, all you have to do is refresh the page.
However you should be careful, when deploying to the server you should make sure that those
templates exist too.

!

Mais conteúdo relacionado

Mais procurados

Week 8 intro to python
Week 8   intro to pythonWeek 8   intro to python
Week 8 intro to python
brianjihoonlee
 

Mais procurados (20)

Untangling - fall2017 - week5
Untangling - fall2017 - week5Untangling - fall2017 - week5
Untangling - fall2017 - week5
 
Untangling - fall2017 - week6
Untangling - fall2017 - week6Untangling - fall2017 - week6
Untangling - fall2017 - week6
 
Saving Time By Testing With Jest
Saving Time By Testing With JestSaving Time By Testing With Jest
Saving Time By Testing With Jest
 
Contributing to open source
Contributing to open sourceContributing to open source
Contributing to open source
 
RubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applicationsRubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applications
 
Angular ❤️ CMS from #AngularUp
Angular ❤️ CMS from #AngularUpAngular ❤️ CMS from #AngularUp
Angular ❤️ CMS from #AngularUp
 
Week 8 intro to python
Week 8   intro to pythonWeek 8   intro to python
Week 8 intro to python
 
Untangling the web - fall2017 - class 4
Untangling the web - fall2017 - class 4Untangling the web - fall2017 - class 4
Untangling the web - fall2017 - class 4
 
My Contributor Story
My Contributor StoryMy Contributor Story
My Contributor Story
 
RubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipelineRubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipeline
 
Whats next in templating
Whats next in templatingWhats next in templating
Whats next in templating
 
Reason React
Reason ReactReason React
Reason React
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHP
 
The future of templating and frameworks
The future of templating and frameworksThe future of templating and frameworks
The future of templating and frameworks
 
Making CLI app in ruby
Making CLI app in rubyMaking CLI app in ruby
Making CLI app in ruby
 
So you think you can scale
So you think you can scaleSo you think you can scale
So you think you can scale
 
ASP.NET Core - Phillosophies, Processes and Tooling
ASP.NET Core - Phillosophies, Processes and ToolingASP.NET Core - Phillosophies, Processes and Tooling
ASP.NET Core - Phillosophies, Processes and Tooling
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications
 
WordPress Development Environments
WordPress Development EnvironmentsWordPress Development Environments
WordPress Development Environments
 

Semelhante a Fast Web Applications with Go

網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
傳錡 蕭
 
How to start developing apps for Firefox OS
How to start developing apps for Firefox OSHow to start developing apps for Firefox OS
How to start developing apps for Firefox OS
benko
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
Ran Mizrahi
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
MrAbbas
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
MrAbas
 
MozTW YZU CSE Lecture
MozTW YZU CSE LectureMozTW YZU CSE Lecture
MozTW YZU CSE Lecture
littlebtc
 

Semelhante a Fast Web Applications with Go (20)

網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
 
Desert Code Camp 2014: C#, the best programming language
Desert Code Camp 2014: C#, the best programming languageDesert Code Camp 2014: C#, the best programming language
Desert Code Camp 2014: C#, the best programming language
 
Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty Framework
 
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"
Дмитрий Щадей "Что помогает нам писать качественный JavaScript-код?"
 
Rapid Prototyping With J Query
Rapid Prototyping With J QueryRapid Prototyping With J Query
Rapid Prototyping With J Query
 
Clojure at ardoq
Clojure at ardoqClojure at ardoq
Clojure at ardoq
 
How to start developing apps for Firefox OS
How to start developing apps for Firefox OSHow to start developing apps for Firefox OS
How to start developing apps for Firefox OS
 
Snakes on the Web; Developing web applications in python
Snakes on the Web; Developing web applications in pythonSnakes on the Web; Developing web applications in python
Snakes on the Web; Developing web applications in python
 
Evaluation of Web Processing Service Frameworks
Evaluation of Web Processing Service FrameworksEvaluation of Web Processing Service Frameworks
Evaluation of Web Processing Service Frameworks
 
Go language presentation
Go language presentationGo language presentation
Go language presentation
 
Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)Intro to node.js - Ran Mizrahi (27/8/2014)
Intro to node.js - Ran Mizrahi (27/8/2014)
 
Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)Intro to node.js - Ran Mizrahi (28/8/14)
Intro to node.js - Ran Mizrahi (28/8/14)
 
GoralSoft
GoralSoftGoralSoft
GoralSoft
 
Single page applications the basics
Single page applications the basicsSingle page applications the basics
Single page applications the basics
 
Breaking up with Microsoft Word
Breaking up with Microsoft WordBreaking up with Microsoft Word
Breaking up with Microsoft Word
 
Developer Efficiency
Developer EfficiencyDeveloper Efficiency
Developer Efficiency
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
 
Web Fundamentals Crash Course
Web Fundamentals Crash CourseWeb Fundamentals Crash Course
Web Fundamentals Crash Course
 
MozTW YZU CSE Lecture
MozTW YZU CSE LectureMozTW YZU CSE Lecture
MozTW YZU CSE Lecture
 
HTML5 History & Features
HTML5 History & FeaturesHTML5 History & Features
HTML5 History & Features
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Fast Web Applications with Go

  • 1. Fast Web Applications with Go ! DevFestW Istanbul ! March 2,2014! Ekin Eylem Ozekin!
  • 2. Outline ! ²  Introduction to Go! ²  Web with Go! ²  Is Go suitable to Web! ²  Demo Web Application! ²  Questions !
  • 3. But First of All, Me ! •  Ekin Eylem Ozekin! •  BSc. In Computer Science, MSc. In Software Engineering! •  Currently, Ph.D. Candidate at Bogazici University, on Machine Learning! •  Works at GE !
  • 4. Introduction to Go ! •  Built around 2007, announced at 2009! •  By “GO”ogle! •  Open Source! •  Similar to C! •  Statically typed, compiled! •  No pointer arithmetic !
  • 5. Introduction to Go ! •  Automatic memory management, classes (structs), type inference! •  First class functions, suitable to functional programming! •  Concurrency support, channels !
  • 6. Introduction to Go ! •  Ideal for fast, distributed systems! •  Can import libraries directly from URLs! •  Built-in UTF-8 support (İ, Ğ etc. works perfectly)! •  Integrated AppEngine libraries !
  • 7. Introduction to Go ! package main! ! import (! "fmt"! "net/http"! )! ! func get_name() (string, string) {! // No reason to break a few rules, right! var hello = "Hello "! audience := "DevFestTR"! return hello, audience! }! ! func handler(writer http.ResponseWriter, request *http.Request) {! hello, audience := get_name()! fmt.Fprintf(writer, hello + audience)! }! ! func main() {! http.HandleFunc("/", handler)! http.ListenAndServe(":8080", nil)! } !
  • 8. Introduction to Go ! •  Written as read, left from right! •  No semicolons! •  Multiple return values (think of tuples in Python)! •  Single binary file after compile! •  More on the previous code later !
  • 9. Web with Go ! •  Built-in http package! •  Similar to J2EE Servlets! •  But more like a Micro-framework !
  • 10. Web with Go ! •  Web Development with the performance of C! •  Might be deployed with built-in server (port listener actually)! •  Deploy to Apache or Nginx with FastCGI! •  Also mod_go for Apache! •  Deploy to AppEngine or Heroku !
  • 11. Is Go Suitable for Web ! Should I use Go for Web? !
  • 12. Is Go Suitable for Web ! Pros! •  •  Micro-framework style http package! •  CGI support (kinda old but solid and useful)! •  Compiled, fast performance! •  C like Syntax but better! •  API is mature enough!
  • 13. Is Go Suitable for Web ! Cons! •  •  Not easier then PHP (or Ruby or Python)! •  Not as widely used as others! •  Not proven enough yet (can be argued)!
  • 14. Is Go Suitable for Web ! Last Word! •  •  Service Oriented Architecture and Micro Frameworks fit well! •  You don’t have to use just Go, use with others! •  Google already uses it (isn’t it enough reason?)!
  • 15. Demo ! A Web application with Go ! ! Let’s GO!
  • 16. Source Code ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Server Side Code! package main! import ("html/template"; "fmt"; "net/http"; "strconv")! func main() {! http.HandleFunc("/", form)! http.HandleFunc("/show_age", form_handler)! http.ListenAndServe(":8080", nil)! }! func form(writer http.ResponseWriter,! request *http.Request) {! genderList := []string { "Male", "Female" }! t, _ := template.ParseFiles("form.html")! t.Execute(writer, map[string]interface{} {! "genders": genderList,! "title": "DevFest Applicant Form",! })! }! func form_handler(writer http.ResponseWriter,! request *http.Request) {! gender := request.FormValue("gender")! message := ""! if ("1" == gender) {! message = "You don't ask a woman her age."! } else {! age, _ := strconv.Atoi(request.FormValue("age"))! if (age < 1000) {! message = "This boy is still alive and kicking"! } else {! message = ”Still too young!"! } ! }! fmt.Fprintf(writer, message)! } ! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Template Code! <h1>{{.title}}</h1>! <p>! Fill in your gender and age.! <br />! And I will tell you if you are old or not...! </p>! <form action="/show_age" method="POST">! <dl>! <dt>Gender</dt>! <dd>! <select name="gender" style="width: 125px;">! {{range $index, $value := .genders}}! <option value="{{$index}}" />{{$value}}! {{end}}! </select>! </dd>! <dt>Age</dt>! <dd><input type="text" name="age" /></dd>! </dl>! <input type="submit" value="Save">! </form> !
  • 18. Questions? ! ? ! Thank you for listening! ! Ekin Eylem Ozekin! eeozekin@gmail.com !
  • 19. Q&A Session ! •  •  •  •  •  •  •  •  Is there a Database Abstraction layer?! As there are no classes ORM is a bit crippled. However, there are few implementations on that. You can find those here: http://jmoiron.net/blog/golang-orms/ . There are also bindings for popular databases: http://go-lang.cat-v.org/library-bindings! What can I use for User Interfaces?! There is a GTK binding for that. For more libraries you can check: http://go-lang.cat-v.org/library-bindings! To return multiple values Python returns actually a Tuple data structure. Is it similar in Go too?! No. Go really returns multiple values.! If I can something on a template, should I recompile in order to see changes?! No, you don’t. If you make a change on the template code, all you have to do is refresh the page. However you should be careful, when deploying to the server you should make sure that those templates exist too. !