61阅读

微信小程序开发工具-苹果IOS开发工具“中毒” 微信也中招了

发布时间:2017-08-19 所属栏目:相关技巧

一 : 苹果IOS开发工具“中毒” 微信也中招了



没有“绝对”安全

事实上,这已经不是苹果产品第一次涉及“安全”事件,iOS此前曾被曝涉及多个“秘密后门”。

去年9月1日,众多美国大腕女星像詹妮弗·劳伦斯、凯特·厄本、爱莉安娜·格兰德以及维多利亚·嘉丝蒂等人的裸照接连曝光,有消息称原因是有黑客攻击了多个iCloud账号所致。目前仍不清楚黑客如何侵入iCloud存储服务获取劳伦斯、厄本以及其他名人的不雅照片,但iCloud的安全性遭到了舆论的广泛质疑。而就在同年8月中旬,苹果还针对中国用户的数据从国外转存至中国电信云存储发表声明称,云端服务商要加强数据中心的网络安全防护,及时修补漏洞,防止黑客入侵和撞库等盗号攻击。

“从收益来看,安全投入并不直接产生效益。一般手机厂商说要建数据中心,没有上千万很难达成,比如500台服务器,1台5万,就是2500万的成本,还有这个数据中心带来的带宽费用以及流量等都是要考虑的因素。”酷派负责安全业务的相关负责人对记者表示。

“事实上,在大数据时代,保护自己的隐私并不容易,黑客只要愿意,可能会攻破任何他想攻破的东西,只是时间问题。”上述酷派负责人认为,数据到云端的传输过程,密码传到服务器的过程以及云端存储的过程都有可能遭受到黑客的入侵。

陆羽对记者表示,建议用户立即修改AppleID密码,以将损失的可能性降低。

附360网络攻防实验室确认的应用及具体版本号如下:

开眼1.8.0

联通手机营业厅3.2

妈妈圈5.3.0

南方航空2.6.5.0730–2.6.5

南京银行3.6–3.0.4

逆轉三國5.80.5–5.80

穷游6.4.1

穷游6.4.1–6.4

三国名将4.5.0.1–4.5.1

天使房贷5.3.0.2–5.3.0

天涯社区5.1.0

铁路123062.1

同花顺9.60.01

同花顺9.26.03

图钉7.7.2

网易公开课4.2.8

网易云音乐2.8.3

网易云音乐2.8.1

微信6.2.5

我叫MT4.6.2

我叫MT21.8.5

下厨房4.3.2

下厨房4.3.1

造梦西游OL4.6.0

诊疗助手7.2.3

自由之战1.0.9

卷皮3.3.1

简书2.9.1

股票雷达5.6.1–5.6

高德地图7.3.8.1040–7.3.8

高德地图7.3.8.2037

夫妻床头话2.0.1

动卡空间3.4.4.1–3.4.4

电话归属地助手3.6.3

滴滴打车3.9.7.1–3.9.7

滴滴出行4.0.0

炒股公开课3.10.02–3.10.01

百度音乐5.2.7.3–5.2.7

YaYa药师1.1.1

YaYa6.4.3–6.4

WO+创富2.0.6–2.0.4

WallpaperFlip1.8

VGO视信1.6.0

UME电影票2.9.4

UA电影票2.9.2

Theme2.4–2.4

Theme2.4.2–2.4

Phone+3.3.6

Perfect3654.6.16

OPlayerLite21051–2105

MTP管理微学1.0.0–2.0.1

MailAttach2.3.2–2.3

JewelsQuest23.39

HowOldDoILook?HowOldAmI?-FaceAgeCamera3.6.7

H3C易查通2.3–2.2

DigitGod2.0.4–2.0

CuteCUT1.7

CarrotFantasy1.7.0.1–1.7.0

CamCard6.3.2.9095–6.3.2

Albums2.9.2

AA记账1.8.7–1.8

51卡保险箱5.0.1

2345浏览器4.0.1

二 : 微信小程序下载工具及调试详解

 昨天晚些时候微信团队发布了微信小程序开发者工具、微信小程序开发文档和微信小程序设计指南,全新的开发者工具,集成了开发调试、代码编辑及程序发布等功能,帮助开发者简单和高效地开发微信小程序。以下是官方文档,内含小程序开发者工具下载地址及调试指南。

下载地址:开发者工具0.9.092300版
windows 64版;windows 32版;mac版

为了帮助开发者简单和高效地开发微信小程序,我们推出了全新的开发者工具,集成了开发调试、代码编辑及程序发布等功能。

devtools

扫码登录

启动工具时,开发者需要使用已在后台绑定成功的微信号扫描二维码登录,后续所有的操作都会基于这个微信帐号

程序调试主要有三大功能区:模拟器、调试工具和小程序操作区

模拟器

模拟器模拟微信小程序在客户端真实的逻辑表现,对于绝大部分的 API 均能够在模拟器上呈现出正确的状态。

emulat

调试工具

调试工具分为 6 大功能模块:Wxml、Console、Sources、Network、Appdata、Storage以及

      3Wxml Pannel

Wxml Pannel 用于帮助开发者开发 Wxml 转化后的界面。在这里可以看到真实的页面结构以及结构对应的 wxss 属性,同时可以通过修改对应 wxss 属性,在模拟器中实时看到修改的情况。通过调试模块左上角的选择器,还可以快速找到页面中组件对应的 wxml 代码。

wxml
Sources Pannel

Sources Pannel 用于显示当前项目的脚本文件,同浏览器开发不同,微信小程序框架会对脚本文件进行编译的工作,所以在 Sources Pannel 中开发者看到的文件是经过处理之后的脚本文件,开发者的代码都会被包裹在 define 函数中,并且对于 Page 代码,在尾部会有 require 的主动调用。

sources
Network Pannel

Netwrok Pannle 用于观察和显示 request 和 socket 的请求情况

network
Appdata Pannel

Appdata Pannel 用于显示当前项目当前时刻 appdata 具体数据,实时地反馈项目数据情况,可以在此处编辑数据,并及时地反馈到界面上。

appdata
Storage Pannel

Storage Pannel 用于显示当前项目的使用 wx.setStorage 或者 wx.setStorageSync 后的数据存储情况。

storage
Console Pannel

Console Pannel 有两大功能:

    开发者可以在此输入和调试代码

    console

    小程序的错误输出,会显示在此处

    4小程序操作区

小程序操作区帮助开发者模拟一些客户端的环境操作。例如当用户从小程序中回到聊天窗口,会触发一个小程序被设置为后台的api。

      5当小程序使用到多窗口的时候,可以在顶部操作区进行页面切换,需要注意的是这个操作只是为了方便开发者才存在的,在真实的微信客户端中是不会有的。

编辑区可以对当前项目进行代码书写工作,同时可以对文件进行基本的添加、删除以及重命名。

工具目前提供了4种文件的编辑:wxml wxss js json
自动补全

同大部分编辑器一样,我们提供了完善的自动补全

常用快捷键

格式调整

    Ctrl+S:保存文件
    Ctrl+[, Ctrl+]:代码行缩进
    Ctrl+Shift+[, Ctrl+Shift+]:折叠打开代码块
    Ctrl+C Ctrl+V:复制粘贴,如果没有选中任何文字则复制粘贴一行
    Shift+Alt+F:代码格式化
    Alt+Up,Alt+Down:上下移动一行
    Shift+Alt+Up,Shift+Alt+Down:向上向下复制一行
    Ctrl+Shift+Enter:在当前行上方插入一行

光标相关

    Ctrl+End:移动到文件结尾
    Ctrl+Home:移动到文件开头
    Ctrl+i:选中当前行
    Shift+End:选择从光标到行尾
    Shift+Home:选择从行首到光标处
    Ctrl+Shift+L:选中所有匹配
    Ctrl+D:选中匹配
    Ctrl+U:光标回退

项目目录显示的是当前项目的一些细节情况,包括图标、appid、目录信息等等。

​点击预览功能,工具会自动编译和构建代码,并生成代码包上传到微信服务器,成功后将会显示一个二维码,开发者用新版微信扫描二维码即可在手机上看到相应项目的真实表现

需要注意的是,内测阶段,代码上传 功能仅管理员微信号可操作。

以上就是微信小程序下载工具调试的资料整理,后续补充相关资料,谢谢大家对本站的支持!

三 : 微信小程序版的知乎日报开发实例

先看看效果图

开发环境准备

小程序 出来第二天就被破解,第三天微信就把开发工具开发下载了, 现在只需要下载 微信开发者工具 就可以使用了,

创建项目的时候,要选择无 appid, 这样就不会有 appid 的验证了。

目录结构

     1、app.js 注册app逻辑, app.wxss 全局样式文件 app.json 配置信息

     2、pages 存放页面文件

     3、utils 工具类代码

     4、images 图片资源文件

小程序中每一个页面都会有三个文件 .wxml .wxss .js ,对应着结构、样式、和逻辑,相当于网页中的 html css 和 js 的关系。

开发第一个页面

代码来自新建项目

 <!--index.wxml--> <view class="container">  <view bindtap="bindViewTap" class="userinfo">  <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>  <text class="userinfo-nickname">{{userInfo.nickName}}</text>  </view>  <view class="usermotto">  <text class="user-motto">{{motto}}</text>  </view> </view>

 /**index.wxss**/ .userinfo {  display: flex;  flex-direction: column;  align-items: center; } .userinfo-avatar {  width: 128rpx;  height: 128rpx;  margin: 20rpx;  border-radius: 50%; } .userinfo-nickname {  color: #aaa; } .usermotto {  margin-top: 200px; }

 //index.js //获取应用实例 var app = getApp() Page({  data: {  motto: 'Hello World',  userInfo: {}  },  //事件处理函数  bindViewTap: function() {  wx.navigateTo({  url: '../logs/logs'  })  },  onLoad: function () {  console.log('onLoad')  var that = this  //调用应用实例的方法获取全局数据  app.getUserInfo(function(userInfo){  //更新数据  that.setData({  userInfo:userInfo  })  })  } })

新建的项目中,index 下都会看到这些代码,接下来分别介绍 wxml wxss js

wxml

这个是页面结构的描述文件, 主要用于以下内容

     1、用标签形式指定组件使用 <view></view>

     2、使用 wx:for wx:if 等指令完成一些模板上的逻辑处理

     3、使用 bind* 绑定事件

wxss

样式文件,和 css 语法基本一致,不过支持的选择器语法有限 看这里 , 可以使用 flexbox 完成布局。

内部也可以使用 import 命令引入外部样式文件

 @import "common.wxss"; .pd {  padding-left: 5px; }

js

页面逻辑控制, 遵循 commonJs 规范

 // util.js function formatTime(date) {  // .... } function formatDate(date, split) {  // ... } module.exports = {  formatTime: formatTime,  formatDate: formatDate } var utils = require('../../utils/util.js')

这里的js 并不是在 浏览器环境下运行, 所以 window.* 这一类的代码都会报错, dom 操作也是不被允许的,官方目前好像是不能支持其他的 js 库运行,全封闭式,这个以后应该会逐渐完善。

页面上使用 Page 方法来注册一个页面

 Page({  data:{  // text:"这是一个页面"  },  onLoad:function(options){  // 页面初始化 options为页面跳转所带来的参数  },  onReady:function(){  // 页面渲染完成  },  onShow:function(){  // 页面显示  },  onHide:function(){  // 页面隐藏  },  onUnload:function(){  // 页面关闭  } })

当我们需要改变 绑定的数据时,必须调用 setData 方法修改,才会触发页面更新,像这样:

 Page({  data: {  text: '这是一个页面'  },  onLoad: function() {  this.setData({  text: 'this is page'  })  } })

条件渲染和列表渲染

以下内容来自微信官方文档。

小程序使用 wx:if="" 完成条件渲染,类似于 vue 的 v-if

 <view wx:if="{{condition}}"> True </view>

也可以用 wx:elifwx:else 来添加一个 else 块:

 <view wx:if="{{length > 5}}"> 1 </view> <view wx:elif="{{length > 2}}"> 2 </view> <view wx:else> 3 </view>

wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。

内置变量 index (数组遍历的下标), item (数组遍历的每一项)

 <view wx:for="{{items}}">  {{index}}: {{item.message}} </view> Page({  items: [{  message: 'foo',  },{  message: 'bar'  }] })

使用wx:for-item可以指定数组当前元素的变量名

使用wx:for-index可以指定数组当前下标的变量名:

 <view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">  {{idx}}: {{itemName.message}} </view>

事件绑定

wxml 只是用 bind[eventName]="handler" 语法绑定事件

 <view bindtap="bindViewTap" class="userinfo"><text>tap</text></view> Page({  bindViewTap: function(e) {  console.log(e.taget)  } })

通过 data-*e.target.dateset 传递参数

 <view bindtap="bindViewTap" data-test-msg="啦啦啦啦啦啦" class="userinfo"><text>tap</text></view> Page({  bindViewTap: function(e) {  // 会自动转成驼峰式命名  console.log(e.taget.dataset.testMsg) // 啦啦啦啦啦啦  } })

目前踩过的坑

事件绑定中 e.target.dataset

当在父组件绑定事件和参数,点击时又子组件冒泡事件到父组件,这个时候 e.target.dataset 为空

 <view bindtap="bindViewTap" data-test-msg="啦啦啦啦啦啦" class="userinfo">  <view><text>tap</text></view> </view> Page({  bindViewTap: function(e) {  console.log(e.taget.dataset.testMsg) // undefined  } })

在线图片加载不稳定

在知乎日报这个项目上有大量图片需要从网上下载,这里 image 组件额显示显得极其不稳定,有很多的图片都显示不出来.

总结

微信小程序现在还在内测阶段,有很多的问题需要完善,不过对于开发速度和体验来说还是不错的,期待正式发布的那一天。以上就是本文的全部内容了,希望对大家学习使用微信小程序能有所帮助。

四 : 微信小程序应用号开发教程详解

微信应用号(微信公众平台小程序,「应用号」的新称呼)终于来了!开源中国社区的博卡君通宵吐血赶稿写出的微信公众平台应用号开发教程!大家赶紧来学习一下吧

微信公众平台小程序目前还处于内测阶段,微信只邀请了部分企业参与封测。想必大家都关心应用号的最终形态到底是什么样子?怎样将一个「服务号」改造成为「小程序」?

我们暂时以一款简单的第三方工具的实例,来演示一下开发过程吧。(公司的项目保密还不能分享代码和截图。博卡君是边加班边偷偷给大家写教程。感谢「名片盒」团队提供他们的服务号来动这个手术,所以博卡君的教程就用「名片盒」的公众号滚动更新发布吧😄)

OK,为了让大家尽快看到这份教程,博卡君注定要熬夜了!今晚开始更新,希望明天一早就能发布第一篇教程!记录开始!看看几天能完成变身吧!

                                                                     序言

开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南

本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果。这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志。

1. 获取微信小程序的 AppID

首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并为你创建好一个帐号。注意不可直接使用服务号或订阅号的 AppID。 利用提供的帐号,登录 https://mp.weixin.qq.com ,就可以在网站的「设置」-「开发者设置」中,查看到微信小程序的 AppID 了。

注意:如果我们不是用注册时绑定的管理员微信号,在手机上体验该小程序。那么我们还需要操作「绑定开发者」。即在「用户身份 - 开发者」模块,绑定上需要体验该小程序的微信号。本教程默认注册帐号、体验都是使用管理员微信号。

2. 创建项目

我们需要通过开发者工具,来完成小程序创建和代码编辑。

开发者工具安装完成后,打开并使用微信扫码登录。选择创建「项目」,填入上文获取到的 AppID,设置一个本地项目的名称(非小程序名称),比如「我的第一个项目」,并选择一个本地的文件夹作为代码存储的目录,点击「新建项目」就可以了。

为方便初学者了解微信小程序的基本代码结构,在创建过程中,如果选择的本地文件夹是个空文件夹,开发者工具会提示,是否需要创建一个 quick start 项目。选择「是」,开发者工具会帮助我们在开发目录里生成一个简单的 demo。

项目创建成功后,我们就可以点击该项目,进入并看到完整的开发者工具界面,点击左侧导航,在「编辑」里可以查看和编辑我们的代码,在「调试」里可以测试代码并模拟小程序在微信客户端效果,在「项目」里可以发送到手机里预览实际效果。

3. 编写代码

点击开发者工具左侧导航的「编辑」,我们可以看到这个项目,已经初始化并包含了一些简单的代码文件。最关键也是必不可少的,是 app.js、app.json、app.wxss 这三个。其中,.js 后缀的是脚本文件,.json 后缀的文件是配置文件,.wxss 后缀的是样式表文件。微信小程序会读取这些文件,并生成小程序实例。

下面我们简单了解这三个文件的功能,方便修改以及从头开发自己的微信小程序。

app.js 是小程序的脚本代码。我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。调用 MINA 提供的丰富的 API,如本例的同步存储及同步读取本地数据。

 //app.js App({  onLaunch: function () {  // 调用 API 从本地缓存中获取数据  var logs = wx.getStorageSync('logs') || []  logs.unshift(Date.now())  wx.setStorageSync('logs', logs)  },  getUserInfo:function(cb){  var that = this;  if(this.globalData.userInfo){  typeof cb == "function" && cb(this.globalData.userInfo)  }else{  // 调用登录接口  wx.login({  success: function () {  wx.getUserInfo({  success: function (res) {  that.globalData.userInfo = res.userInfo;  typeof cb == "function" && cb(that.globalData.userInfo)  }  })  }  });  }  },  globalData:{  userInfo:null  } })

app.json 是对整个小程序的全局配置。我们可以在这个文件中配置小程序是由哪些页面组成,配置小程序的窗口  背景色,配置导航条样式,配置默认标题。注意该文件不可添加任何注释。

 /**app.json*/ {  "pages":[  "pages/index/index",  "pages/logs/logs"  ],  "window":{  "backgroundTextStyle":"light",  "navigationBarBackgroundColor": "#fff",  "navigationBarTitleText": "WeChat",  "navigationBarTextStyle":"black"  } }

app.wxss 是整个小程序的公共样式表。我们可以在页面组件的 class 属性上直接使用 app.wxss 中声明的样式规则。 

  /**app.wxss**/  .container {  height: 100%;  display: flex;  flex-direction: column;  align-items: center;  justify-content: space-between;  padding: 200rpx 0;  box-sizing: border-box;  } 

3. 创建页面

在这个教程里,我们有两个页面,index 页面和 logs 页面,即欢迎页和小程序启动日志的展示页,他们都在 pages 目录下。微信小程序中的每一个页面的【路径 + 页面名】都需要写在 app.json 的 pages 中,且 pages 中的第一个页面是小程序的首页。

每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js、index.wxml、index.wxss、index.json。.js 后缀的文件是脚本文件,.json 后缀的文件是配置文件,.wxss 后缀的是样式表文件,.wxml 后缀的文件是页面结构文件。

index.wxml 是页面的结构文件:

  <!--index.wxml-->  <view class="container">  <view bindtap="bindViewTap" class="userinfo">  <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>  <text class="userinfo-nickname">{{userInfo.nickName}}</text>  </view>  <view class="usermotto">  <text class="user-motto">{{motto}}</text>  </view>  </view> 

本例中使用了 <view/>、<image/>、<text/> 来搭建页面结构,绑定数据和交互处理函数。

index.js 是页面的脚本文件,在这个文件中我们可以监听并处理页面的生命周期函数、获取小程序实例,声明并处理数据,响应页面交互事件等。

  //index.js  // 获取应用实例  var app = getApp()  Page({  data: {  motto: 'Hello World',  userInfo: {}  },  // 事件处理函数  bindViewTap: function() {  wx.navigateTo({  url: '../logs/logs'  })  },  onLoad: function () {  console.log('onLoad')  var that = this  // 调用应用实例的方法获取全局数据  app.getUserInfo(function(userInfo){  // 更新数据  that.setData({  userInfo:userInfo  })  })  }  }) 

index.wxss 是页面的样式表:

 /**index.wxss**/ .userinfo {  display: flex;  flex-direction: column;  align-items: center; } .userinfo-avatar {  width: 128rpx;  height: 128rpx;  margin: 20rpx;  border-radius: 50%; } .userinfo-nickname {  color: #aaa; } .usermotto {  margin-top: 200px; }

页面的样式表是非必要的。当有页面样式表时,页面的样式表中的样式规则会层叠覆盖 app.wxss 中的样式规则。如果不指定页面的样式表,也可以在页面的结构文件中直接使用 app.wxss 中指定的样式规则。

index.json 是页面的配置文件:

页面的配置文件是非必要的。当有页面的配置文件时,配置项在该页面会覆盖 app.json 的 window 中相同的配置项。如果没有指定的页面配置文件,则在该页面直接使用 app.json 中的默认配置。

logs 的页面结构 

  <!--logs.wxml-->  <view class="container log-list">  <block wx:for-items="{{logs}}" wx:for-item="log">  <text class="log-item">{{index + 1}}. {{log}}</text>  </block>  </view> 

logs 页面使用 <block/> 控制标签来组织代码,在 <block/> 上使用 wx:for-items 绑定 logs 数据,并将 logs 数据循环展开节点

  //logs.js  var util = require('../../utils/util.js')  Page({  data: {  logs: []  },  onLoad: function () {  this.setData({  logs: (wx.getStorageSync('logs') || []).map(function (log) {  return util.formatTime(new Date(log))  })  })  }  }) 

运行结果如下:

4. 手机预览

开发者工具左侧菜单栏选择「项目」,点击「预览」,扫码后即可在微信客户端中体验。

目前,预览和上传功能尚无法实现,需要等待微信官方的下一步更新。

如你所见,微信官方给出的开发指南还非常简单,很多细节、代码和功能都没有明确的展示,所以接下来就到博卡君展示实力的时候啦!开发教程正式开始!

第一章:准备工作

做好准备工作很重要。开发一个微信应用号,你需要提前到微信的官方网站(weixin.qq.com)下载开发者工具。

1. 下载最新微信开发者工具,打开后你会看到该界面:

2. 点击「新建 web+」项目,随后出现如下画面:

3. 该页面内的各项内容需要注意——

  1. AppID:依照官方解释来填。
  2. Appname: 项目最外层文件夹名称,如你将其命名为「ABC」,则之后的全部项目内容均将保存在「/ABC/…」目录下。
  3. 本地开发目录:项目存放在本地的目录。

注:再次强调,如果你和团队成员共同开发该项目,则建议你们使用同样的目录名称及本地目录,以确保协同开发的统一性。如果你之前已有项目,则导入过程与以上内容近似,不再赘述。

4. 准备工作全部完成后,点击「新建项目」按钮,弹出框点「确定」。

5. 如上图所示,此刻,微信开发者工具已经为你自动构建了一个初始的 demo 项目,该项目内包含了一个微信应用项目所需具备的基本内容和框架结构。点击项目名称(图中即「cards」)进入该项目,就能看到整个项目的基本架构了:

 

第二章:项目构架

微信目前用户群体非常庞大,微信推出公众号以后,火爆程度大家都看得到,也同样推动着 h5 的高速发展,随着公众号业务的需求越来越复杂,应用号现在的到来也是恰到好处。我们团队具体看了一两次文档后发现,它提供给开发者的方式也在发生全面的改 变,从操作 DOM 转为操作数据,基于微信提供的一个过桥工具实现很多 h5 在公众号很难实现的功能,有点类似于 hybrid 开发,不同于 hybrid 开发的方式是:微信开放的接口更为严谨,结构必须采用他提供给我们的组件,外部的框架和插件都不能在这里使用上,让开发者完全脱离操作 DOM,开发思想转变很大。

工欲善其事,必先利其器。理解它的核心功能非常重要,先了解它的整个运作流程。

生命周期:

在index.js里面:

开发者工具上 Console 可以看到:

在首页 console 可以看出顺序是 App Launch-->App Show-->onload-->onShow-->onReady。

首先是整个 app 的启动与显示,app 的启动在 app.js 里面可以配置,其次再进入到各个页面的加载显示等等。

可以想象到这里可以处理很多东西了,如加载框之类的都可以实现等等。

路由:

路由在项目开发中一直是个核心点,在这里其实微信对路由的介绍很少,可见微信在路由方面经过很好的封装,也提供三个跳转方法。

wx.navigateTo(OBJECT):保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。

wx.redirectTo(OBJECT):关闭当前页面,跳转到应用内的某个页面。

wx.navigateBack():关闭当前页面,回退前一页面。

这三个基本上使用足够,在路由方面微信封装的很好,开发者根本不用去配置路由,往往很多框架在路由方面配置很繁琐。

组件:

此次微信在组件提供方面也是非常全面,基本上满足项目需求,故而开发速度非常快,开发前可以认真浏览几次,开发效率会很好。

其它:

任何外部框架以及插件基本上无法使用,就算原生的 js 插件也很难使用,因为以前我们的 js 插件也基本上全部是一操作 dom 的形式存在,而微信应用号此次的架构是不允许操作任何 dom,就连以前我们习惯使用的动态设置的rem.js也是不支持的。

此次微信还提供了 WebSocket,就可以直接利用它做聊天,可以开发的空间非常大。

跟公众号对比我们发现,开发应用号组件化,结构化,多样化。新大陆总是充满着惊喜,更多的彩蛋等着大家来发现。

接下来开始搞一些简单的代码了!

1. 找到项目文件夹,导入你的编辑器里面。在这里,我使用了 Sublime Text 编辑器。你可以根据自己的开发习惯选择自己喜欢的编辑器。

2. 接下来,你需要根据自己的项目内容调整项目结构。在范例项目中,「card_course」目录下面主要包含了「tabBar」页面以及该应用的一些配置文件。

3. 示例项目的「tabBar」是五个菜单按钮:

4. 找到「app.json」文件,用来配置这个五个菜单。在代码行中找到「”tabBar”」:

你可以根据实际项目需求更改,其中:

  1.     「Color」是底部字体颜色,「selectedColor」是切换到该页面高亮颜色,「borderStyle」是切换菜单上面的一条线的颜色,「backgroundColor」是底部菜单栏背景颜色。文字描述较为抽象,建议你一一调试并查看其效果,加深印象。
  2.     「“list”」下的代码顺序必须依次放置,不能随便更改。
  3.     「”pagePath”」之后的文件名内,「.wxml」后缀被隐藏起来了,这是微信开发代码中人性化的一点——帮你节约写代码的时间,无须频繁声明文件后缀。
  4.     「”iconPath”」为未获得显示页面的图标路径,这两个路径可以直接是网络图标。
  5.     「”selectedIconPath”」为当前显示页面高亮图标路径,可以去掉,去掉之后会默认显示为「”iconPath”」的图标。
  6.     「”Text”」为页面标题,也可以去掉,去掉之后纯显示图标,如只去掉其中一个,该位置会被占用。

注意:微信的底部菜单最多支持五栏(五个 icons),所以在你设计微信应用的 UI 和基本架构时就要预先考虑好菜单栏的排布。

5. 根据以上代码规则,我做好了示例项目的基本架构,供你参考:

6. 「Json」文件配置好后,「card_course」的基本结构入上图所示,不需要的子集都可以暂时删除,缺少的子集则需要你主动新建。删除子集时记得顺带检查一下「app.json」里的相关内容是否已经一并删除。

注意:我个人建议你新建一个「wxml」文件的同时,把对应的「js」和「wxss」文件一起新建好,因为微信应用号的配置特点就是解析到一个「wxml」文件时,会同时在同级目录下找到同文件名的「js」和「wxss」文件,所以「js」文件需及时在「app.json」里预先配置好。

编写「wxml」时,根据微信应用号提供的接口编码即可,大部分就是以前的「div」,而我们现在就用「view」即可。需要用其它子集时,可以根据微信提供的接口酌情选择。

使用「class」名来设置样式,「id」名在这里基本没有什么用处。主要操作数据,不操作「dom」。

7. 以上是示例项目首页的「wxml」编码。从图中就可以看出,实现一个页面代码量非常少。

8. 「Wxss」文件是引入的样式文件,你也可以直接在里面写样式,示例中采用的是引入方式:

9. 修改代码后刷新一次,可以看到未设背景的「view」标签直接变成了粉色。

注意:修改「wxml」和「wxss」下的内容后,直接 F5 刷新就能直接看到效果,修改「js」则需点击重启按钮才能看到效果。

10. 另外,公共样式可以在「app.wxss」里直接引用。

11. 「Js」文件需要在「app.json」文件的「”page”」里预先配置好。为了项目结构清晰化,我在示例项目中的「index」首页同级目录新建其它四个页面文件,具体如下:

经过以上步骤,案例中的五个底部菜单就全部配置完毕了。

以上就是对微信小程序的教程资料,希望能帮助到大家,谢谢大家对本站的支持!

五 : 微信小程序应用号开发体验

昨天微信小程序(应用号)内测的消息把整个技术社区炸开了锅,我也忍不住跟了几波,可惜没有内测资格,听闻破解版出来了,今天早上就着原来的项目资源试开发了一下,总结一下体验.

总体体验

  1. 开发效率高,6:40左右破解完IDE,7:20左右点做完了首页和导航栏的布局,微信把觉见的布局都做了封装,比传统的前端开发效率高。
  2. 前端可以快速上手:熟练的前端可以很快上手,可能只要一小时读文档的时间加一个官方的例子。
  3. 开发工具难用,很多目录的操作和IDE常见的格式化代码,html配对等功能暂不支持。
  4. 开发限制了很多前端常见的Dom,window操作,开发的灵活度和难度降低。
  5. 我没有内测资格,小程序还不能上传体验,只能下载代码本地体验。

本文代码放在github

上截图

相关资源

破解的IDE

开发资源集合

IDE技术栈:NodeWebkit + React

进入的安装目录:微信web开发者工具package.nwapp
这个*.nw就能十有八九猜出是NodeWebkit封装的Web应用,
详看依赖node_modules证实了猜想。
在package.json "main": "app/html/index.html"定义了入口。

所有的组件本质是React组件

在入口中可以看到直接引用了React 和React DOM

 "use strict"; function init() {  tools.Chrome = chrome;  var n = require("../dist/lib/react.js"),  e = require("../dist/lib/react-dom.js"),  i = require("../dist/common/loadInit/init.js"),  o = require("../dist/components/ContainController.js"),  t = require("../dist/common/proxy/startProxy.js"),  r = require("../dist/actions/windowActions.js"),  s = require("../dist/actions/webviewActions.js"),  d = require("../dist/stroes/webviewStores.js"),  u = require("../dist/common/log/log.js"), c = require("../dist/common/shortCut/shortCut.js"), l = global.appConfig.isDev;  //... } 

看一下组件Dropdown的定义,这不就是我们熟悉的React在ES5中创建组件的方法吗?

 "use strict"; var React = require("../../lib/react.js"), Dropdown = React.createClass({  displayName: "Dropdown", render: function () {  return React.createElement("div", {className: "dropdown"}, React.createElement("div", {className: "dropdown-item"}, React.createElement("img", {  src: "https://mmrb.github.io/avatar/jf.jpg",  alt: "",  className: "dropdown-item-icon"  }), React.createElement("div", {className: "dropdown-item-info"}, React.createElement("p", null, "公众号名称啦")), React.createElement("div", {className: "dropdown-item-extra"}, React.createElement("img", {  src: "https://mmrb.github.io/avatar/jf.jpg",  alt: "",  className: "dropdown-item-extra-icon"  }))), React.createElement("div", {className: "dropdown-item dropdown-item-active"}, React.createElement("img", {  src: "https://mmrb.github.io/avatar/jf.jpg",  alt: "",  className: "dropdown-item-icon"  }), React.createElement("div", {className: "dropdown-item-info"}, React.createElement("p", null, "公众号名称啦公众号名称啦公众号名称啦"))), React.createElement("div", {className: "dropdown-item"}, React.createElement("img", {  src: "https://mmrb.github.io/avatar/jf.jpg",  alt: "",  className: "dropdown-item-icon"  }), React.createElement("div", {className: "dropdown-item-info"}, React.createElement("p", null, "公众号名称啦"))), React.createElement("div", {className: "dropdown-item"}, React.createElement("img", {  src: "https://mmrb.github.io/avatar/jf.jpg",  alt: "",  className: "dropdown-item-icon"  }), React.createElement("div", {className: "dropdown-item-info"}, React.createElement("p", null, "公众号名称啦"))))  } }); module.exports = Dropdown; 

微信限制了小程序的包大小

同时微信限制了小程序包的大小,为755kb,对缓存和本地文件应该也有控制,这相对原生应用动不动几十兆上百兆的大小来说,绝对是一个亮点,给网上很多人说装微信小程序同样会占用手机存储的人一个响亮的耳光。

 

总结

总的来说,对前端来说绝对是一个好消息,短期内前端待遇可能上涨,但小程序开发门槛较低(比前端的低),有一部开发人员是面向工资编程,随着开发人员的流动,长期还是会和其它相关的的技术岗持平。所以,少年,不要激动,还要是把基础知识打扎实。

 以上就是对微信小程序的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

本文标题:微信小程序开发工具-苹果IOS开发工具“中毒” 微信也中招了
本文地址: http://www.61k.com/1071048.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1