詳解優化你的微信小程序

零下一度
發布: 2017-05-23 23:29:40
原創
2604 人瀏覽過

這篇文章主要為大家介紹了關於微信小程式瘦身的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

前言

眾所周知,微信小程式在發布的時候,對提交的程式碼有1M大小的限制!所以,如果你正在寫一個功能稍微複雜一點的小程序,就必須得時時刻刻小心注意你的程式碼是不是快觸及這個底線了。

在設計一個小程式之初,我們就需要重點考慮這一點,採取一些方法,來避免太早的遭遇這個問題。

避免使用本機大圖片、大資源檔案

  • #請避免在小程式的UI上使用大圖片,應該盡可能的透過顏色樣式來裝飾你的小程式

  • 或者,使用小而精緻的小圖示來點綴

  • 如果實在想用大圖片,那請不要將圖片放進小程式的本機程式碼中,應該採用從一個遠端URL位址載入圖片的方式

這樣就可以避免把大圖片、大資源檔案等打包進小程式的發布包中去了。

不要讓你的程式碼太囉嗦

#在JavaScript程式碼層面,請審慎的考慮你的程式碼邏輯,不要把一個很簡單的邏輯洋洋灑灑的寫了一大堆,請優化和精簡你的程式碼。
在視圖層面,盡量避免不必要的元件嵌套,能用一個view做到的,就不要再多套一層view。這對減少程式碼尺寸和程式碼效能都是有好處的:)

使用工具壓縮優化程式碼

##在當今

HTML5 等Web前端專案的開發和發布中,我們通常會透過使用一些前端工程化工具來處理我們的程式碼,例如使用Gulp,結合一些功能插件,如:uglify, cssnano, htmlmin等。使用這些工具,可以讓我們的程式碼尺寸小上那麼一大截(約20%~30%)。

而幸運的是,這些工具對小程式開發來說,也完全有效!透過簡單的使用這些工具,就能讓我們的程式碼減少那麼多,何樂而不為呢? !

在小程式中,我們大致上有這麼幾類可以使用工具進行最佳化的檔案:

1、

JSON檔案

我們可以使用jsonminify來壓縮JSON文件,去處JSON文件中多餘的空格

2、JavaScript文件


使用uglify,對JS程式碼進行語法優化和文字壓縮

3、WXML檔


使用htmlmin,可以對WXML檔中多餘的空格,註解等進行清理

4、WXSS檔


可以使用LESS提供的特性,對小程式中的全域WXSS進行合併;使用cssnano對WXSS檔案進行清理和壓縮;使用autoprefixer對WXSS添加不同環境下的前綴,達到良好的兼容性

5、Image檔案


透過使用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. 

微信小程式完整原始碼下載

#2. 

點選tabbar變換圖示

3. 

微信小程式demo:樂助

#

以上是詳解優化你的微信小程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板