微信小程序使用起來感受像寫h5同樣,對於新手估計會有比較多疑惑,若是撇去這些想法應該是很快就能上手的一套開發方案。css
可是它自身的限制也比較大,如不提供window對象會致使一些功能實現起來比較麻煩。我此次開發的小程序就遇到了,雖然比較快找到解決辦法(可能都是比較標準化的東西),但願以後不會有其餘大坑。html
須要其實比較簡單,就是兩頁文章列表及文章詳情頁,剛上手卻遇到下面的坑:git
沒法利用window對象解析xmles6
不支持HTML標籤的使用github
怎樣兼容Promise和generator異步json
剛開始一臉懵逼...後來趕忙去github看看各大牛例子及一些工具就解決了。小程序
因爲比較多的解析插件都是基於window.DOMParser
處理的,在小程序卻無用武之地。找到問題就好解決,我要的是DOMParser
而不是window找找應該有代替品,而後找到這個xmldom
引入代替掉DOMParser
就解決,而後把xml轉成json處理了。微信小程序
評論有問道如何改,這裏我已經把這個整合到這庫了。promise
如今比較成熟的是wxParse
這貨,的確大部分的html標籤均能解析渲染,可是我這邊程序錄入的富文本內容卻摻雜了些奇奇怪怪的標籤,解析時仍是會出錯,內容解析到一半就停了...既然它作不到忽略,咋整?那把那些垃圾都過濾掉吧!!!立刻用上js-xss
這個來處理問題,能控制過濾的標籤及標籤能擁有的屬性,方便得很。微信
const xss = require('../lib/js-xss/xss') const WxParse = require('../../lib/wxParse/wxParse.js') //把style及class添加到白名單。 Object.keys(xss.whiteList).forEach(name => xss.whiteList[name] = xss.whiteList[name].concat(['style', 'class'])) let content = xss('<div>HTML文本</div>', Object.assign(xss.whiteList, { /**在這添加你的標籤白名單**/ //div: ['style', 'css', 'title'] })) WxParse.wxParse('wxml', 'html', content, this, 15)
通過上面的代碼便能解析出合理的html好讓wxParse
好好渲染了。
你說引用js-xss
文件,對象是個方法都沒有,出錯了?恩,這裏因爲dist目錄下的xss.js
文件並非UMD包裹因此致使引用出錯,這裏得把整個js-xss
項目下載下來並使用browerify
從新打包。
browerify lib/index.js > dist/xss.js -s xss
Promise使用es6-promise
打個補丁或者用bluebird
//引入 const Promise = require('../../lib/es6-promise/es6-promise').Promise; // 或 const Promise = require('../../lib/bluebird/bluebird');
Generator須要regeneratorRuntime
,運行環境若是不加上就提示出錯。
var Promise = require('../../lib/es6-promise/es6-promise').Promise; var co = require('../../lib/co/we-index'); var regeneratorRuntime = require("../../lib/regenerator-runtime/runtime"); //獲取應用實例 var app = getApp(); Page({ onReady: function () { //console.log('onReady'); var that = this; var gen = function* () { var a = Promise.resolve(1); var b = Promise.resolve(2); var c = Promise.resolve(3); var res = yield [a, b, c]; console.log(res); // 輸出:[1, 2, 3] }; co(gen).then(function () { console.log('Generator函數執行完畢了'); // 輸出:Generator函數執行完畢了 }); } });
部分引用的庫須要稍微改動才能在微信小程序環境使用,想立刻上手可直接使用GyWxappCases 微信小程序案例下的庫