thảo luận Svelte <3 TypeScript

rich_harris - 10/21/2020​

off the top of my head, these are the main differences that affect source code (rather than all the boilerplate that goes around a project): * endpoints (formerly known as 'server routes') have a new signature — instead of (req, res, next?) => void it'll be ({path, params, query}, session) => ({status, headers, body}) * instead of importing from @sapper/app you'll import from something like $app or @app if @silentworks has his druthers (i initially went with a $ prefix to distinguish it from a package scope) * preload signature might change, but we might keep as-is for now and deprecate it in a non-breaking way * since there's no more server.js, custom server logic will need to be expressed some other way (TBD). There'll be a dedicated middleware for creating sessions (i'm hoping we can simplify the clusterfuck around auth that you have to deal with in node apps) * ...I think that's mostly it?

thấy sticky trong discord channel, nghe vụ session middleware cảm thấy hóng vãi :">
 
trước tết có thử cái svelte-kit thì dính vụ không prependData trong scss được bực vkl.

hôm nay thử raise issue trong svelte-preprocess repo xong test lại thấy lại chạy, thật khó hiểu :LOL:

mà cái svelte-kit mới ngon thật, load như gió, hóng vãi. giờ chức năng gần tương đương với sapper cũ rồi, thiếu mỗi cái server.js để tôi sửa chút thông tin bên server nữa là ngon choét.

hóng.
 
trước tết có thử cái svelte-kit thì dính vụ không prependData trong scss được bực vkl.

hôm nay thử raise issue trong svelte-preprocess repo xong test lại thấy lại chạy, thật khó hiểu :LOL:

mà cái svelte-kit mới ngon thật, load như gió, hóng vãi. giờ chức năng gần tương đương với sapper cũ rồi, thiếu mỗi cái server.js để tôi sửa chút thông tin bên server nữa là ngon choét.

hóng.
svelte-preprocess có issue gì đấy?
tôi thấy svelte là compiler cũng có nhược điểm.

Thứ nhất là tôi muốn viết 1 bộ ui library riêng thì tôi phải import cả source vào.
https://github.com/sveltejs/component-template#consuming-components

Thứ hai là thằng maintainer của svelte cũng không chắc cách nào tốt nhất để hỗ trợ preprocessor cho ui library
https://github.com/sveltejs/component-template/issues/8

Thứ ba là những thứ reactive như kiểu $, setContext, getContext, life cycle... phải đặt ở root component, nên không có kiểu hook như react hay vue.

Ưu điểm thì svelte ngắn gọn, trực quan. Tôi thấy code svelte vẫn thoải mái nhất so với đám react, vue.

Mà tôi đang clone dở thằng themify bằng svelte nhưng đang phải nhảy qua backend
http://squarespace-concept.surge.sh/

Em phục mấy anh thật đấy, dành thời gian ngồi setup tool luôn

Sent from Xiaomi Redmi 7 using vozFApp
Tool học 1 lần rồi những lần sau copy là được mà. Hơi tốn thời gian lúc đầu thôi.
 
svelte-preprocess có issue gì đấy?
tôi thấy svelte là compiler cũng có nhược điểm.

Thứ nhất là tôi muốn viết 1 bộ ui library riêng thì tôi phải import cả source vào.
https://github.com/sveltejs/component-template#consuming-components

Thứ hai là thằng maintainer của svelte cũng không chắc cách nào tốt nhất để hỗ trợ preprocessor cho ui library
https://github.com/sveltejs/component-template/issues/8

Thứ ba là những thứ reactive như kiểu $, setContext, getContext, life cycle... phải đặt ở root component, nên không có kiểu hook như react hay vue.

Ưu điểm thì svelte ngắn gọn, trực quan. Tôi thấy code svelte vẫn thoải mái nhất so với đám react, vue.

Mà tôi đang clone dở thằng themify bằng svelte nhưng đang phải nhảy qua backend
http://squarespace-concept.surge.sh/


Tool học 1 lần rồi những lần sau copy là được mà. Hơi tốn thời gian lúc đầu thôi.
à không có issue gì, tôi đoán là lúc trước tôi đổi từ node-sass sang sass bị lỗi thôi, tóm lại thì bình thường dùng scss tôi thường thêm dòng "@import 'css/helpers';" vào đầu để dùng đống mixin/vars có sẵn. Đợt trước thử thì cứ báo lỗi suốt là không tìm được mixin dù đã thêm vào cái prependData đủ kiểu. hôm nọ xem thử thì thấy sass-loader nó đổi từ prependData sang additionalData tưởng là do cái này nên raise issue, hoá ra không phải =)

vụ ui library của svelte đúng là hơi khó chịu, tôi cũng đang cân nhắc các giải pháp.
hiện tại thì tôi làm là viết mấy cái reused component sang thành thuần scss mixin, sau đó thì mỗi lần setup project mới thì clone luôn cả cái template project có style/component sẵn rồi sửa dần, hơi có cái khó chịu là mỗi lần sửa css/component thì ở project khác chưa chắc đã cập nhật, nhưng được cái là cái nào chạy thì vẫn chạy, không lo vụ cập nhật css/component mà break compatibility thì project chết một loạt =)

// cơ mà cái ui framework của tôi hiện tại cũng chưa đâu vào đâu do đợt trước cái hmr chạy không ngon tôi chán vứt luôn.

vụ reactive thì còn một cách nữa là khai báo store trong context:module của thằng component, ví dụ

// Foo.svelte
HTML:
<script context="module">
import { writable } from 'svelte/store'
export const count = writable(0)
</script>

// Bar.svelte
HTML:
<script>
import { count as foo_count} from "Foo"
</script>
 
ừm thằng vue composition có runtime. nhưng dưới góc nhìn của 1 noob dev chuyên làm mấy app nho nhỏ như tôi thì cái tôi cần nhất là maintainable chứ không phải performance.
Template của thằng vue bị gì vạy thím
Theo e nó là 1 lối sn khác so với jsx thôi chứ có j đâu nhỉ, nó có cái computed hơi bị ngon
Còn ts thì công nhận vue nó support nửa gà nửa vịt nản vãi. K biết lên vue3 thì có đổi chưa chứ ts gì mà đéo khai báo cũng đéo báo lỗi
 
https://sk-incognito.vercel.app/learn/what-is-sveltekit

nghe có vẻ đã resolve dc phần session/authentication. cơ mà toàn thấy broken chán vãi, kiểu này 2 3 tháng nữa mới có
Tôi cũng vướng phần authen. Sapper không có ví dụ cho phần này.

Tôi không lưu token trên cookie được, vì token api khác domain với resource api. Hiện giờ tôi đang lưu token trên session, nhưng có vẻ cũng có khả năng bị xss giống lưu ở localstorage. Nên tôi tạm thời để hiệu lực token 15p rồi kệ sau này tính.
 
Tôi cũng vướng phần authen. Sapper không có ví dụ cho phần này.

Tôi không lưu token trên cookie được, vì token api khác domain với resource api. Hiện giờ tôi đang lưu token trên session, nhưng có vẻ cũng có khả năng bị xss giống lưu ở localstorage. Nên tôi tạm thời để hiệu lực token 15p rồi kệ sau này tính.
ừ tôi cũng dính vụ này, cho nên giải pháp của tôi là dùng http-proxy-middleware để map /api sang service khác, cookie các kiểu giữ tất.

thực ra thì cũng có dùng cái sapper session kết hợp với express session nữa, mà nhiêu khê vãi phải viết custom middleware, handle một đống logic.
 
ừ tôi cũng dính vụ này, cho nên giải pháp của tôi là dùng http-proxy-middleware để map /api sang service khác, cookie các kiểu giữ tất.

thực ra thì cũng có dùng cái sapper session kết hợp với express session nữa, mà nhiêu khê vãi phải viết custom middleware, handle một đống logic.
Tôi cũng nghĩ đến cách này nhưng sợ network latency nên dùng express session + sapper session
 
https://github.com/sveltejs/kit
oh yeah public beta

rich_harris 58 points 5 hours ago2

oh man, nothing gets past you lot!

we are indeed gearing up for the 'public beta' (which basically consists of making the repo public and publishing a docs site) but the reason this happened now (instead of in a couple of days to coincide with the docs) is more prosaic: private repos have a limited number of GitHub Actions minutes per month, and we ran out, so all our CI checks were failing

lmao
 
tự hào vì tôi cũng không dùng ts.
đúng là idol của tôi có khác, same mindset :">
Tôi không nghĩ thế :LOL:

codemirror 6 viết lại bằng ts
https://github.com/ProseMirror/prosemirror/issues/952#issuecomment-511889991
TypeScript has come a long way, and using it in CodeMirror 6 has been a great experience.

Mà tôi đọc qua example realworld của thằng svelte kit thì chả khác gì sapper. Vấn đề authenticate vẫn nhức nhối phết.
 
Tôi không nghĩ thế :LOL:

codemirror 6 viết lại bằng ts
https://github.com/ProseMirror/prosemirror/issues/952#issuecomment-511889991


Mà tôi đọc qua example realworld của thằng svelte kit thì chả khác gì sapper. Vấn đề authenticate vẫn nhức nhối phết.
chả khác gì
thì vẫn vậy mà :v, doc vẫn còn chữ sapper to đùng, chưa xoá hết dc. khác dc cái là cho vào setup file thôi, đỡ phụ thuộc vào express-session.

mà vụ disable ts thì cũng có giải thích rồi đấy, đang phát triển thì ts nó hơi phiền, stable rồi thì thêm lại sau.

cái codemirror là stable rồi rewrite tất nhiên là dùng typescript hiệu quả hơn rồi.
 
Back
Top