axios实现ajax请求
vuex data中需要共用的属性
函数功能单一,尽可能抽象
遵循一个函数只做一件事的原则
无副作用的函数,是不依赖上下文,也不改变上下文的函数
fetchUserInfoAsync
这个函数大约会远程地获取用户信息;而且因为它有一个
Async
后缀,读者甚至能猜出这个函数会返回一个 Promise 对象
小程序
1.请避免多层级的交互方式,或者使用wx.redirectTo
2.使用 page 标签选择器,可以修改顶层节点的样式。
3.tabBar 是一个数组,只能配置最少2个、最多5个tab,tab 按数组的顺序排序。(底部导航栏)
4.可以设置各种网络请求的超时时间
1.0.0 大版本 次要版本 小版本
编写可读的代码,对于以代码谋生的程序员而言,是一件极为重要的事。从某种角度来说,代码最重要的功能是能够被阅读,其次才是能够被正确执行。一段无法正确执行的代码,也许会使项目延期几天,但它造成的危害只是暂时和轻微的,毕竟这种代码无法通过测试并影响最终的产品;但是,一段能够正确执行,但缺乏条理、难以阅读的代码,它造成的危害却是深远和广泛的:这种代码会提高产品后续迭代和维护的成本,影响产品的稳定,破坏团队的团结(雾),除非我们花费数倍于编写这段代码的时间和精力,来消除它对项目造成的负面影响。
bananaArr
表示数组。
bananaObj
表示对象。
var module1 = new Object({
_count : 0,
m1 : function (){
//...
},
m2 : function (){
//...
}
});
/**
* 函数功能简述
*
* 具体描述一些细节
*
* @param {string} address 地址
* @param {array} com 商品数组
* @param {string} pay_status 支付方式
* @returns void
*
* @date 2014-04-12
* @author QETHAN<qinbinyang@zuijiao.net>
*/
/**
* 函数功能简述
* @param {string} address 地址
* @returns void
*/
ctrl+shift+h 一键格式化代码
ctrl +j 检查代码
wx.ready(function () { // 1 判断当前版本是否支持指定 JS 接口,支持批量判断 document.querySelector('#checkJsApi').onclick = function () { wx.checkJsApi({ jsApiList: [ 'getNetworkType', 'previewImage' ], success: function (res) { alert(JSON.stringify(res)); } }); }; // 2. 分享接口 // 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口 $('#onMenuShare').on('click',share_friends); $(document).on('click','#onMenuShareAppMessage', share_friends); function share_friends(){ wx.onMenuShareAppMessage({ title: '烽鸟科技', desc: '烽鸟科技,环海游戏', link: href, imgUrl: 'imgs/10.png', trigger: function (res) { alert('用户点击发送给朋友'); }, success: function (res) { location.href = href + '?shared=true' }, cancel: function (res) { alert('已取消'); }, fail: function (res) { alert(JSON.stringify(res)); } }); // alert('已注册获取“发送给朋友”状态事件'); } }); getSignature(); var href = location.href; // TODO: 微信权限签名配置 function getSignature() { $.ajax({ type: 'GET', url: '/fengniaoyaf/user/getwechatapitoken', data: { url: location.href }, success:function(res){ console.log(res); if(res.code == 0){ $.extend(signature, res.data); wx.config(signature); } } }); } var signature = { appId: 'wxcf382f81d162ca79', jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', ] };
/ 每个用户一天弹一次
var time = new Date().getTime()+24*60*60*1000;
if( !localStorage['active_time'] || (time - parseInt(localStorage['time']))<=0 ){
$('.advert').show();
localStorage['active_time'] = new Date().getTime();
}
轮循实现数据实时更新,简单不高效
webSocket更高效
客户端,服务端
对效率的提升,对需求的满足,对痛点的解决等
箭头函数:export const addToCart = productId => (dispatch, getState)=>{
if(getState().products.byId[productId].inventory > 0){
dispatch(addToCartUnsafe(productId())
}
}
移动端网络环境复杂,微信小程序没有cookie的概念,wenxin.getUserInfo() 获取用户信息
loving sessionkey openid需要存储起来 有效期为15天或20天过期后重新请求微信服务器-会话检查流程
业务服务器去会话服务器检查,微信所有请求都要走https,信道服务,会话服务,加载即执行
配置模块路径,base_url path配置url,函数式定义模块,then的方式异步处理,promise, requirejs和打包 不支持AMD规范的处理。init初始化函数,模块名bootstrap,exports,导出,其他常用配置,map的配置,app_api,当前时间,jsonp服务,跨域通过下载js文件来动态的执行代码,datatype,缺少callback参数。使用text插件来加载html,css插件来加载样式文件,i18n插件,引入requirejs,打包需要引入配置文件,define, require,多模块打包,modus,export insert require,html,css插件如何打包,cssbuild,把css文件,打包js和css,用npm打包,npm init, npm run script start, 符合AMD规范,即使用define来申明模块,结合maven来自动打包,手动打包容易出错。下载node和npm,maven仓库里获取,下载安装node,
简单请求和非简单请求
options 预检命令
post 成功发出在预检命令通过后