私のウェブサイトwww.trailbehind.comには、すべてのページに属する一連のjavascriptファイルがあります。そしていくつかのページには追加のライブラリが含まれています。
すべてのページで使用されているJSファイル(数十のファイルがあります)については、連結してビルド時にそれらを縮小します。
設定ファイルには、連結されたjavascriptを使用するかビルド時に別のファイルを使用するかのフラグがあります。これは、開発者のjavascriptをデバッグできるようにするためには重要ですが、本番環境では小さな単一ファイルのjavascriptを使用してください。ここで
は、私たちのPythonコードを組み合わせて縮小化することです。
import os
import thetrailbehind.lib.jsmin as jsmin
JS_FILES = [ 'lib/json2.js',
'lib/markermanager.js',
'lib/labeledmarker.js',
'lib/rsh/rsh.js',
'lib/showdown.js',
'lib/yui.js',
'lib/dragzoom.js',
'gen/attribute_data.js',
'gen/national-parks.js',
'Widgets/CommentsWidget.js',
'Widgets/Search.js',
'Widgets/MenuWidget.js',
'Widgets/PhotoWidget.js',
'Widgets/ReportList.js',
'Widgets/help.js',
'attributes.js',
'rsh.js',
'map.js',
'mapcontrols.js',
'markers.js',
'amazon.js',
'plan_trip.js',
'init.js',]
def concat(files, base_path, all_file, all_file_min):
if os.path.exists(base_path + all_file):
lasttime = os.path.getmtime(base_path + all_file)
else:
lasttime = 0
out_of_date = False
for file in files:
if os.path.getmtime(base_path + file) > lasttime:
out_of_date = True
break
if out_of_date:
outfile = open(base_path + all_file, 'w')
for file in files:
outfile.write(open(base_path + file).read())
outfile.write("\n")
outfile.close()
alljs = open(base_path + all_file)
allminjs = open(base_path + all_file_min, "w+")
jsmin.JavascriptMinify().minify(alljs, allminjs)
alljs.close()
allminjs.close()
def main():
concat(JS_FILES, '/home/wibge/thetrailbehind/media/javascript/', 'gen/all.js', 'gen/all.min.js')
if __name__ == "__main__":
main()
そしてここでは、私たちが切り替わりジャンゴ/ HTMLテンプレートです:
{% if use_all_js %}
script type=text/javascript src=/site_media/javascript/gen/all.min.js>
{% else %}
script type="text/javascript" src="/site_media/javascript/rsh.js">
script type="text/javascript" src="/site_media/javascript/amazon.js">
script type="text/javascript" src="/site_media/javascript/map.js">
A BUNCH OF SEPARATE INCLUDES...etc
{% endif %}
を要求したとして、部分的に1回だけ使用します。私が2度それを使ったら、私はそれを動かすだろう。私が複数回使用していない場合は、複数使用のためにビルドする必要はありません。 –
@Scott、どこに移動しますか?私はそれが本当にここの質問だと思います。すべてのビューページでそれらを必要としない場合は、それらをマスターページに含めるのは無駄です。 –