uniapp小程序

作者: LH8966 | 来源:发表于2019-04-28 14:06 被阅读302次

    uniapp小程序

    • div 改成 view
    • span、font 改成 text
    • a 改成 navigator
    • img 改成 image
    • input 还在,但type属性改成了confirmtype
    • form、button、checkbox、radio、label、textarea、canvas、video 这些还在。
    • select 改成 picker
    • iframe 改成 web-view
    • ul、li没有了,都用view替代
    • audio 不再推荐使用,改成api方式,背景音频api文档
      其实老的HTML标签也可以在uni-app里使用,uni-app编译器会在编译时把老标签转为新标签。但不推荐这种用法,调试H5端时容易混乱,基于元素的选择器也会出问题。
    除了改动外,新增了一批手机端常用的新组件
    • scroll-view 可区域滚动视图容器
    • swiper 可滑动区域视图容器
    • icon 图标
    • rich-text 富文本(不可执行js,但可渲染各种文字格式和图片)
    • progress 进度条
    • slider 滑块指示器
    • switch 开关选择器
    • camera 相机
    • live-player 直播
    • map 地图
    • cover-view 可覆盖原生组件的视图容器
    • cover-view需要多强调几句,uni-app的非h5端的video、map、canvas、textarea是原生组件,层级高于其他组件。如需覆盖原生组件,比如在map上加个遮罩,则需要使用cover-view组件
    js的变化
    • 运行环境从浏览器变成v8引擎

    • 标准js语法和api都支持,比如if、for、settimeout、indexOf等。

    • 但浏览器专用的window、document、navigator、location对象,只有在浏览器中才有,app和小程序都不支持。

    • 可能有些人以为js等于浏览器里的js。其实js是ECMAScript组织管理的,浏览器中的js是w3c组织基于js规范补充了window、document、navigator、location等专用对象。

    • 在uni-app的各个端中,除了h5端,其他端的js都运行在一个独立的v8引擎下,不是在浏览器中,所以浏览器的对象无法使用。如果你做过小程序开发,对此应当很了解。

    • 这意味着依赖document的很多HTML的库,比如jqurey无法使用。

    • 当然app和小程序支持web-view组件,里面可以加载标准HTML,这种页面仍然支持浏览器专用对象window、document、navigator、location。

    css的变化
    • 标准的css基本都是支持的。

    • 选择器有2个变化:*选择器不支持;元素选择器里没有body,改为了page。微信小程序即是如此。

    • 单位方面,px无法动态适应不同宽度的屏幕,rem只能用于h5、rpx只能用于微信小程序。为此uni-app新增了 upx ,通吃所有端、所有屏幕宽度的动态单位 upx文档

    • uni-app推荐使用flex布局,并默认就是flex布局。这是通吃所有端的新一代布局方案,相关教程可自行百度。

    • 注意背景图和字体文件尽量不要大于40k。会影响性能。如果非要大于40k,需放到服务器侧远程引用或base64后引入,不能放到本地作为独立文件引用。在小程序里,其实小于40k的文件在css里也无法引用,uni-app编译器在编译时自动做了处理,把小于40k的文件编译为base64方式。

    工程结构和页面管理
    • 每个可显示的页面,都必须在 pages.json 中注册。如果你开发过小程序,那么pages.json类似app.json。如果你熟悉vue,这里没有vue的路由,都是在pages.json里管理。

    • 原来工程的首页一般是index.html或default.html,是在web server里配的。而uni-app的首页,是在pages.json里配的,page节点下第一个页面就是首页。往往在/pages/xx的目录下。

    • app和小程序中,为了提升体验,页面提供了原生的导航栏和底部tabbar,注意这些配置是在pages.json中做,而不是在vue页面里创建,但点击事件的监听在显示的vue页面中做。

    • 在vue中,以前的事件监听概念改为了生命周期概念。详见uni-app生命周期

    • 如果你熟悉小程序开发的话,对比变化如下:

    • 原来app.json被一拆为二。页面管理,被挪入了uni-app的pages.json;非页面管理,挪入了manifest.json
      原来的app.js和app.wxss被合并到了app.vue中

    一些开发思路,以及标签的替换,方法的转换:

    Storage

    uni.setStorageSync("token", this.loginObject.token); // 设置Storage数据
    uni.getStorageSync("token") // 获取Storage数据
    uni.removeStorageSync('storage_key'); // 移除Storage数据
    uni.clearStorage(); // 清理本地数据缓存
    

    toast

    // 可以封装为公共的组件。使用之前的方法调用
    uni.showToast({
      title: "网络错误", // 提示的内容,长度与 icon 取值有关。
      icon: "none",     // 图标,有效值详见下方说明。
      image:"",         // 自定义图标的本地路径
      mask:false,      // 遮罩层
      duration:"1500", // 延迟时间
    });
    

    标签化路由

    // 放弃使用,路由统一封装了。
    <navigator url="navigate/navigate?title=navigate" hover-class="navigator-hover">
        <button type="default">跳转到新页面</button>
    </navigator>
    <navigator url="redirect/redirect?title=redirect" redirect hover-class="other-navigator-hover">
        <button type="default">在当前页打开</button>
    </navigator>
    

    路由

    uni.navigateTo({ url: "login" }); //url:里的路径如果是在一个文件夹里则可以直接这样写:
    
    uni.navigateTo({ url: "/pages/my/login" }); //如果不是在同一个文件夹则必须从跟目录书写,如下
    
    uni.switchTab();       //是跳转到tabBar配置的路径的,uni.navigateTo()则不可以;
    
    uni.navigateBack();    //返回上一级
    
    为了书写的规范,统一用uni.navigateTo({ url: "/pages/my/login" });这种方式。
    

    路由数据接收

    // 在这个周期函数里接受
    onLoad: function(option) {
     
     }
    

    下拉刷新

    {
      "path": "pages/home/home",
      "style": {
        "navigationBarTitleText": "首页",
        "enablePullDownRefresh": true
      }
    },
    
    注意onPullDownRefresh下拉刷新需要的page.json里配置。
    "enablePullDownRefresh": true,
    
    onReachBottom上拉加载。距离底部的50px才会触发。
    和scroll-view没有关系。
    scroll-view是单独的再页面里一个盒子里内容的滚动标签。
    
    
    

    input placeholder样式

    // input 统一封装为组件,这样placeholder-style的样式就不需要在每个页面的计算属性里处理upx;
    placeholder-style="color: #ccc;font-size: 14px;"
    

    相关文章

      网友评论

        本文标题:uniapp小程序

        本文链接:https://www.haomeiwen.com/subject/clmdnqtx.html