12

樂推微信前端基于requirejs的工作模式

資源網(wǎng)址:

如何構(gòu)建本地工作環(huán)境

請(qǐng)先仔細(xì)閱讀上述 資源網(wǎng)址中的 樂推接口文檔 中的1,2,3部分,然后再向下閱讀。

樂推服務(wù)器上的工作目錄如下:
    ng.letwx.com
        |
        |----app                項(xiàng)目的工作目錄
        |----styles          
                 |----css       項(xiàng)目中可能會(huì)用到的插件所依賴的css文件
                 |----jsng      項(xiàng)目中可能會(huì)用到的插件 和 require.config.js文件

開發(fā)人員需要svn更新上述 SVN工作目錄 中的兩個(gè)svn目錄。

為了使得項(xiàng)目上線和本地開發(fā)盡可能一致,在項(xiàng)目提交時(shí)改動(dòng)的內(nèi)容最小化,且便于團(tuán)隊(duì)之間相互合作,
要保證 `app` 文件夾 和 `styles` 文件夾在同一級(jí)目錄下,并且保證你的本地服務(wù)器可以直接訪問到app所在的目錄,
因此你的本地工作路徑應(yīng)該是這樣的:http://192.168.1.2:8080/app/xxx/xxx.html

開發(fā)規(guī)則

開發(fā)人員需要遵守如下規(guī)則:

1.開發(fā)人員所做的項(xiàng)目放在 app 文件夾中,在其中創(chuàng)建項(xiàng)目文件夾,并在文件夾中創(chuàng)建自己的項(xiàng)目,
例如,test項(xiàng)目的形式如下:

    app
     |----test                  項(xiàng)目目錄
            |----index.html     項(xiàng)目頁(yè)面
            |----css            存放項(xiàng)目中css文件的文件夾
            |----images         存放項(xiàng)目中圖片文件的文件夾
            |----js             存放項(xiàng)目中js文件的文件夾
            |----resource       存放項(xiàng)目中其他文件的文件夾,例如音頻文件

2.頁(yè)面中引用require.min.js的方式:

<script data-main="js/index" defer="defer" async="async" src="http://ngcdn.letwx.com/styles/jsng/require.min.js"></script>

3.require.config.js的服務(wù)器路徑為:http://ng.letwx.com/styles/jsng/require.config.js

4.js中需要自動(dòng)判斷是服務(wù)器還是本地環(huán)境(為了減少代碼提交時(shí)的手動(dòng)改動(dòng)):

var isDebug = (function(){
    var hostnameIndex = window.location.hostname.split('.')[0];
    return (hostnameIndex == '192') || (hostnameIndex == '127') || (hostnameIndex == 'localhost') || (hostnameIndex == '');
}());

5.應(yīng)用需要驗(yàn)證token信息的,代碼如下:

require(['MHJ', 'auth'],function(MHJ,oAuth){
    check(MHJ,oAuth,init);
    function init(letwxid,apiopenid,apitoken){
        dosomething();
    }
});
function check(MHJ,oAuth,cb){
    var letwxid = MHJ.getUrlParam().letwxid;
    if (letwxid) {
        oAuth.cfg(letwxid, isDebug);
        oAuth.checkToken(function(apiopenid, apitoken) {
            cb && cb(letwxid, apiopenid, apitoken);
        }, function() {
            //alert('checktoken錯(cuò)誤!');
        });
    } else alert('應(yīng)用ID錯(cuò)誤');
}

6.頁(yè)面中需要有l(wèi)oading頁(yè)面,請(qǐng)引用‘loading’這個(gè)組件,可以這樣引用:

require(['loading','x','xxx'],function(M,x,xx){
    M.loading(1,1);
    dosomething();
    M.loadingHide();
});

使用loading時(shí),最好是將頁(yè)面中的其他元素隱藏,為此約定如下:

頁(yè)面中的所有內(nèi)容都要被id="content"的元素包含,且在html中就將content元素隱藏,
等到需要加載的元素或進(jìn)行的操作進(jìn)行完畢后,再將content元素顯示。

7.主邏輯部分:

主邏輯部分應(yīng)該在loading、checktoken之后進(jìn)行。

主邏輯部分的代碼應(yīng)該保證代碼的簡(jiǎn)潔性可讀性。

注意:在代碼中會(huì)涉及到服務(wù)器請(qǐng)求,你需要判斷服務(wù)器傳過來的數(shù)據(jù)中的error信息是否等于1002,如果等于1002就需要清除token信息(error等于1002代表token信息過期),具體代碼如下:

    var error = data.error - 0;
    if(error == 1002){
        alert('您的身份信息已過期,點(diǎn)擊確定重新加載頁(yè)面!');
        oAuth.clear();
        window.location.reload();
    }

8.在測(cè)試地址下,微信分享是無法正常調(diào)用的,因?yàn)樾枰谖⑿藕笈_(tái)設(shè)置相應(yīng)的域名才可以,所以建議微信分享的代碼在其他邏輯都完成之后再加入到頁(yè)面中去。

9.開發(fā)人員開發(fā)的任何一個(gè)項(xiàng)目的url上都需要帶有 letwxid 這個(gè)字段,形式如下:

http://ng.letwx.com/app/xxx/index.html?letwxid=12

目的是為了便于管理、修改相關(guān)應(yīng)用,以及依賴于 letwxid 會(huì)做一些其他的操作。開發(fā)人員開發(fā)時(shí),如果一個(gè)應(yīng)用中有多個(gè)頁(yè)面,應(yīng)該保證 letwxid 都是從首頁(yè)傳遞下去的,即只需要在首頁(yè)的url上加上 letwxid ,其他頁(yè)面的 letwxid 都是通過首頁(yè)傳遞下去的形式添加的。

letwxid 的查詢地址:http://wewiki.sinaapp.com/NG平臺(tái)letwxid對(duì)應(yīng)關(guān)系表

10.微信分享引用 wxshare 插件,在驗(yàn)證了身份信息后調(diào)用方法如下:

wxshare.initWx(shareInfo,gameid,apiopenid,apitoken); //可能會(huì)有變動(dòng)

在沒有驗(yàn)證身份信息的時(shí)候調(diào)用方法如下:

wxshare.initWxAuth(share, letwxid);

具體調(diào)用方式請(qǐng)參考下方的 wxshare.js的使用方法。

jsng文件夾中的插件說明

jsng文件夾中存放著項(xiàng)目中可能會(huì)用到的插件和 require.config.js文件,

下面是jsng中各插件的的作用和使用說明:

文件名稱 使用代號(hào) 說明 使用方法
require.config.js requirejs的配置文件,其中規(guī)定了各種插件
MHJ.js MHJ 包含了一些常用的基礎(chǔ)js方法 MHJ.js使用方法
auth.js oAuth 用于進(jìn)行樂推的oAuth認(rèn)證 auth.js的使用方法
ngapi.js ngapi 對(duì)服務(wù)器的請(qǐng)求(封裝了跨域請(qǐng)求和post請(qǐng)求) ngapi.js的使用方法
imgpreload.js imgpreload 用于進(jìn)行圖片預(yù)加載 imgpreload.js的使用方法
wxshare.js wxshare 對(duì)微信分享進(jìn)行了封裝 wxshare.js的使用方法
loading.js M 用于頁(yè)面進(jìn)行請(qǐng)求時(shí)的loading效果 loading.js的使用方法
css.min.js css 用于加載css文件 css.min.js的使用方法
hammer.min.js Hammer 一個(gè)觸摸插件 hammer.min.js的使用方法
idangerous.swiper.min.js Swiper swiper單頁(yè)滑動(dòng)插件 swiper.min.js的使用方法
idangerous.swiper.hashnav.js Swiper 依賴于swiper.min.js的添加hash的插件 hashnav.js的使用方法
idangerous.swiper_progress.js Swiper 依賴于swiper.min.js的progress插件 progress.js的使用方法
qrcode.js QRCode 二維碼生成插件 qrcode的使用方法
shake.js Shake 搖一搖插件 shake.js的使用方法
jquery.min.js $ jquery插件 jquery中文文檔
zepto.min.js $ zepto插件(jQuery的簡(jiǎn)化版) zepto中文文檔
wx wx 微信官方出的微信分享插件 使用方法
var config = (function(){
    var baseurl = 'http://lppz.letwx.com/app/eat/';
    var arr = window.location.hostname.split('.')[0];
    var isDebug = (arr=='192')||(arr=='127')||(arr=='localhost')||(arr=='');
    return {
        touch : 'touchstart',
        isDebug : isDebug,
        baseUrl : isDebug ? '../../../lppz/eat' : baseurl,
        urlConfig : isDebug ? 'js/libs/require.config.js':baseurl+'js/libs/require.config.js'
    }
}());
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # 樂推微信前端基于requirejs的工作模式 # 資源網(wǎng)址: *樂推官網(wǎng):[http://ng.letwx.c...
    逍遙很暈閱讀 519評(píng)論 0 1
  • 事件流 IE和Netscape開發(fā)團(tuán)隊(duì)提出了完全相反的兩種事件流的概念,事件冒泡流和事件捕獲流。 事件冒泡 事件由...
    exialym閱讀 1,046評(píng)論 0 9
  • 快速啟動(dòng) 是不是很渴望馬上開始?。窟@篇文檔將會(huì)很好的向你介紹Flask。假設(shè)你已經(jīng)安裝好了Flask。如果還沒有安...
    催眠_(dá)a363閱讀 779評(píng)論 0 1
  • 在新媒體時(shí)代,我們?nèi)绾翁嵘齻€(gè)人品牌的價(jià)值呢?復(fù)盤琦琦7號(hào)的課程,課程側(cè)重點(diǎn)幫助我們?nèi)ダ斫?,啟發(fā)我們思考如何用新媒...
    進(jìn)擊的carly閱讀 429評(píng)論 3 4
  • 今天組織學(xué)生球賽己2天了。表面上很平靜,可我的內(nèi)心被一句話震撼了。一位老師悄悄的說,這樣的活動(dòng)好多年不見,對(duì)于來此...
    飛鷹梅山閱讀 345評(píng)論 1 1

友情鏈接更多精彩內(nèi)容