微信小程序使用第三方库(第三方js)问题
生活随笔
收集整理的這篇文章主要介紹了
微信小程序使用第三方库(第三方js)问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
比如很多人會(huì)有這樣的問(wèn)題:
小程序怎樣引用第三方j(luò)s呢? 第三方j(luò)s是封裝好的類庫(kù) 想引用進(jìn)來(lái)實(shí)例化使用
這個(gè)帖子就綜合一下所有相關(guān)的知識(shí),做一個(gè)整合,以便大家能夠集中了了解;我覺(jué)得這個(gè)還是應(yīng)該讓大家了解的知識(shí);
提示:小程序不支持 window對(duì)象和document對(duì)象;
一:rpn.js:使用rpn.js實(shí)現(xiàn)eval函數(shù)功能
http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1513
二:?@guyoung?系列文章
使用Underscore.js: http://www.wxapp-union.com/portal.php?mod=view&aid=145
使用Immutable.js: http://www.wxapp-union.com/portal.php?mod=view&aid=155
使用UUID、Base64、Chance: http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1198
擴(kuò)展微信小程序框架功能(1)——Promise
ES6 對(duì) Promise 有了原生的支持,但微信開(kāi)發(fā)者工具更新版本(0.11.112200)后, 移除了開(kāi)發(fā)者工具對(duì) ES6 中Promise 特性原生的支持, 需要引入第三方的 Promise 庫(kù)。
擴(kuò)展微信小程序框架功能(2)——Generator
Generator函數(shù)是ES6提供的一種異步編程解決方案,語(yǔ)法行為與傳統(tǒng)函數(shù)完全不同。
擴(kuò)展微信小程序框架功能(3)——函數(shù)功能增強(qiáng)
Underscore.js 和 Lodash 是最常用的JavaScript庫(kù)。
擴(kuò)展微信小程序框架功能(4)——Immutable.js
Immutable.js 是 Facebook 開(kāi)發(fā)的不可變數(shù)據(jù)集合。Immutable
Data(不可變數(shù)據(jù))一旦創(chuàng)建就不能被修改。通過(guò)使用Immutable
Data,可以更容易的處理緩存、回退、數(shù)據(jù)變化檢測(cè)等問(wèn)題,應(yīng)用開(kāi)發(fā)更簡(jiǎn)單。
擴(kuò)展微信小程序框架功能(5)——Redux
?Redux 是 JavaScript 狀態(tài)容器,提供可預(yù)測(cè)化的狀態(tài)管理。
擴(kuò)展微信小程序框架功能(6)—日期時(shí)間
Moment.js是一個(gè)JavaScript的日期、時(shí)間處理工具類,其對(duì)于JavaScript的日期時(shí)間處理功能非常強(qiáng)悍和全面。可以用在瀏覽器環(huán)境中使用,也可以在Node.js中。
擴(kuò)展微信小程序框架功能(7)——正則表達(dá)式
XRegExp 是一個(gè)開(kāi)源的 JavaScript庫(kù),提供一個(gè)參數(shù)化、可擴(kuò)展的支持各種瀏覽器的正則表達(dá)式的實(shí)現(xiàn)庫(kù),支持附加語(yǔ)法、標(biāo)志以及方法。
擴(kuò)展微信小程序框架功能(8)——Xml處理
x2js是一個(gè) 實(shí)現(xiàn) XML 與 JavaScript 對(duì)象之間相互轉(zhuǎn)換的工具庫(kù)。
擴(kuò)展微信小程序框架功能(9)——加解密
node-uuid可以快速地生成符合規(guī)范 的 UUID。js-base64可以實(shí)現(xiàn)Base64編碼和解碼。crypto-js可以非常方便地在 JavaScript 進(jìn)行加解密。
擴(kuò)展微信小程序框架功能(10)——測(cè)試輔助
Chance是一個(gè) JavaScript 隨機(jī)數(shù)生成工具。Mock.js可以生成隨機(jī)數(shù)據(jù),攔截 Ajax 請(qǐng)求。
三:moment
http://www.wxapp-union.com/forum.php?mod=viewthread&tid=2268
四:相關(guān)討論
相關(guān)討論一: 微信小程序使用第三方庫(kù)問(wèn)題?
項(xiàng)目中需要使用base4,克隆了一個(gè)下來(lái)https://github.com/dankogai/j...
因?yàn)樾〕绦蚰壳安恢С种苯右?node_modules 所以我寫(xiě)的是路徑
我在app.js里根據(jù)路徑寫(xiě) require ( './node_module/js-base64/base64.js' ); 但是報(bào)錯(cuò) WAService. js : 3 ? TypeError : Cannot read property? 'Base64' ? of ?undefined答:@jayzou
因?yàn)樵创a里面并沒(méi)有exports Base64對(duì)象出來(lái),自己手動(dòng)exports就可以了 目前來(lái)說(shuō),我也沒(méi)找到好的方法,只能修改源碼強(qiáng)制導(dǎo)出 小程序的運(yùn)行時(shí)環(huán)境既不是Node.js也不是瀏覽器,也沒(méi)有暴露全局對(duì)象。。。
在Base64源碼的最開(kāi)始
global = {}; //在最開(kāi)始加上這個(gè)
var _Base64 = global.Base64;
在最后
// that's it!
if (global['Meteor']) {
? ?Base64 = global.Base64; // for normal export in Meteor.js
}
module.exports = global.Base64; //最后加上這個(gè)
這樣就能用了
import base64 from './node_module/js-base64/base64.js'
相關(guān)討論二: 如何引入第三方插件(網(wǎng)上的方法已經(jīng)試過(guò)) 引入第三方插件,網(wǎng)上有人說(shuō)需要進(jìn)行UMD打包,打包之后引入還是不行。有的說(shuō)需要暴露接口,對(duì)插件代碼進(jìn)行改造,加入了 module.exports = function ,然后通過(guò) require 引入,但是引入后還是報(bào)錯(cuò)。
個(gè)人引用的是strophe.js文件,求大神告知解決辦法
?
去看了一下Strophe的源碼。不知道你用的什么版本的。我看源碼最后是這樣的
function (Strophe, build, msg, iq, pres) {
? ? window.Strophe = Strophe;
? ? window.$build = build;
? ? window.$msg = msg;
? ? window.$iq = iq;
? ? window.$pres = pres;
};
小程序中宿主環(huán)境不是瀏覽器,所以沒(méi)有window。這樣寫(xiě)當(dāng)然是不行的。你可以嘗試修改為
function (Strophe, build, msg, iq, pres) {
? ? var global = {}
? ? global.Strophe = Strophe;
? ? global.$build = build;
? ? global.$msg = msg;
? ? global.$iq = iq;
? ? global.$pres = pres;
? ? module.exports = global
};
使用的時(shí)候:
var Strophe = require('./pathStrophe.js').Strophe
注:小程序和web編程是有區(qū)別的。我看了一下這個(gè)庫(kù)的源碼,使用了很多document, xhr之類的,這些是不支持的哦。可以查閱官方文檔。
Storophe源代碼
相關(guān)討論三:小程序模塊化只支持exports和module.exports嗎? CMD模式?
require("test.js"); a();//可以直接使用
小程序報(bào)錯(cuò) WAService.js:1 thirdScriptError setMaxDigits is not defined;at "pages/index/index"?
page onRequest function ReferenceError: a is not defined
test.js function a(){ .......
}
function b(){ .......
}
目前是在微信小程序使用第三方的test.js,在之前的H5項(xiàng)目是可以使用test.js的?目前就是不想去用exports和module.exports改變test.js。 需要加上從當(dāng)前頁(yè)面到該文件的完整路由 如:../../common/test.js -----當(dāng)前頁(yè)面位置的前一個(gè)前一個(gè)文件夾的common文件夾的test.js 文件 var test = require("test.js"); test.a();
test.js??中 module.exports = {a:a}
相關(guān)討論四:問(wèn)題:小程序如何導(dǎo)入第三方的JS工具庫(kù) 怎樣導(dǎo)入一個(gè)第三方的JS工具庫(kù) fontKit 使用require函數(shù)
var util = require('../../utils/util.js')
簡(jiǎn)易教程:
引用其他js里的方法: http://www.wxapp-union.com/portal.php?mod=view&aid=1339
這個(gè)帖子就綜合一下所有相關(guān)的知識(shí),做一個(gè)整合,以便大家能夠集中了了解;我覺(jué)得這個(gè)還是應(yīng)該讓大家了解的知識(shí);
提示:小程序不支持 window對(duì)象和document對(duì)象;
一:rpn.js:使用rpn.js實(shí)現(xiàn)eval函數(shù)功能
http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1513
二:?@guyoung?系列文章
使用Underscore.js: http://www.wxapp-union.com/portal.php?mod=view&aid=145
使用Immutable.js: http://www.wxapp-union.com/portal.php?mod=view&aid=155
使用UUID、Base64、Chance: http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1198
擴(kuò)展微信小程序框架功能(1)——Promise
ES6 對(duì) Promise 有了原生的支持,但微信開(kāi)發(fā)者工具更新版本(0.11.112200)后, 移除了開(kāi)發(fā)者工具對(duì) ES6 中Promise 特性原生的支持, 需要引入第三方的 Promise 庫(kù)。
擴(kuò)展微信小程序框架功能(2)——Generator
Generator函數(shù)是ES6提供的一種異步編程解決方案,語(yǔ)法行為與傳統(tǒng)函數(shù)完全不同。
擴(kuò)展微信小程序框架功能(3)——函數(shù)功能增強(qiáng)
Underscore.js 和 Lodash 是最常用的JavaScript庫(kù)。
擴(kuò)展微信小程序框架功能(4)——Immutable.js
Immutable.js 是 Facebook 開(kāi)發(fā)的不可變數(shù)據(jù)集合。Immutable
Data(不可變數(shù)據(jù))一旦創(chuàng)建就不能被修改。通過(guò)使用Immutable
Data,可以更容易的處理緩存、回退、數(shù)據(jù)變化檢測(cè)等問(wèn)題,應(yīng)用開(kāi)發(fā)更簡(jiǎn)單。
擴(kuò)展微信小程序框架功能(5)——Redux
?Redux 是 JavaScript 狀態(tài)容器,提供可預(yù)測(cè)化的狀態(tài)管理。
擴(kuò)展微信小程序框架功能(6)—日期時(shí)間
Moment.js是一個(gè)JavaScript的日期、時(shí)間處理工具類,其對(duì)于JavaScript的日期時(shí)間處理功能非常強(qiáng)悍和全面。可以用在瀏覽器環(huán)境中使用,也可以在Node.js中。
擴(kuò)展微信小程序框架功能(7)——正則表達(dá)式
XRegExp 是一個(gè)開(kāi)源的 JavaScript庫(kù),提供一個(gè)參數(shù)化、可擴(kuò)展的支持各種瀏覽器的正則表達(dá)式的實(shí)現(xiàn)庫(kù),支持附加語(yǔ)法、標(biāo)志以及方法。
擴(kuò)展微信小程序框架功能(8)——Xml處理
x2js是一個(gè) 實(shí)現(xiàn) XML 與 JavaScript 對(duì)象之間相互轉(zhuǎn)換的工具庫(kù)。
擴(kuò)展微信小程序框架功能(9)——加解密
node-uuid可以快速地生成符合規(guī)范 的 UUID。js-base64可以實(shí)現(xiàn)Base64編碼和解碼。crypto-js可以非常方便地在 JavaScript 進(jìn)行加解密。
擴(kuò)展微信小程序框架功能(10)——測(cè)試輔助
Chance是一個(gè) JavaScript 隨機(jī)數(shù)生成工具。Mock.js可以生成隨機(jī)數(shù)據(jù),攔截 Ajax 請(qǐng)求。
三:moment
http://www.wxapp-union.com/forum.php?mod=viewthread&tid=2268
四:相關(guān)討論
相關(guān)討論一: 微信小程序使用第三方庫(kù)問(wèn)題?
項(xiàng)目中需要使用base4,克隆了一個(gè)下來(lái)https://github.com/dankogai/j...
因?yàn)樾〕绦蚰壳安恢С种苯右?node_modules 所以我寫(xiě)的是路徑
我在app.js里根據(jù)路徑寫(xiě) require ( './node_module/js-base64/base64.js' ); 但是報(bào)錯(cuò) WAService. js : 3 ? TypeError : Cannot read property? 'Base64' ? of ?undefined答:@jayzou
因?yàn)樵创a里面并沒(méi)有exports Base64對(duì)象出來(lái),自己手動(dòng)exports就可以了 目前來(lái)說(shuō),我也沒(méi)找到好的方法,只能修改源碼強(qiáng)制導(dǎo)出 小程序的運(yùn)行時(shí)環(huán)境既不是Node.js也不是瀏覽器,也沒(méi)有暴露全局對(duì)象。。。
在Base64源碼的最開(kāi)始
global = {}; //在最開(kāi)始加上這個(gè)
var _Base64 = global.Base64;
在最后
// that's it!
if (global['Meteor']) {
? ?Base64 = global.Base64; // for normal export in Meteor.js
}
module.exports = global.Base64; //最后加上這個(gè)
這樣就能用了
import base64 from './node_module/js-base64/base64.js'
相關(guān)討論二: 如何引入第三方插件(網(wǎng)上的方法已經(jīng)試過(guò)) 引入第三方插件,網(wǎng)上有人說(shuō)需要進(jìn)行UMD打包,打包之后引入還是不行。有的說(shuō)需要暴露接口,對(duì)插件代碼進(jìn)行改造,加入了 module.exports = function ,然后通過(guò) require 引入,但是引入后還是報(bào)錯(cuò)。
個(gè)人引用的是strophe.js文件,求大神告知解決辦法
?
去看了一下Strophe的源碼。不知道你用的什么版本的。我看源碼最后是這樣的
function (Strophe, build, msg, iq, pres) {
? ? window.Strophe = Strophe;
? ? window.$build = build;
? ? window.$msg = msg;
? ? window.$iq = iq;
? ? window.$pres = pres;
};
小程序中宿主環(huán)境不是瀏覽器,所以沒(méi)有window。這樣寫(xiě)當(dāng)然是不行的。你可以嘗試修改為
function (Strophe, build, msg, iq, pres) {
? ? var global = {}
? ? global.Strophe = Strophe;
? ? global.$build = build;
? ? global.$msg = msg;
? ? global.$iq = iq;
? ? global.$pres = pres;
? ? module.exports = global
};
使用的時(shí)候:
var Strophe = require('./pathStrophe.js').Strophe
注:小程序和web編程是有區(qū)別的。我看了一下這個(gè)庫(kù)的源碼,使用了很多document, xhr之類的,這些是不支持的哦。可以查閱官方文檔。
Storophe源代碼
相關(guān)討論三:小程序模塊化只支持exports和module.exports嗎? CMD模式?
require("test.js"); a();//可以直接使用
小程序報(bào)錯(cuò) WAService.js:1 thirdScriptError setMaxDigits is not defined;at "pages/index/index"?
page onRequest function ReferenceError: a is not defined
test.js function a(){ .......
}
function b(){ .......
}
目前是在微信小程序使用第三方的test.js,在之前的H5項(xiàng)目是可以使用test.js的?目前就是不想去用exports和module.exports改變test.js。 需要加上從當(dāng)前頁(yè)面到該文件的完整路由 如:../../common/test.js -----當(dāng)前頁(yè)面位置的前一個(gè)前一個(gè)文件夾的common文件夾的test.js 文件 var test = require("test.js"); test.a();
test.js??中 module.exports = {a:a}
相關(guān)討論四:問(wèn)題:小程序如何導(dǎo)入第三方的JS工具庫(kù) 怎樣導(dǎo)入一個(gè)第三方的JS工具庫(kù) fontKit 使用require函數(shù)
var util = require('../../utils/util.js')
簡(jiǎn)易教程:
引用其他js里的方法: http://www.wxapp-union.com/portal.php?mod=view&aid=1339
總結(jié)
以上是生活随笔為你收集整理的微信小程序使用第三方库(第三方js)问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用Java编写Hive的UDF实现身份
- 下一篇: ECSHOP+wamp