uniapp使用的注意事项

uniapp的特点

  • 一次开发,多端应用
  • 使用微信小程序的组件标签和API,使用vue的模板语法和js语法

创建新页面

  • 小程序: 在app.json中配置pages,即会在pages文件夹中创建相应的文件
  • uniapp: 在pages.json中配置页面,但不会同步的生成文件
  • uniapp: 在pages文件夹上右键,新建页面,会同步的在pages.json中自动生成对应的配置

pages.json中pages的配置相当于路由,所有页面都需要在此注册

tabBar的配置

在pages.json中配置

本地静态资源,比如图片,图标文件一定要放在static文件夹中,引用地址的方式参考下方代码

"tabBar": {
        "color": "#567788",
        "selectedColor": "#f96677",
        "list": [
          {
            "pagePath": "pages/index/index",
            "text": "首页",
            "iconPath": "/static/images/icon0.png",
            "selectedIconPath": "/static/images/icon1.png"
          },
          {
            "pagePath": "pages/category/category",
            "text": "分类",
            "iconPath": "/static/images/icon2.png",
            "selectedIconPath": "/static/images/icon3.png"
          }
        ]
}

页面导航栏标题文本,背景颜色,下拉刷新等相关配置

小程序: 在app.json中全局配置,在每个页面的json文件中给当前页面配置
uniapp: 全局和每个页面的配置都在pages.json中实现

如何运行在微信开发者工具

  • 运行-> 运行到小程序模拟器 -> 微信开发者工具

  • 在弹窗中要定位开发者工具的安装路径:常规安装位置 c:/Program Files/Tencent/微信web开发者工具

  • 在微信开发者工具管理项目的界面 -> 设置 -> 安全 -> 开启服务端口
    如果没有开启服务端口,在Hbuiler编译界面会报错:Error: read EBADF

  • 在manifest.json中填写微信小程序的appid

    如果没有填写,在微信开发者工具中会报错:TypeError: Cannot read property 'forceUpdate' of undefined

使用vuex状态管理工具

和vue唯一的不同是不需要安装vuex包

  • 创建store文件夹,和index.js,及相关的state,actions,mutations...
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        city: '郑州'
    },
    actions: {
        getData(ctx,city){
            setTimeout(()=>{
                let newCity = city
                ctx.commit("changeData",newCity)
            },5000)
        }
    },
    mutations: {
        changeData(state,data){
            state.city = data;
        }
    }
})
  • 在main.js中引入store并注册
  • 在页面中使用时和vue相同

在项目中使用sass

  • 在*.vue文件中添加lang="scss"

  • 如果没有安装sass,在编译时会报错
  • 可在“工具”菜单,选插件安装,会打开插件市场的链接,选择sass,按照引导安装插件即可
  • 项目初始化时创建的uni.scss文件不用导入,定义的变量可直接在任一页面中使用
  • 引入scss和css文件的语法

条件编译

条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同平台。

// #ifdef H5
    alert("只有h5平台才有alert方法")
// #endif

判断平台

  1. 编译期判断 编译期判断,即条件编译,不同平台在编译出包后已经是不同的代码。
  • 在*.vue文件中,template,script,style中都可以添加条件编译,注意在不同区块中注释的写法是不同的

    当前城市: {{$store.state.city}}



    当前温度: 18度



    当前温度: 18度


  1. 运行期判断 运行期判断是指代码已经打入包中,仍然需要在运行期判断平台

只能区别机型(ios,Android)

switch(uni.getSystemInfoSync().platform){
    case 'android':
       console.log('运行Android上')
       break;
    case 'ios':
       console.log('运行iOS上')
       break;
    default:
       console.log('运行在开发者工具上')
       break;
}

CSS变量

  • --status-bar-height 系统状态栏高度
  • --window-top 内容区域距离顶部的距离
  • --window-bottom 内容区域距离底部的距离

比如:自定义导航栏时,要空出状态栏的位置,可添加一个空的view进行占位


    
    list文本内容



css单位

rpx

页面中引入组件时的easycom规范

  • 传统vue组件,需要安装、引用、注册,三个步骤后才能使用组件。easycom将其精简为一步。

  • 只要组件安装在项目的components目录下或uni_modules目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用。

在模板中vue和小程序的区别

动态属性

//数据 url="/images/1.jpg"

//vue



//小程序: 动态属性绝对不加: ,""内部为字符串,需要绑定数据时加{{}}


标签内容显示相同

//数据:  msg="hello"
{{msg}}

循环遍历

// vue


//小程序

条件渲染

// vue


//小程序

用navigator组件进行跳转


    
        id: {{item.id}}
        goodsName: {{item.goods_name}}
    

也可以用uni.navigateTo跳转传参, 在下一个页面中,通过onLoad(options)接收参数

模板向js逻辑传参

uniapp传参

  
  ...
  
  getData(params){
    console.log(params)  //3
  }

小程序传参

  
  ...
  
  getData(e){
    console.log(e.currentTarget.dataset.index)  //3
  }

发行

  • 发行h5页面
    发行 -> 网站 H5手机版 ------>把项目编译打包在unpackage/dist/build/h5
    把该文件夹传给后端即可 (注意: h5页面必须在服务器下才能正常运行)

  • 发行微信小程序
    发行--->小程序 微信 -----把项目编译打包在/unpackage/dist/build/mp-weixin
    可以在微信开发者工具中直接上传该版本

  • 发行为原生APP
    发行--->原生App 本地打包

你可能感兴趣的:(uniapp使用的注意事项)