Comments (3)
Hi, sorry for the delay in responding.
At the moment, templ script components don't do any bundling or transpilation of the JavaScript that's in them. That means that you can only use browser-supported features in templ script components.
However, you can bundle your own JavaScript or TypeScript and use any features you like, including async/await
, importing npm
modules.
I put together an example of how to bundle TypeScript in the PR at https://github.com/a-h/templ/pull/738/files - it's the same process for JS, but with different file names.
It also covers your use case of getting Go data into your JavaScript function.
Note how ./ts/src/index.ts
is bundled and minified by esbuild
(https://esbuild.github.io/getting-started/#install-esbuild) to create ./assets/js/index.js
.
I will update the https://templ.guide documentation to mention this approach more clearly.
I'm also proposing two new features to add to templ to make this simpler to achieve: #739
And in #740 I discuss where I think we might want to go with CSS.
from templ.
For use with htmx I feel the advantage of being able to, per response, generate a dynamic async function would be quite useful. Just that, my one particular use case for passwordless is extremely minimal.
For that I do have to question this point you made.
That means that you can only use browser-supported features in templ script components.
https://caniuse.com/async-functions is widely supported ( over 97% ), which I am not sure where you draw the line at supported or not but I understand if it needs to be 100%.
Additionally, the experience of writing short javascript functions is not that bad. I don't feel its any different from writing inside a <script></script>
tag in a normal html file.
I think I have a solution using strings, it just means I have to match up the function name by string rather then directly but to me that is a better trade off then adding nodejs and esbuild as a dependency. Maybe if I had hundreds of lines of javascript it would be worth it. But via HTMX I really only need a little bit.
from templ.
It seems there is a work around for this, and with the deprecation of script templates as recommended features I think we can close this.
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 7
- 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.