ArtalkJS / Artalk

🌌 Your Self-hosted Comment System. | 自托管评论系统
https://artalk.js.org
MIT License
1.67k stars 142 forks source link

Provide a sub-export for pageview feature #1013

Open Mister-Hope opened 3 weeks ago

Mister-Hope commented 3 weeks ago

In most blog sites, there should be no comment box at homepage, timeline, catetgories/tags list.

However, these pages can contain article list, which can contain pageviews of the article.

To achieve the best performance, only pageview feature is needed here. (Especially for homepage, the full artalk chunk should not be forced loaded)

My package Waline provides a standalone pageview chunk as @waline/client/pageview for it, which solves the problem.

The main problem that Artalk has, is that not only it's not providing a separate chunk, but it also do not allow to "tree shake" the feature.

Though loadCountWidget is a sub export for the main module, it's coming from static member from artalk, i.e.:

class Artalk {
 // ...
 static loadCountWidget(e) {
   // ...
 }
}

const loadCountWidget = Artalk.loadCountWidget

export { loadCountWidget }

Suggested solution

  1. make loadCountWidget and all other possible exports tree-shakable. The "server link" should be required when calling these features alone.
  2. provide a separate chunk for pageview feature.