Comments (6)
I'm sorry, I haven't been able to reproduce this issue.
To reproduce, I used the following project.
package main
import (
"fmt"
"net/http"
"github.com/a-h/templ"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
templ.Handler(page()).ServeHTTP(w, r)
})
err := http.ListenAndServe("localhost:8080", mux)
if err != nil {
fmt.Println(err)
}
}
package main
templ page() {
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Document</title>
</head>
<body>
for _, name := range []string{"name1", "name2"} {
{ name }
}
// bug-trigger
<p>THIS WILL BE RENDRED IF I UNCOMMENT THE LINE ABOVE</p>
</body>
</html>
}
templ generate --watch --proxy=http://localhost:8080 --cmd="go run ."
Here's a screen capture of what I see.
templ.reload.mp4
Reading back through the comments more closely, I see that this is actually related to having air and templ both trying to do hot reload at the same time. It seems you've got a solution, and documented it for others at #596
I'll close this.
from templ.
Can perhaps be related to that templ generate
will remove all _templ.txt
files.
But when you stop the templ generate -watch ...
the _templ.txt
files remains.
Fixing just this will not solve all the cases for this problem tho.
from templ.
Note: if there is a way to use templ generate -watch -proxy
to get hot-reload and also re-build go also when non related templ files are edited, that would be nice. :)
Since to problem above stems from me trying to get this by combining air
and templ watch proxy
.
from templ.
With some more testing, with the same approach of running go run .
and templ generate -watch -proxy="..."
.
The main issue seems to be that the go-server needs to restart preferably before the reload event is sent, but this seem to be hard to do without using the -cmd
flag.
By using the -cmd
flag I can't run air in a separate terminal, since that will lead to two go-servers running. :P
So I guess the workaround in the meantime is to just use -cmd=air
and let templ restart air.
from templ.
See #596 discussion for the semi-solution I ended up using.
@a-h it seems to me that there are some cases where there is a conflict between when the templ don't thinks it need to
re-generate GO code, but it has done it anyways, so _templ.go and _templ.txt don't match up? As in the case with this bug i think. (see steps to recreate in first comment)
Note: hope you're not bothered by me "spamming" a bit. :P
from templ.
Think I perhaps found the cause of this issue, since in this case I didn't rebuild GO so any changes to _templ.go
is not taken into effect for the current go-server.
If I edit a .templ
file by adding a new line with some text or html, both the _templ.go
and _templ.txt
is updated, but any additional changes to that same line will only update _templ.txt
.
It seems that \n
(new line) causes the _templ.go
to be rebuilt even tho I don't see a reason for why that has to be the case. If possible to build in a way that don't require this, we could have much more cases with faster
hot-reload since we can omit the rebuild of _templ.go
and go-server.
I haven't looked to much into the source code, so just throwing some thoughts around this. :P
from templ.
Related Issues (20)
- proxy injected script shouldn't error when re-evaluated
- Errors in go portions of a template report line numbers in the go file instead of the templ file HOT 2
- Golang code generated always import github.com/a-h/templ even if not used HOT 2
- Issue with for loop parsing for: expected nodes, but none were found: line 96, col 13 HOT 3
- vscode: show _templ.go files greyed out? HOT 8
- Can/could templ support plain text? HOT 3
- lsp: formatting malformed when CSS expressions are too long HOT 6
- proposal: add templ.JSONScript and templ.JSON functions HOT 4
- proposal: deprecate CSS components in favour of 3rd party CSS pre-processors HOT 10
- Bug: hot reloader adds a wrong reload script in nested body responses HOT 1
- fmt: broken mutliline raw string formatting
- Website SEO HOT 1
- proposal: Allow for primitives & fmt.Stringer in addition to string in templates HOT 2
- vscode: Bad highlighting when using generic functions HOT 3
- Binary in`templ_Darwin_arm64.tar.gz` v0.2.697 displays version 0.2.696 HOT 8
- -stdout sends error report to output file HOT 3
- bug: script elements don't render script templates
- lsp: support the organizeImports code action HOT 3
- Wasm support for interacting with the DOM HOT 3
- generator: can't use iterator value in for loop HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from templ.