ホームページ  >  記事  >  WeChat アプレット  >  WeChat ミニ プログラムの最適化に関する詳細な説明

WeChat ミニ プログラムの最適化に関する詳細な説明

零下一度
零下一度オリジナル
2017-05-23 23:29:402596ブラウズ

この記事では、主に減量のための WeChat ミニ プログラムに関する関連情報を紹介します。記事内の紹介は非常に詳細であり、必要な友人は以下を参照してください。

前書き

ご存知のとおり、WeChat アプレットがリリースされると、送信されるコードには 1M のサイズ制限があります。したがって、もう少し複雑な関数を含む小さなプログラムを作成している場合は、コードがこの最終ラインに達しようとしているかどうかに常に注意を払う必要があります。

小さなプログラムの設計を始めるときは、この点に焦点を当て、この問題が早期に発生することを避けるためにいくつかの方法を採用する必要があります。

大きなローカル画像や大きなリソースファイルの使用は避けてください

  • ミニプログラムのUIで大きな画像の使用をできるだけ避けてください

  • または。 、小さくて絶妙なアイコンを使用して装飾してください

  • 本当に大きな写真を使用したい場合は、ミニプログラムのローカルコードに写真を入れないでください、リモートURLアドレスから写真をロードする必要があります

このようにして、大きな画像や大きなリソース ファイルなどをミニ プログラムのリリース パッケージにパッケージ化することを回避できます。

コードを冗長にしすぎないでください

JavaScriptのコードレベルでは、コードロジックを慎重に検討し、非常に単純なロジックをたくさん書かず、コードを最適化して合理化してください。
ビュー レベルでは、コンポーネントの不必要なネストを避けるようにしてください。1 つのビューでそれができる場合は、ビューの別のレイヤーを追加しないでください。これは、コード サイズの削減とコードのパフォーマンスの両方に役立ちます:)

ツールを使用してコードを圧縮し、最適化します

現在、HTML5 などの Web フロントエンド プロジェクトの開発とリリースでは、通常、いくつかのコードを使用しますフロントエンド エンジニアリング ツールは、uglify、cssnano、htmlmin などのいくつかの機能プラグインと組み合わせた Gulp の使用など、コードを処理するために使用されます。これらのツールを使用すると、コード サイズを小さくすることができます (約 20% ~ 30%)。

幸いなことに、これらのツールは小規模なプログラム開発にも完全に役立ちます。これらのツールを使用するだけでコードを大幅に削減できます。なぜでしょうか? !

ミニ プログラムには、ツールを使用して最適化できる次の種類のファイルがあります:

1、JSONfiles

jsonminify を使用して JSON ファイルを圧縮し、JSON ファイル内の余分なスペースを削除できます。

2. JavaScript ファイル

uglify を使用して JS コードの構文とテキスト圧縮を最適化します

3. WXML ファイル

WXSS ファイル内の余分なスペースやコメントなどをクリーンアップします

4.

LESS が提供する機能を使用してアプレット内でグローバル WXSS をマージできます。cssnano を使用して WXSS ファイルをクリーンアップおよび圧縮し、autoprefixer を使用してさまざまな環境のプレフィックスを WXSS に追加して、良好な互換性を実現できます

5. 画像ファイル

imageminを使用すると、画像ファイルのサイズを最適化できます

以下は私が参考にしているGulpスクリプトです:

package.json

{
 "name": "myproject",
 "version": "1.0.0",
 "description": "my project",
 "author": "Kevin Zhang <zarknight@gmail.com>",
 "scripts": {
 "build:prod": "gulp build:prod",
 "build:clean": "gulp build:clean",
 "watch:clean": "gulp watch:clean",
 "start": "npm run watch:clean"
 },
 "devDependencies": {
 "autoprefixer": "^6.6.0",
 "babel-eslint": "^7.1.1",
 "babel-preset-latest": "^6.16.0",
 "del": "^2.2.2",
 "gulp": "^3.9.1",
 "gulp-babel": "^6.1.2",
 "gulp-cssnano": "^2.1.2",
 "gulp-eslint": "^3.0.1",
 "gulp-htmlmin": "^3.0.0",
 "gulp-if": "^2.0.2",
 "gulp-jsonlint": "^1.2.0",
 "gulp-jsonminify": "^1.0.0",
 "gulp-less": "^3.3.0",
 "gulp-load-plugins": "^1.4.0",
 "gulp-postcss": "^6.2.0",
 "gulp-rename": "^1.2.2",
 "gulp-sourcemaps": "^2.2.1",
 "gulp-uglify": "^2.0.0",
 "run-sequence": "^1.2.2"
 }
}

gulpfile.js

const gulp = require(&#39;gulp&#39;)
const del = require(&#39;del&#39;)
const runSequence = require(&#39;run-sequence&#39;)
const autoprefixer = require(&#39;autoprefixer&#39;)
const $ = require(&#39;gulp-load-plugins&#39;)()

let prod = false

// -------------------- Clean --------------------------

gulp.task(&#39;clean&#39;, () => {
 return del([&#39;./dist/**&#39;])
})

// -------------------- Lint ---------------------------

gulp.task(&#39;eslint&#39;, () => {
 return gulp.src([&#39;./src/**/*.js&#39;])
 .pipe($.eslint())
 .pipe($.eslint.format())
 .pipe($.eslint.failAfterError())
})

gulp.task(&#39;jsonlint&#39;, () => {
 return gulp.src([&#39;./src/**/*.json&#39;])
 .pipe($.jsonlint())
 .pipe($.jsonlint.reporter())
 .pipe($.jsonlint.failAfterError())
})

// -------------------- JSON ---------------------------

gulp.task(&#39;json&#39;, [&#39;jsonlint&#39;], () => {
 return gulp.src(&#39;./src/**/*.json&#39;)
 .pipe($.if(prod, $.jsonminify()))
 .pipe(gulp.dest(&#39;./dist&#39;))
})

gulp.task(&#39;json:watch&#39;, () => {
 gulp.watch(&#39;./src/**/*.json&#39;, [&#39;json&#39;])
})

// -------------------- Assets --------------------------

gulp.task(&#39;assets&#39;, () => {
 return gulp.src(&#39;./src/assets/**&#39;)
 .pipe(gulp.dest(&#39;./dist/assets&#39;))
})

gulp.task(&#39;assets:watch&#39;, () => {
 gulp.watch(&#39;./src/assets/**&#39;, [&#39;assets&#39;])
})

// -------------------- WXML -----------------------------

gulp.task(&#39;templates&#39;, () => {
 return gulp.src(&#39;./src/**/*.wxml&#39;)
 .pipe($.if(prod, $.htmlmin({
 collapseWhitespace: true,
 removeComments: true,
 keepClosingSlash: true
 })))
 .pipe(gulp.dest(&#39;./dist&#39;))
})

gulp.task(&#39;templates:watch&#39;, () => {
 gulp.watch(&#39;./src/**/*.wxml&#39;, [&#39;templates&#39;])
})

// -------------------- WXSS ------------------------------

gulp.task(&#39;styles&#39;, () => {
 return gulp.src([&#39;./src/**/*.wxss&#39;, &#39;!./src/styles/**&#39;])
 .pipe($.less())
 .pipe($.postcss([
 autoprefixer([
 &#39;iOS >= 8&#39;,
 &#39;Android >= 4.1&#39;
 ])
 ]))
 .pipe($.if(prod, $.cssnano()))
 .pipe($.rename((path) => path.extname = &#39;.wxss&#39;))
 .pipe(gulp.dest(&#39;./dist&#39;))
})

gulp.task(&#39;styles:watch&#39;, () => {
 gulp.watch(&#39;./src/**/*.wxss&#39;, [&#39;styles&#39;])
})

// -------------------- JS --------------------------------

gulp.task(&#39;scripts&#39;, [&#39;eslint&#39;], () => {
 return gulp.src(&#39;./src/**/*.js&#39;)
 .pipe($.babel())
 .pipe($.if(prod, $.uglify()))
 .pipe(gulp.dest(&#39;./dist&#39;))
})

gulp.task(&#39;scripts:watch&#39;, () => {
 gulp.watch(&#39;./src/**/*.js&#39;, [&#39;scripts&#39;])
})

// ---------------------------------------------------------

gulp.task(&#39;build&#39;, [
 &#39;json&#39;,
 &#39;assets&#39;,
 &#39;templates&#39;,
 &#39;styles&#39;,
 &#39;scripts&#39;
])

gulp.task(&#39;watch&#39;, [
 &#39;json:watch&#39;,
 &#39;assets:watch&#39;,
 &#39;templates:watch&#39;,
 &#39;styles:watch&#39;,
 &#39;scripts:watch&#39;
])

gulp.task(&#39;build:clean&#39;, (callback) => {
 runSequence(&#39;clean&#39;, &#39;build&#39;, callback)
})

gulp.task(&#39;watch:clean&#39;, (callback) => {
 runSequence(&#39;build:clean&#39;, &#39;watch&#39;, callback)
})

gulp.task(&#39;build:prod&#39;, (callback) => {
 prod = true
 runSequence(&#39;build:clean&#39;, callback)
})

gulp.task(&#39;default&#39;, [&#39;watch:clean&#39;])

【関連おすすめ】

1. WeChat ミニ プログラムの完全なソース コードのダウンロード

2. タブバーをクリックしてアイコンを変更します

3. WeChat ミニ プログラムのデモ: Lezhu

以上がWeChat ミニ プログラムの最適化に関する詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。