小程序可以引入第三方的js庫嗎(小程序引用外部js)

  • 1、寫給Android開發者看的『微信小程序和Android開發的對比』
  • 2、如何為某個組件引入第三方JS庫或自己定義的JS庫
  • 3、小程序js中如何引入組件
  • 4、微信小程序 怎麼用第三方js庫 jquery

微信小程序近期可謂是動作頻出,僅最近新增的能力就有:

種種跡象表明,微信對小程序的期望值是很大,所以在它推出的幾個月效果沒到達預期的情況下,之前的很多『克制』也就逐漸變成『放肆』了 —— 不過不管小程序以後的發展到底怎樣,對我們開發者來發,多了解一些總是沒有壞處的。

他山之石,可以攻玉。

對於是技術人來說,多了解一些不同的技術、不同的開發模式、不同的架構思想,提高技術『廣度』,對於自己的成長是十分必要的。

所以,本文就是從一個 Android 開發者的角度,從項目工程方便切入,來分析一下『微信小程序』跟『Android App』開發上的一些異同。

『微信小程序』開發是一個相對較新的技術,希望通過本文,能讓你對它多一些了解。

因為內容是從Android開發的角度來談的,所以我假設你已經對 Android 開發比較熟悉了。並且對微信小程序的開發也比較感興趣,如果要是再能有些 javascript、css 的基礎的話那就更好了!

Android 開發我們已經比較熟悉——

作為對比,進行微信小程序開發所用的語言是這些——

wxml (WeiXin Markup Language) 基本約等於是 xml。微信之所以沒有直接使用 xml ,可能是為了以後擴展方便一些(野心很大)。

同理, wxss (WeiXin Style Sheets) 基本約等於是 css。也是微信擴展了一些功能,比如統一的尺寸單位 rpx 。

對於 Android 來說,對於頁面的描述基本上在 xml 中定義的,比如:

這是一個簡單的典型的示例,這個文件就是描述了兩部分內容:

some.wxss:

很明顯可以看出:wxml 是負責了 頁面結構 的展示;而 wxss 則負責了對 頁面樣式 的定義。

這種把結構和樣式分離的做法,其實是延續了網頁開發中的習慣(html + css)。

這樣做的好處起碼有兩個:

——看起來還是挺簡單的結構:

這三個文件用以描述小程序 app 相關的內容,他們的命名是固定這樣的,位置也固定是在根目錄下。

app.js 基本相當於 Android 中的 Application 類,文件中主要是有一個 App() 函數,來進行小程序的初始化操作。

app.json 的作用跟 Android 中的 AndroidMainifest.xml 文件很相似 —— 都是靜態化的配置文件。

app.wxss 定義全局的樣式 —— 其定義的樣式會作用於每個頁面。比如在 app.wxss 中加入:

就可以給所有的 text 控制項添加 5px 的 padding 。

當然,頁面本身的 xxPage.wxss 可以定義局部樣式來覆蓋全局樣式。

根目錄下的 utils 文件夾中有一個 util.js 文件,這個故名思意,是類似於 Java 中的一些工具類的存在。

utils 文件夾其實是一個非必須的結構,而它之所以出現在官方的 HelloWorld 工程中,是作為一個代表,表明了開發者在這裡是可以自定義新的文件夾和結構的。微信小程序作為一個使用 js 來開發的平台,是可以使用許多第三方的 js 庫的,對於這些第三方庫,以及其他的圖片資源等,都可以放到自定義的文件夾中。

pages 文件夾下包含兩個子目錄:index 和 logs ,兩個目錄的結構都是基本一樣的,都是包含四個相同主名稱的文件: xx.js、xx.wxml、xx.json、xx.wxss 這幾個文件。

這樣的一個典型結構表明它是一個小程序的頁面,四個文件的作用分別是:

在視圖的動態顯示上,微信小程序使用了 數據綁定(data-binding) 的方式。

如果你之前使用過 AngularJS 或者 Vue.js 等這些流行的 js 框架,那麼你肯定對 數據綁定 並不陌生。它是一種把一個控制項的屬性綁定到某個數據對象(view-model)的屬性的方法,這樣在改變數據對象屬性的時候,所對應的控制項屬性也就會相應變化 —— 在開發中,這種方式會使得對 View 層的顯示控制變得十分簡單、自然。

基於此,軟體工程的流行架構方式也在之前的 MVC 、 MVP 之外,又多了一個 —— MVVM(Model-View-ViewModel) 。

數據綁定 這種方式現在是如此的流行,以致於 Android 官方都出了一個 [Data Binding Library] ( ) 來支持數據綁定,但是由於成熟度等原因,目前還並沒有成為主流,Android 中的主流視圖顯示方式,還是通過開發者手動給每個控制項 set 數據。

—— 單從這一點上看,微信小程序的開發模式是比原生 Andorid 要『先進』一些的~ ?

小程序雖然是和前端 H5 頁面一樣是用 js 來開發,但是由於它最終運行的平台不再是瀏覽器,而是和 App 的表現幾無二致,所以頁面的生命周期也是和 App 差不多的。

一個小程序頁面的典型生命周期如下:

對比一下 Android 的 Activity 生命周期 :

微信小程序的頁面生命周期稍微簡單一些,但主要的思想跟 Activity 生命周期基本是一致的。

小程序的官方 IDE 是微信自己出品 微信Web開發者工具 ,它內置了一個小程序的運行環境,本質上是基於 Chrome 內核的一個瀏覽器框架,算是一個模擬器了。

——它雖然跟 Android 的各種高大上的模擬器相比起來略顯簡陋,但是基本該有的功能也基本都有(斷點、Log、網路監控等),而且由於是基於瀏覽器內核的頁面 DOM 解析,所以運行的速度也是像瀏覽器打開網頁一樣流暢,不會像 Android 模擬器那樣對系統資源要求很高。

另外,在綁定了開發者賬號之後,也可以用手機進行真機調試來調試小程序,所以也能在上線前用不同的機器來進行充分的兼容性測試。

總體來說,小程序作為一個新的形態,從開發的角度,它可以算作是一個【Native開發】和【H5開發】的結合,它吸收了原生開發和 H5 開發的優點。對於前端開發人員和原生開發人員來說,都可以在微信小程序中找到許多熟悉的東西。再細節的許多點這裡就不在贅述了,大家如果有興趣,可以自己上手去體驗一下。

綜上,自然也就有兩種人特別適合去做小程序的開發——H5的前端開發人員,以及之前的 Android/iOS 原生 App 開發者。

微信小程序的開發總體來說是很簡單的。

—— 對於前端開發者來說,了解一下原生 App 的一些相關思想即可,這些工作其實只要讀一遍小程序的開發者指南基本就差不多了。

—— 而對於原生開發者來說,只要稍微補一下 js 的相關知識(html/css),也基本就差不多可以上手去做了。如果你之前恰好已經有過一些 js 的使用經驗,那就不用多說了,花半個小時看一下小程序的文檔,直接上!

關於作者 :

第三方JS通常都有類似如下代碼

if (typeof define === ‘function’ define.amd) {

define(function() { return Hammer;

});

} else if (typeof module != ‘undefined’ module.exports) { module.exports = Hammer;

} else { window[exportName] = Hammer;

}

這樣的JS採用了UMD導出,直接import進來就可以了,如果沒有,就要自己寫模塊導出來封裝。

小程序js中引入組件如一下步驟:

1、準備好外部想要引入的外部文件,命名為util.js,並且填充固定的文件內容(一般是固定的庫)。

2、打開util.js,繼續填寫重要內容將要使用的方法用module.exports給暴露出來。

3、將外部js放在指定的文件夾utils里(utils規定存放js庫和數字格式化文件)。

4、在想要用到這個方法的js裡面require這個js,然後調用即可。

方法一:rpn.js:使用rpn.js實現eval函數功能

操作鏈接:網頁鏈接

方法二:

(1)使用Underscore.js:操作鏈接:網頁鏈接

(2)使用Immutable.js:操作鏈接:網頁鏈接

(3)使用UUID、Base64、Chance:操作鏈接:網頁鏈接

擴展微信小程序框架功能(1)——Promise

ES6 對 Promise 有了原生的支持,但微信開發者工具更新版本(0.11.112200)後, 移除了開發者工具對 ES6 中Promise 特性原生的支持, 需要引入第三方的 Promise 庫。

擴展微信小程序框架功能(2)——Generator

Generator函數是ES6提供的一種非同步編程解決方案,語法行為與傳統函數完全不同。

擴展微信小程序框架功能(3)——函數功能增強

Underscore.js 和 Lodash 是最常用的JavaScript庫。

擴展微信小程序框架功能(4)——Immutable.js

Immutable.js 是 Facebook 開發的不可變數據集合。Immutable

Data(不可變數據)一旦創建就不能被修改。通過使用Immutable

Data,可以更容易的處理緩存、回退、數據變化檢測等問題,應用開發更簡單。

擴展微信小程序框架功能(5)——Redux

Redux 是 JavaScript 狀態容器,提供可預測化的狀態管理。

擴展微信小程序框架功能(6)—日期時間

Moment.js是一個JavaScript的日期、時間處理工具類,其對於JavaScript的日期時間處理功能非常強悍和全面。可以用在瀏覽器環境中使用,也可以在Node.js中。

擴展微信小程序框架功能(7)——正則表達式

XRegExp 是一個開源的 JavaScript庫,提供一個參數化、可擴展的支持各種瀏覽器的正則表達式的實現庫,支持附加語法、標誌以及方法。

擴展微信小程序框架功能(8)——Xml處理

x2js是一個 實現 XML 與 JavaScript 對象之間相互轉換的工具庫。

擴展微信小程序框架功能(9)——加解密

node-uuid可以快速地生成符合規範 的 UUID。js-base64可以實現Base64編碼和解碼。crypto-js可以非常方便地在 JavaScript 進行加解密。

擴展微信小程序框架功能(10)——測試輔助

Chance是一個 JavaScript 隨機數生成工具。Mock.js可以生成隨機數據,攔截 Ajax 請求。

方法三:moment

操作鏈接:網頁鏈接

原創文章,作者:PTY7V,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127187.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PTY7V的頭像PTY7V
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • Python Web開發第三方庫

    本文將介紹Python Web開發中的第三方庫,包括但不限於Flask、Django、Bottle等,並討論它們的優缺點和應用場景。 一、Flask Flask是一款輕量級的Web…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟體。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29

發表回復

登錄後才能評論