12

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

资源网址:

如何构建本地工作环境

请先仔细阅读上述 资源网址中的 乐推接口文档 中的1,2,3部分,然后再向下阅读。

乐推服务器上的工作目录如下:
    ng.letwx.com
        |
        |----app                项目的工作目录
        |----styles          
                 |----css       项目中可能会用到的插件所依赖的css文件
                 |----jsng      项目中可能会用到的插件 和 require.config.js文件

开发人员需要svn更新上述 SVN工作目录 中的两个svn目录。

为了使得项目上线和本地开发尽可能一致,在项目提交时改动的内容最小化,且便于团队之间相互合作,
要保证 `app` 文件夹 和 `styles` 文件夹在同一级目录下,并且保证你的本地服务器可以直接访问到app所在的目录,
因此你的本地工作路径应该是这样的:http://192.168.1.2:8080/app/xxx/xxx.html

开发规则

开发人员需要遵守如下规则:

1.开发人员所做的项目放在 app 文件夹中,在其中创建项目文件夹,并在文件夹中创建自己的项目,
例如,test项目的形式如下:

    app
     |----test                  项目目录
            |----index.html     项目页面
            |----css            存放项目中css文件的文件夹
            |----images         存放项目中图片文件的文件夹
            |----js             存放项目中js文件的文件夹
            |----resource       存放项目中其他文件的文件夹,例如音频文件

2.页面中引用require.min.js的方式:

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

3.require.config.js的服务器路径为:http://ng.letwx.com/styles/jsng/require.config.js

4.js中需要自动判断是服务器还是本地环境(为了减少代码提交时的手动改动):

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

5.应用需要验证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错误!');
        });
    } else alert('应用ID错误');
}

6.页面中需要有loading页面,请引用‘loading’这个组件,可以这样引用:

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

使用loading时,最好是将页面中的其他元素隐藏,为此约定如下:

页面中的所有内容都要被id="content"的元素包含,且在html中就将content元素隐藏,
等到需要加载的元素或进行的操作进行完毕后,再将content元素显示。

7.主逻辑部分:

主逻辑部分应该在loadingchecktoken之后进行。

主逻辑部分的代码应该保证代码的简洁性可读性

注意:在代码中会涉及到服务器请求,你需要判断服务器传过来的数据中的error信息是否等于1002,如果等于1002就需要清除token信息(error等于1002代表token信息过期),具体代码如下:

    var error = data.error - 0;
    if(error == 1002){
        alert('您的身份信息已过期,点击确定重新加载页面!');
        oAuth.clear();
        window.location.reload();
    }

8.在测试地址下,微信分享是无法正常调用的,因为需要在微信后台设置相应的域名才可以,所以建议微信分享的代码在其他逻辑都完成之后再加入到页面中去。

9.开发人员开发的任何一个项目的url上都需要带有 letwxid 这个字段,形式如下:

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

目的是为了便于管理、修改相关应用,以及依赖于 letwxid 会做一些其他的操作。开发人员开发时,如果一个应用中有多个页面,应该保证 letwxid 都是从首页传递下去的,即只需要在首页的url上加上 letwxid ,其他页面的 letwxid 都是通过首页传递下去的形式添加的。

letwxid 的查询地址:http://wewiki.sinaapp.com/NG平台letwxid对应关系表

10.微信分享引用 wxshare 插件,在验证了身份信息后调用方法如下:

wxshare.initWx(shareInfo,gameid,apiopenid,apitoken); //可能会有变动

在没有验证身份信息的时候调用方法如下:

wxshare.initWxAuth(share, letwxid);

具体调用方式请参考下方的 wxshare.js的使用方法

jsng文件夹中的插件说明

jsng文件夹中存放着项目中可能会用到的插件和 require.config.js文件,

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

文件名称 使用代号 说明 使用方法
require.config.js requirejs的配置文件,其中规定了各种插件
MHJ.js MHJ 包含了一些常用的基础js方法 MHJ.js使用方法
auth.js oAuth 用于进行乐推的oAuth认证 auth.js的使用方法
ngapi.js ngapi 对服务器的请求(封装了跨域请求和post请求) ngapi.js的使用方法
imgpreload.js imgpreload 用于进行图片预加载 imgpreload.js的使用方法
wxshare.js wxshare 对微信分享进行了封装 wxshare.js的使用方法
loading.js M 用于页面进行请求时的loading效果 loading.js的使用方法
css.min.js css 用于加载css文件 css.min.js的使用方法
hammer.min.js Hammer 一个触摸插件 hammer.min.js的使用方法
idangerous.swiper.min.js Swiper swiper单页滑动插件 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的简化版) 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'
    }
}());
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • # 乐推微信前端基于requirejs的工作模式 # 资源网址: *乐推官网:[http://ng.letwx.c...
    逍遥很晕阅读 452评论 0 1
  • 事件流 IE和Netscape开发团队提出了完全相反的两种事件流的概念,事件冒泡流和事件捕获流。 事件冒泡 事件由...
    exialym阅读 924评论 0 9
  • 快速启动 是不是很渴望马上开始啊?这篇文档将会很好的向你介绍Flask。假设你已经安装好了Flask。如果还没有安...
    催眠_a363阅读 671评论 0 1
  • 在新媒体时代,我们如何提升个人品牌的价值呢?复盘琦琦7号的课程,课程侧重点帮助我们去理解,启发我们思考如何用新媒...
    进击的carly阅读 351评论 3 4
  • 今天组织学生球赛己2天了。表面上很平静,可我的内心被一句话震撼了。一位老师悄悄的说,这样的活动好多年不见,对于来此...
    飞鹰梅山阅读 305评论 1 1