shokai / semirara

deprecated. go https://scrapbox.io
16 stars 3 forks source link

clientのコードが重くなってる #44

Closed shokai closed 8 years ago

shokai commented 8 years ago

960kbあるのはおかしい

highlight.jsを入れた頃から急に増えてるような? でもhighlight.jsにはdependenciesが無いし、サーバーサイドレンダリング #41 のあたりからかもしれない

shokai commented 8 years ago
$ browserify --extension=.jsx --extension=.es6 -t [ babelify ] --list src/client/index.es6 > list.txt
$ cat list.txt| xargs du -k | sort -n | grep highlight

リストを見ると、serverのコードが混じってるという事は無かった

このへんが重い

12      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/index.js
12      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/glsl.js
12      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/livecodeserver.js
12      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/stylus.js
12      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/vim.js
16      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/gauss.js
16      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/sql.js
20      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/mel.js
20      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/stata.js
24      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/highlight.js
24      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/x86asm.js
36      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/maxima.js
36      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/sqf.js
68      /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/mathematica.js
108     /Users/sho/src/nodejs/semirara/node_modules/highlight.js/lib/languages/autoit.js

autoitなんかuglifyしても88kbある

shokai commented 8 years ago

import文の書き方次第で減ったりするかも?特にReactのあたり

shokai commented 8 years ago

import直したけど変わらなかった

highlight.jsの不要なlanguageを削るか、CDNから読み込むかする https://cdnjs.com/libraries/highlight.js/

shokai commented 8 years ago

必要な言語だけビルドする

% node tools/build.js --target node javascript ruby
% ls src/languages | ruby -lane 'print $_.gsub(/\.js$/,"").gsub(/[\r\n]/,"") unless /^(autoit|mathematica|sqf|maxima|stata|mel|gauss|livecodeserver)\.js$/ =~ $_' | xargs -t node tools/build.js --target node
shokai commented 8 years ago
shokai commented 8 years ago

browserify-shimを使った

reactとreact-domをproduction時だけCDNJSから読み込むようにした

index.jsは744kbになった

shokai commented 8 years ago

CDNにあるhighlight.jsはhighlightメソッドを使ってstringをハイライトすることはできず、preタグへの装飾しかできない

shokai commented 8 years ago

いっそ文字列をhighlightして返す機能をサーバーで提供するか

shokai commented 8 years ago

軽いhighlight.jsを自作したほうがいいかも

shokai commented 8 years ago
   "browserify-shim": {
     "react": "global:React",
    "react-dom": "global:ReactDOM",
    "highlight.js": "global:hljs"
   },

これでよかった