فریم ورک جدید برای Clojure

hellhound
clojure
clojurescript

#1

سلام دوستان.
من دارم یه فریم ورک جدید برای Clojure/Script می نویسم. در واقع دارم از دل یه پروژه یه فریم ورک می کشم بیرون. می خواستم ببینم کسی علاقمند هست که به من بپیونده ؟


#2

سلام، خيلى عاليه
من مدتيه با clojure كار نكردم، اما شايد اين فرصت خوبى باشه، من هستم، ميتونم توى وقت آزادم يه كارايى بكنم


#3

عالیه. این کد فعلیه . هنوز جونه و خیلی چیزا نداره اما خوب باید پیش برد


#4

به صورت کلی باید بگم که هدف اصلی از ساخت این فرم ورک، حذف لایه communication هست. یه چیزایی پیاده سازی کردم و کار می کنه اما نیاز به توصعه داره.

برای مثال در سمت کلاینت می تونیم یه کامپوننت به این صورت داشته باشیم:

(defn cool-button
  "Some silly example button"
  []
  [:div [:button {:on-click #(dispatch->server [:fetch-news])}]])

در سمت سرور هم یه همچین چیزی:

(defrouter message-router
  {:fetch-news #(fn [_] (update-app-db [..new data goes here..]))})

(new-websocket-server message-router)

این جوری وقتی رویه اون دکمه کلیک می شه، اون فانکشن سمت سرور اجرا می شه و با اجرا کردن فانکشن update-app-db که کارش آپدیت کردن app-db یا همون Database of Facts سمت کلاینت هست دیتا رو به کلاینت مورد نظر می رسونه. و از اونجایی که تو سمت کلاینت از re-frame استفاده شده، با آپدیت شدن app-db تمام فانکشن هایی که از اون کلید در app-db استفاده کردند، دوباره رندر می شن.

ایده اصلی از این قراره


#5