目錄
在開始之前,你需要準備
下載微信小程式開發者工具
用npm 指令開始一個微信小程式專案
開始安裝必要的依賴模組
目錄結構" >建立專案目錄結構
寫建置腳本
定義 npm 指令
首頁 微信小程式 小程式開發 教你提升微信小程式開發效率的步驟來詳解

教你提升微信小程式開發效率的步驟來詳解

May 04, 2017 am 10:23 AM

微信小程式的 API 實作需要兼顧方方面面,所以仍然使用 callback 寫法。

眾所周知,Callback-Hell(回調地獄)是傳統 JS 語法上的歷史問題。但畢竟稱手的工具是開發效率的源泉,因此筆者對目前版本的微信小程式 API 做了簡單的封裝-weapp。

同時,微信小程式框架本身專注於互動和 UI 的實現,並未提供內建的狀態管理。如果眾多的非同步操作都直接在 App 或 Page 中一一實現,相信開發起來會很困難,而且不容易測試。

因此,我又因此針對微信小程式實作了一個基於 Redux 方案的狀態管理模組,用以方便的在小程式中實作應用程式狀態管理 redux-weapp。

特別地,微信小程式建置(編譯)時不支援從 App scope 以外 require 文件,npm 在此就不好用了。

所以,我們需要即時 build 依賴到應用程式本地,在微信小程式中引用本地的 modules。

對於這個建構場景,我認為 webpack 算是最方便的方案。

在開始之前,你需要準備

  • 從官方文檔,了解微信小程式是什麼;

  • 了解Redux應用狀態管理方案,同時它也是Flux 架構的具體實作;

  • #了解JavaScript 打包工具webpack;

  • 了解ES6/7 代碼轉譯(transcompile)工具Babel。原理是藉助語法分析工具,將程式碼解析成抽象語法樹後「重寫」成最終的程式碼;

  • 類似 Jest、Mocha 等 JavaScript 測試工具,可以根據需要選擇。

安裝工具與依賴模組

下載微信小程式開發者工具

開發者工具是用NW.js模擬的環境,在微信中,則是JavascriptCore 環境。

不過不用擔心, 只是兩個不同的 VM,本質是一樣的。

NW.js 可能存在一些小 bug,寫程式碼的時候要注意一下就好。

用npm 指令開始一個微信小程式專案

mkdir myappcd myapp
npm init
登入後複製

開始安裝必要的依賴模組

由於除了小程式執行時所需的模組,還有建置所需的模組。

看起來會比較多,不過不用擔心,大多數都是聲明性的,不需要你直接呼叫。

為了方便經驗少些的同學理解,我將這些依賴分步安裝。

首先是程式碼轉譯工具Babel:

npm install --save-dev babel-cli babel-core babel-loader babel-plugin-add-module-exports babel-polyfill babel-preset-es2015 babel-preset-stage-0
登入後複製

有了上面這些模組,就可以在建置時,將ES6/7 的程式碼轉譯為ES5 的程式碼了(其實解釋器都只認ES5)。

接下來,我們安裝打包工具 webpack:

npm install webpack --save-dev
登入後複製

我們只需要對程式碼進行打包,不需要 dev server 和 hot module replace 功能。

因此,我們只需要安裝 webpack module 本身即可,無需安裝其他擴充功能和外掛程式。

接下來,我們來安裝Redux:

npm install redux redux-thunk --save-dev
登入後複製

要注意的是,由於在實際應用中,我們經常需要非同步呼叫API 伺服器的介面,因此我們還需要 redux-thunk 這個模組,來處理非同步行為

然後安裝開發小程式的輔助模組:

npm install xixilive/weapp xixilive/redux-weapp --save-dev
登入後複製

其中,weapp 模組是對微信小程式API 的wrapper,提供了更容易使用的API,redux-weapp 是基於Redux 對微信小程式進行狀態管理。

建立專案目錄結構

myapp
 |- es6                # 源代码
   |- myapp.js         # 在app.js文件中require此文件
 |- lib                # 存放编译之后的js文件
 |- pages              # 小程序页面定义
   |- projects
     |- projects.js
     |- projects.json
     |- projects.wxml
     |- projects.wxss
   ...
 |- app.js             # 小程序入口文件
 |- app.json
 |- app.wxss
 |- webpack.config.js  # webpack配置文件
登入後複製

寫建置腳本

#首先得寫 webpack.config.js, 這個是必須的。

由於這個建置是為了本地化微信小程式的依賴,因此我們只處理 JS 檔案。若需要打包其他資源,請讀者自行研究。

而且,值得注意的是,微信小程式包有 1 MB 的上限。

// webpack.config.jsvar path = require('path'), webpack = require('webpack')var jsLoader = {
  test: /\.js$/, // 你也可以用.es6做文件扩展名, 然后在这里定义相应的pattern
  loader: 'babel',
  query: {    // 代码转译预设, 并不包含ES新特性的polyfill, polyfill需要在具体代码中显示require
    presets: ["es2015", "stage-0"]
  },  // 指定转译es6目录下的代码
  include: path.join(dirname, 'es6'),  // 指定不转译node_modules下的代码
  exclude: path.join(dirname, 'node_modules')
}module.exports = {  // sourcemap 选项, 建议开发时包含sourcemap, production版本时去掉(节能减排)
  devtool: null,  // 指定es6目录为context目录, 这样在下面的entry, output部分就可以少些几个`../`了
  context: path.join(dirname, 'es6'),  // 定义要打包的文件  // 比如: `{entry: {out: ['./x', './y','./z']}}` 的意思是: 将x,y,z等这些文件打包成一个文件,取名为: out  // 具体请参看webpack文档
  entry: {
    myapp: './myapp'
  },

  output: {    // 将打包后的文件输出到lib目录
    path: path.join(dirname, 'lib'),    // 将打包后的文件命名为 myapp, `[name]`可以理解为模板变量
    filename: '[name].js',    // module规范为 `umd`, 兼容commonjs和amd, 具体请参看webpack文档
    libraryTarget: 'umd'
  },  module: {
    loaders: [jsLoader]
  },

  resolve: {
    extensions: ['', '.js'],    // 将es6目录指定为加载目录, 这样在require/import时就会自动在这个目录下resolve文件(可以省去不少../)
    modulesDirectories: ['es6', 'node_modules']
  },

  plugins: [    new webpack.NoErrorsPlugin(),    // 通常会需要区分dev和production, 建议定义这个变量    // 编译后会在global中定义`process.env`这个Object    new webpack.DefinePlugin({      'process.env': {        'NODE_ENV': JSON.stringify('development')
      }
    })
  ]
}
登入後複製

定義 npm 指令

首先是程式碼測試指令 test

由於我喜歡用 Jest,所以這裡也用 Jest 做範例。

// package.json"scripts": {  "pretest": "eslint es6", //推荐进行静态检查  "test": "jest",
  ...
},
...,// jest允许在package.json中定义配置"jest": {  "automock": false,  "bail": true,  "transform": {    ".js": "/node_modules/babel-jest" //用babel转译
  },  "testPathDirs": [    "/tests/"
  ],  "testRegex": ".test.js$",  "unmockedModulePathPatterns": [    "/node_modules/"
  ],  "testPathIgnorePatterns": [    "/node_modules/"
  ]
}
登入後複製

接下來,就是令人興奮的 build 指令。成敗在此一舉

以上是教你提升微信小程式開發效率的步驟來詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

歐易交易所app國內下載教程 歐易交易所app國內下載教程 Mar 21, 2025 pm 05:42 PM

本文提供國內安全下載歐易OKX App的詳細指南。由於國內應用商店限制,建議用戶通過歐易OKX官方網站下載App,或使用官網提供的二維碼掃描下載。下載過程中,務必核實官網地址,檢查應用權限,安裝後進行安全掃描,並啟用雙重驗證。 使用過程中,請遵守當地法律法規,使用安全網絡環境,保護賬戶安全,警惕詐騙,理性投資。 本文僅供參考,不構成投資建議,數字資產交易風險自負。

H5和小程序與APP的區別 H5和小程序與APP的區別 Apr 06, 2025 am 10:42 AM

H5、小程序和APP的主要區別在於:技術架構:H5基於網頁技術,小程序和APP為獨立應用程序。體驗和功能:H5輕便易用,功能受限;小程序輕量級,交互性好;APP功能強大,體驗流暢。兼容性:H5跨平台兼容,小程序和APP受平台限制。開發成本:H5開發成本低,小程序中等,APP最高。適用場景:H5適合信息展示,小程序適合輕量化應用,APP適合複雜功能應用。

H5頁面製作和微信小程序有什麼不同 H5頁面製作和微信小程序有什麼不同 Apr 05, 2025 pm 11:51 PM

H5更靈活,可定制性強,但需要嫻熟的技術;小程序上手快,維護便捷,但受限於微信框架。

公司安全軟件導致應用無法運行?如何排查和解決? 公司安全軟件導致應用無法運行?如何排查和解決? Apr 19, 2025 pm 04:51 PM

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

公司安全軟件與應用衝突怎麼辦? HUES安全軟件導致常用軟件無法打開如何排查? 公司安全軟件與應用衝突怎麼辦? HUES安全軟件導致常用軟件無法打開如何排查? Apr 01, 2025 pm 10:48 PM

公司安全軟件與應用兼容性問題及排查方法許多企業為了保障內網安全,會安裝安全軟件。然而,安全軟件有時...

企業微信中的JS資源緩存問題如何解決? 企業微信中的JS資源緩存問題如何解決? Apr 04, 2025 pm 05:06 PM

企業微信的JS資源緩存問題探討在進行項目功能升級時,常常會遇到部分用戶未能成功升級的情況,尤其是在企�...

H5和小程序如何選擇 H5和小程序如何選擇 Apr 06, 2025 am 10:51 AM

H5和小程序的選擇取決於需求。對於跨平台、快速開發和高擴展性的應用,選擇H5;對於原生體驗、豐富功能和平台依附性的應用,選擇小程序。

幣安虛擬幣怎麼買進賣出詳細教程 幣安虛擬幣怎麼買進賣出詳細教程 Mar 18, 2025 pm 01:36 PM

本文提供2025年更新的幣安虛擬貨幣買賣簡明指南,詳細講解了在幣安平台上進行虛擬貨幣交易的操作步驟。指南涵蓋了法幣購買USDT、幣幣交易購買其他幣種(如BTC)以及賣出操作,包括市價交易和限價交易兩種方式。 此外,指南還特別提示了法幣交易的支付安全和網絡選擇等關鍵風險,幫助用戶安全、高效地進行幣安交易。 通過本文,您可以快速掌握在幣安平台上買賣虛擬貨幣的技巧,降低交易風險。

See all articles