微信小程序开发技巧(持续更新)
iu6657
8年前
<h2>框架部分</h2> <ol> <li> <p>所有页面都需要在 app.json 文件中注册在 pages 数组中,注册格式为: "路径/文件名"</p> <p>注:文件名无需添加扩展名</p> </li> <li> <p>app.josn 中的 pages 数组中的第一个页面为小程序的启动页</p> </li> <li> <p>每个页面的 js 、 json 、 wxml 、 wxss 可与所在目录名不同,但必须具有相同的路径和文件名</p> </li> <li> <p>页面目录可以嵌套,按照页面目录在 app.json 中注册即可</p> </li> <li> <p>可通过直接赋值的方法修改 app.js 中的全局变量,但修改页面变量需要使用 Page.prototype.setData() 方法,且赋值数据不能超过 1024 kB</p> </li> <li> <p>在文件中引入模块时, require 使用相对路径引入(绝对路径会报错)</p> </li> <li> <p>如需引入多级文件,则使用如下方式:</p> </li> </ol> <pre> <code class="language-javascript">// func.js 文件中定义了两个函数 fun1 和 fun2 fun1 = function(){ // code } fun2 = function(){ // code } module.export = { fun1: fun1, fun2: fun2 } // util.js 中定义了函数 util 并需要导入 func.js 文件 var funcs = require('func.js文件的相对路径') util = function(){ // code } module.export = { fun1: funcs.fun1, fun2: funcs.fun2, util: util }</code></pre> <ol> <li> <p>小程序的 wxss 中使用 @import 导入文件时应使用相对路径</p> </li> <li> <p>小程序中 wxss 样式的优先级为 内联样式 > 外链样式 > 全局样式</p> </li> <li> <p>小程序的 wxss 样式文件中支持 CSS3 的大部分属性,但选择器支持有限,请戳 <a href="/misc/goto?guid=4959732771945731406" rel="nofollow,noindex">官方文档</a></p> </li> </ol> <h3>组件部分</h3> <ol> <li> <p><block> 仅为包装元素,接受属性控制且 <strong>不能嵌套</strong> 不会被渲染</p> </li> <li> <p><text> 组件内只能嵌套使用 <text> 组件,其他不可用</p> </li> <li> <p>仅 <text> 组件中的内容支持长按选中</p> </li> <li> <p><picker> 组件中的 range 数组下标必须连续且从 0 开始,否则会出现选项为 null 的情况</p> </li> <li> <p>组件名称均为小写,所有大写的组件名称都会在渲染时转换为小写</p> </li> <li> <p>任何自定义的组件 <自定义名称> 均会被当作 <view> 组件来渲染,但需要注意 <strong>组件名称中不能出现数字</strong> 。(虽然可以自定义语义化组件,但是由于微信官方并未加以说明,所以不推荐使用)</p> </li> <li> <p>使用 page 标签选择器可以修改顶层节点的样式,相当于 HTML 中的 <body> 元素</p> </li> </ol> <h3>API 部分</h3> <ol> <li> <p>程序中请求、上传、下载及 websocket 的请求地址必须为 https 地址,且在当前 APPID 的微信公众平台上注册合法域名</p> </li> <li> <p>wx.request() 中发送 POST 请求时,需设置 header 如下: {'content-type': 'application/x-www-form-urlencoded'}</p> </li> <li> <p>某些情况下需要使用全局数据通常有两种方法:设置全局变量和写入缓存,区别在于全局变量的生存周期和小程序相同,而缓存则是永久储存的</p> </li> <li> <p>wx.login() 只返回登陆 code ,可向微信服务器发送此 code 获取用户的 session_key 和 openid ,微信官方提供了登陆状态检验的接口和一套验证机制,请戳 <a href="/misc/goto?guid=4959732772043107188" rel="nofollow,noindex">官方文档</a></p> </li> <li> <p>小程序的本地缓存不能超过 10M</p> </li> <li> <p>小程序的上传和下载中只能获取文件的 key ,开发者在服务器端通过 key 获取文件二进制内容。</p> </li> </ol> <h3>工具部分</h3> <ol> <li> <p>修改 wxml 和 wxss 文件将会刷新页面</p> </li> <li> <p>修改 js 和 json 文件将会重新编译小程序</p> </li> <li> <p>在 app.json 文件 pages 数组中添加目标页面,将会自动生成该页面目录和所需文件</p> </li> <li> <p>项目- 基础信息中设置勾选开发环境不校验请求安全域名以及 TLS 版本时,将可以使用 http 协议的请求地址,有助于本地调试</p> </li> <li> <p>可以在项目 - 配置信息中快捷查看当前 appid 配置的安全域名</p> </li> <li> <p>手机调试过程中可以点按右上角,选择 enable debug 打开手机调试模式</p> </li> <li> <p>项目 - 预览中可添加预览页面及参数信息,跳过繁琐的前戏直达你想要操作的位置</p> </li> <li> <p>快捷键</p> <p>格式调整</p> <pre> <code class="language-javascript">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+Shift+F:全局搜索</code></pre> <p>光标相关</p> <pre> <code class="language-javascript">Ctrl+End:移动到文件结尾 Ctrl+Home:移动到文件开头 Ctrl+i:选中当前行 Shift+End:选择从光标到行尾 Shift+Home:选择从行首到光标处 Ctrl+Shift+L:选中所有匹配 Ctrl+D:选中匹配 Ctrl+U:光标回退</code></pre> <p>界面相关</p> <pre> <code class="language-javascript">Ctrl + \:隐藏侧边栏 Ctrl + m: 打开或者隐藏模拟器</code></pre> </li> </ol> <h3>概念部分</h3> <ol> <li> <p>小程序基于包开发,开发和发布流程与 H5 应用是截然不同的</p> </li> <li> <p>小程序中 Web 开发的 session 管理部分由微信服务器实现</p> </li> <li> <p>小程序的域名仅用于通讯和验证,没有 Cookie 机制</p> </li> </ol> <p> </p> <p> </p>